diff options
| author | Tim Redfern <tim@eclectronics.org> | 2011-12-19 18:20:33 +0000 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2011-12-19 18:20:33 +0000 |
| commit | e9a73bbb3c14af340999f70146747787785f4fee (patch) | |
| tree | a125452f7d641673286542497da051b810427880 | |
initial commit
208 files changed, 48293 insertions, 0 deletions
diff --git a/ESS1995test_328p/ESS1995test_328p.cbp b/ESS1995test_328p/ESS1995test_328p.cbp new file mode 100644 index 0000000..e559c31 --- /dev/null +++ b/ESS1995test_328p/ESS1995test_328p.cbp @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="ESS1995test_328p" /> + <Option pch_mode="2" /> + <Option compiler="avrgcc" /> + <Option virtualFolders="src/;" /> + <Build> + <Target title="Debug"> + <Option output="bin/Debug/ESS1995test_328p.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Debug/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-g" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin/Release/ESS1995test_328p.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Release/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-Os" /> + </Compiler> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-mmcu=atmega328p" /> + <Add option="-DF_CPU=8000000UL" /> + <Add directory="../arduinoSrc0022" /> + <Add directory="../arduino libs/NewSoftSerial" /> + </Compiler> + <Linker> + <Add option="-mmcu=atmega328p" /> + <Add option="-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref" /> + </Linker> + <ExtraCommands> + <Add after="avr-size $(TARGET_OUTPUT_FILE)" /> + <Add after="avr-objcopy -O ihex -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).hex" /> + <Add after="avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.hex" /> + <Add after="avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_FILE).lss" /> + <Add after="./burn" /> + <Mode after="always" /> + </ExtraCommands> + <Unit filename="adapticsBT.cpp"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="adapticsBT.h"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="burn"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="electic.h"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="main.cpp"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="../arduinoSrc0022/HardwareSerial.cpp" /> + <Unit filename="../arduinoSrc0022/HardwareSerial.h" /> + <Unit filename="../arduinoSrc0022/Print.cpp" /> + <Unit filename="../arduinoSrc0022/Print.h" /> + <Unit filename="../arduinoSrc0022/Stream.h" /> + <Unit filename="../arduinoSrc0022/Tone.cpp" /> + <Unit filename="../arduinoSrc0022/WCharacter.h" /> + <Unit filename="../arduinoSrc0022/WConstants.h" /> + <Unit filename="../arduinoSrc0022/WInterrupts.c"> + <Option compilerVar="CC" /> + </Unit> + <Unit filename="../arduinoSrc0022/WMath.cpp" /> + <Unit filename="../arduinoSrc0022/WProgram.h" /> + <Unit filename="../arduinoSrc0022/WString.cpp" /> + <Unit filename="../arduinoSrc0022/WString.h" /> + <Unit filename="../arduinoSrc0022/binary.h" /> + <Unit filename="../arduinoSrc0022/pins_arduino.c"> + <Option compilerVar="CC" /> + </Unit> + <Unit filename="../arduinoSrc0022/pins_arduino.h" /> + <Unit filename="../arduinoSrc0022/wiring.c"> + <Option compilerVar="CC" /> + </Unit> + <Unit filename="../arduinoSrc0022/wiring.h" /> + <Unit filename="../arduinoSrc0022/wiring_analog.c"> + <Option compilerVar="CC" /> + </Unit> + <Unit filename="../arduinoSrc0022/wiring_digital.c"> + <Option compilerVar="CC" /> + </Unit> + <Unit filename="../arduinoSrc0022/wiring_private.h" /> + <Unit filename="../arduinoSrc0022/wiring_pulse.c"> + <Option compilerVar="CC" /> + </Unit> + <Unit filename="../arduinoSrc0022/wiring_shift.c"> + <Option compilerVar="CC" /> + </Unit> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + <lib_finder disable_auto="1" /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/ESS1995test_328p/ESS1995test_328p.depend b/ESS1995test_328p/ESS1995test_328p.depend new file mode 100644 index 0000000..52f4c69 --- /dev/null +++ b/ESS1995test_328p/ESS1995test_328p.depend @@ -0,0 +1,130 @@ +# depslib dependency file v1.0 +1322661310 source:/home/tim/workspace/electic_AVR/ESS1995test_328p/main.cpp + "electic.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WProgram.h + <stdlib.h> + <string.h> + <math.h> + <avr/interrupt.h> + "wiring.h" + "WCharacter.h" + "WString.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.h + <avr/io.h> + <stdlib.h> + "binary.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/binary.h + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WCharacter.h + <ctype.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WString.h + <stdlib.h> + <string.h> + <ctype.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.h + <inttypes.h> + "Stream.h" + "usb_api.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Stream.h + <inttypes.h> + "Print.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Print.h + <inttypes.h> + <stdio.h> + "WString.h" + +1322661364 /home/tim/workspace/electic_AVR/ESS1995test_328p/electic.h + <WProgram.h> + "adapticsBT.h" + +1322574717 /home/tim/workspace/electic_AVR/ESS1995test_328p/adapticsBT.h + <WProgram.h> + +1322574642 source:/home/tim/workspace/electic_AVR/ESS1995test_328p/adapticsBT.cpp + "adapticsBT.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.cpp + <stdlib.h> + <stdio.h> + <string.h> + <inttypes.h> + "wiring.h" + "wiring_private.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_private.h + <avr/io.h> + <avr/interrupt.h> + <avr/delay.h> + <stdio.h> + <stdarg.h> + "wiring.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/Print.cpp + <stdlib.h> + <stdio.h> + <string.h> + <math.h> + "wiring.h" + "Print.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/Tone.cpp + <avr/interrupt.h> + <avr/pgmspace.h> + "wiring.h" + "pins_arduino.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/pins_arduino.h + <avr/pgmspace.h> + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WInterrupts.c + <inttypes.h> + <avr/io.h> + <avr/interrupt.h> + <avr/pgmspace.h> + <stdio.h> + "WConstants.h" + "wiring_private.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WConstants.h + "wiring.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WMath.cpp + "stdlib.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WString.cpp + <stdlib.h> + "WProgram.h" + "WString.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/pins_arduino.c + <avr/io.h> + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.c + "wiring_private.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_analog.c + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_digital.c + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_pulse.c + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_shift.c + "wiring_private.h" + diff --git a/ESS1995test_328p/ESS1995test_328p.layout b/ESS1995test_328p/ESS1995test_328p.layout new file mode 100644 index 0000000..389db27 --- /dev/null +++ b/ESS1995test_328p/ESS1995test_328p.layout @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <ActiveTarget name="Release" /> + <File name="adapticsBT.cpp" open="1" top="0" tabpos="3"> + <Cursor position="1609" topLine="11" /> + </File> + <File name="electic.h" open="1" top="1" tabpos="2"> + <Cursor position="864" topLine="36" /> + </File> + <File name="main.cpp" open="1" top="0" tabpos="1"> + <Cursor position="1415" topLine="75" /> + </File> + <File name="../arduinoSrc0022/HardwareSerial.h" open="0" top="0" tabpos="0"> + <Cursor position="0" topLine="40" /> + </File> + <File name="../arduinoSrc0022/Print.h" open="0" top="0" tabpos="0"> + <Cursor position="1919" topLine="0" /> + </File> + <File name="../arduinoSrc0022/Tone.cpp" open="0" top="0" tabpos="0"> + <Cursor position="7050" topLine="229" /> + </File> +</CodeBlocks_layout_file> diff --git a/ESS1995test_328p/adapticsBT.cpp b/ESS1995test_328p/adapticsBT.cpp new file mode 100644 index 0000000..c5113f9 --- /dev/null +++ b/ESS1995test_328p/adapticsBT.cpp @@ -0,0 +1,50 @@ +/* + Adaptics BT platform + +11/11/11 + persistent connection with a BT serial module + this WAS working well with precompiled library and setting the baudrate artificially to 76800 (because F_CPU not working) + although println(unsigned long) was causing an error. + what's changed :-( + +15/11/11 + using 38400 and non precomiled- sucessfully enters inquiry + can only seem to connect straight after pairing, which is annoying + when connected the BT module sends some fragments of commands ie.e "+STOAU\0xf4" + it only seems to stay connected for 1/2Â second. Voltage issue? + + yep- it works on 0v-3v but ont on -3v-0v + -3v seems to kind of work at 9600bps - received junk + at 19200 it stays on for a few seconds but received junk + +*/ + +#include "adapticsBT.h" + +void setupBlueTooth(){ + + pinMode(BTC,INPUT); //connection indicator + + Serial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400 + + Serial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode + Serial.print("\r\n+STNA=AdapticsElectic\r\n"); //set the bluetooth name + Serial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me + Serial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here + + //necessary? + Serial.print("\r\n +STPIN=0000\r\n"); //"\r\n+DLPIN\r\n"); + Serial.print("\r\n+LOSSRECONN=0\r\n"); //setting this to 1 seems to stop it working + + advertise(); + +} +void advertise(){ + delay(2000); // This delay is required - its really 2 seconds + Serial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable + + delay(2000); // This delay is required. + + Serial.flush(); + +} diff --git a/ESS1995test_328p/adapticsBT.h b/ESS1995test_328p/adapticsBT.h new file mode 100644 index 0000000..8cb87e3 --- /dev/null +++ b/ESS1995test_328p/adapticsBT.h @@ -0,0 +1,14 @@ +#ifndef ADAPTICSBT_H_INCLUDED
+#define ADAPTICSBT_H_INCLUDED + +extern "C" void __cxa_pure_virtual(void); //for C++ defines + +#define BTC 6 + +#include <WProgram.h> //main Arduino header file
+
+void setupBlueTooth(); +void advertise();
+
+#endif // ADAPTICSBT_H_INCLUDED +
diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf Binary files differnew file mode 100755 index 0000000..bdf3e38 --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.eep.hex b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.hex b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.hex new file mode 100644 index 0000000..0d962de --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.hex @@ -0,0 +1,85 @@ +:100000000C945A000C9477000C9477000C947700B1
+:100010000C9477000C9477000C9477000C94770084
+:100020000C9477000C9477000C9477000C94770074
+:100030000C9477000C9477000C9477000C94770064
+:100040000C9406010C9477000C9477000C947700C4
+:100050000C9477000C9477000C9477000C94770044
+:100060000C9477000C947700000024272A000025C8
+:10007000282B000023262904040404040404040299
+:100080000202020202030303030303010204081035
+:100090002040800102040810200102040810200002
+:1000A0000000070002010000030406000000000039
+:1000B0000000000011241FBECFEFD8E0DEBFCDBF8F
+:1000C00011E0A0E0B1E0E4E3F5E002C005900D929C
+:1000D000A030B107D9F711E0A0E0B1E001C01D9256
+:1000E000A830B107E1F70E94A3000C9498020C9489
+:1000F0000000DF93CF9300D0CDB7DEB78A8384E0D2
+:1001000061E00E94E301198216C08A81282F30E045
+:100110008981882F90E0A90102C0559547958A955D
+:10012000E2F7CA01982F917084E0692F0E940102C2
+:1001300089818F5F89838981883038F30F900F9090
+:10014000CF91DF910895DF93CF9300D0CDB7DEB785
+:1001500082E060E00E94E30183E061E00E94E3014D
+:100160008CE061E00E94E3018DE061E00E94E30128
+:100170000E94A90182E00E944C021A8281309105FE
+:1001800011F481E08A838A818823B1F08CE061E0F8
+:100190000E94010288EC0E94790082E00E944C02D9
+:1001A0001982009711F481E089838981882321F0E5
+:1001B0008DE061E00E94010264EF71E080E090E078
+:1001C0000E9471018CE060E00E9401028CE060E01E
+:1001D0000E940102CFCFDF93CF93CDB7DEB783E08C
+:1001E00061E00E9401026AE070E080E090E00E941D
+:1001F000710183E060E00E9401026AE070E080E04B
+:1002000090E00E947101CF91DF9108951F920F92AB
+:100210000FB60F9211242F938F939F93AF93BF9399
+:100220008091000190910101A0910201B091030120
+:100230008050904CAF4FBF4F8093000190930101CD
+:10024000A0930201B093030127C080910001909117
+:100250000101A0910201B091030180589E43A0408A
+:10026000B0408093000190930101A0930201B093EC
+:1002700003018091040190910501A0910601B091C4
+:1002800007010196A11DB11D809304019093050102
+:10029000A0930601B09307018091000190910101A4
+:1002A000A0910201B091030181589E43A040B0404B
+:1002B00060F6BF91AF919F918F912F910F900FBEDC
+:1002C0000F901F9018958FB7F894209104013091EA
+:1002D000050140910601509107018FBFB901CA0184
+:1002E0000895EF92FF920F931F937B018C018FB7BC
+:1002F000F8944091040150910501609106017091BC
+:1003000007018FBF2FB7F8948091040190910501E8
+:10031000A0910601B09107012FBF841B950BA60B7E
+:10032000B70B8E159F05A007B10760F31F910F91C2
+:10033000FF90EF900895019759F0FC01EE0FFF1F19
+:10034000EE0FFF1F32978FB7F8943197F1F78FBFF9
+:100350000895789484B5826084BD84B5816084BD3D
+:1003600085B5826085BD85B5816085BDEEE6F0E02E
+:10037000808181608083E1E8F0E080818260808319
+:10038000808181608083E0E8F0E08081816080830B
+:10039000E1EBF0E0808184608083E0EBF0E080813D
+:1003A00081608083EAE7F0E08081846080838081DF
+:1003B0008260808380818160808380818068808387
+:1003C0001092C1000895282F30E0C90185579F4F32
+:1003D000FC01949129583F4FF9018491882381F0C1
+:1003E000E82FF0E0E859FF4FE491F0E0662329F4AC
+:1003F000808190958923808308958081892B8083D3
+:100400000895482F50E0CA0181569F4FFC01249166
+:10041000CA0185579F4FFC01949149585F4FFA01DB
+:1004200034913323C1F1222331F1233021F480911F
+:1004300080008F7705C0243031F4809180008F7D5B
+:100440008093800018C0213019F484B58F7704C0E0
+:10045000223021F484B58F7D84BD0DC0263021F477
+:100460008091B0008F7705C0273029F48091B000CB
+:100470008F7D8093B000E32FF0E0E359FF4FE491CC
+:10048000F0E0662329F48081909589238083089584
+:100490008081892B80830895482F50E0CA018156BE
+:1004A0009F4FFC012491CA0185579F4FFC019491F5
+:1004B00049585F4FFA013491332319F420E030E0BA
+:1004C00035C0222331F1233021F4809180008F77D1
+:1004D00005C0243031F4809180008F7D80938000AE
+:1004E00018C0213019F484B58F7704C0223021F46C
+:1004F00084B58F7D84BD0DC0263021F48091B0007D
+:100500008F7705C0273029F48091B0008F7D8093CC
+:10051000B000E32FF0E0EE58FF4FE491F0E080816F
+:1005200020E030E0892311F021E030E0C901089596
+:04053000F894FFCF6D
+:00000001FF
diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.lss b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.lss new file mode 100644 index 0000000..b9c4942 --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.lss @@ -0,0 +1,672 @@ + +bin/Debug/ESS1995test_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000534 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .bss 00000008 00800100 00800100 000005a8 2**0 + ALLOC + 2 .stab 00000c9c 00000000 00000000 000005a8 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 000018d2 00000000 00000000 00001244 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 00000040 00000000 00000000 00002b16 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_pubnames 0000016c 00000000 00000000 00002b56 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000006f2 00000000 00000000 00002cc2 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 000002e1 00000000 00000000 000033b4 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000551 00000000 00000000 00003695 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000a0 00000000 00000000 00003be8 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000227 00000000 00000000 00003c88 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 000001fa 00000000 00000000 00003eaf 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__ctors_end> + 4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 40: 0c 94 06 01 jmp 0x20c ; 0x20c <__vector_16> + 44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + +00000068 <port_to_mode_PGM>: + 68: 00 00 24 27 2a ..$'* + +0000006d <port_to_output_PGM>: + 6d: 00 00 25 28 2b ..%(+ + +00000072 <port_to_input_PGM>: + 72: 00 00 23 26 29 ..#&) + +00000077 <digital_pin_to_port_PGM>: + 77: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 87: 03 03 03 03 .... + +0000008b <digital_pin_to_bit_mask_PGM>: + 8b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + 9b: 04 08 10 20 ... + +0000009f <digital_pin_to_timer_PGM>: + 9f: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + af: 00 00 00 00 00 ..... + +000000b4 <__ctors_end>: + b4: 11 24 eor r1, r1 + b6: 1f be out 0x3f, r1 ; 63 + b8: cf ef ldi r28, 0xFF ; 255 + ba: d8 e0 ldi r29, 0x08 ; 8 + bc: de bf out 0x3e, r29 ; 62 + be: cd bf out 0x3d, r28 ; 61 + +000000c0 <__do_copy_data>: + c0: 11 e0 ldi r17, 0x01 ; 1 + c2: a0 e0 ldi r26, 0x00 ; 0 + c4: b1 e0 ldi r27, 0x01 ; 1 + c6: e4 e3 ldi r30, 0x34 ; 52 + c8: f5 e0 ldi r31, 0x05 ; 5 + ca: 02 c0 rjmp .+4 ; 0xd0 <.do_copy_data_start> + +000000cc <.do_copy_data_loop>: + cc: 05 90 lpm r0, Z+ + ce: 0d 92 st X+, r0 + +000000d0 <.do_copy_data_start>: + d0: a0 30 cpi r26, 0x00 ; 0 + d2: b1 07 cpc r27, r17 + d4: d9 f7 brne .-10 ; 0xcc <.do_copy_data_loop> + +000000d6 <__do_clear_bss>: + d6: 11 e0 ldi r17, 0x01 ; 1 + d8: a0 e0 ldi r26, 0x00 ; 0 + da: b1 e0 ldi r27, 0x01 ; 1 + dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start> + +000000de <.do_clear_bss_loop>: + de: 1d 92 st X+, r1 + +000000e0 <.do_clear_bss_start>: + e0: a8 30 cpi r26, 0x08 ; 8 + e2: b1 07 cpc r27, r17 + e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop> + e6: 0e 94 a3 00 call 0x146 ; 0x146 <main> + ea: 0c 94 98 02 jmp 0x530 ; 0x530 <_exit> + +000000ee <__bad_interrupt>: + ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000f2 <_Z9writeByteh>: + digitalWrite(SCLK, HIGH); + delay(10); + digitalWrite(SCLK, LOW); + delay(10); +} +void writeByte(uint8_t data){ + f2: df 93 push r29 + f4: cf 93 push r28 + f6: 00 d0 rcall .+0 ; 0xf8 <_Z9writeByteh+0x6> + f8: cd b7 in r28, 0x3d ; 61 + fa: de b7 in r29, 0x3e ; 62 + fc: 8a 83 std Y+2, r24 ; 0x02 + pinMode(SDATA,OUTPUT); + fe: 84 e0 ldi r24, 0x04 ; 4 + 100: 61 e0 ldi r22, 0x01 ; 1 + 102: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode> + for (uint8_t bit=0;bit<8;bit++) { + 106: 19 82 std Y+1, r1 ; 0x01 + 108: 16 c0 rjmp .+44 ; 0x136 <_Z9writeByteh+0x44> + digitalWrite(SDATA,(data>>bit)&0b01); + 10a: 8a 81 ldd r24, Y+2 ; 0x02 + 10c: 28 2f mov r18, r24 + 10e: 30 e0 ldi r19, 0x00 ; 0 + 110: 89 81 ldd r24, Y+1 ; 0x01 + 112: 88 2f mov r24, r24 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: a9 01 movw r20, r18 + 118: 02 c0 rjmp .+4 ; 0x11e <_Z9writeByteh+0x2c> + 11a: 55 95 asr r21 + 11c: 47 95 ror r20 + 11e: 8a 95 dec r24 + 120: e2 f7 brpl .-8 ; 0x11a <_Z9writeByteh+0x28> + 122: ca 01 movw r24, r20 + 124: 98 2f mov r25, r24 + 126: 91 70 andi r25, 0x01 ; 1 + 128: 84 e0 ldi r24, 0x04 ; 4 + 12a: 69 2f mov r22, r25 + 12c: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite> + digitalWrite(SCLK, LOW); + delay(10); +} +void writeByte(uint8_t data){ + pinMode(SDATA,OUTPUT); + for (uint8_t bit=0;bit<8;bit++) { + 130: 89 81 ldd r24, Y+1 ; 0x01 + 132: 8f 5f subi r24, 0xFF ; 255 + 134: 89 83 std Y+1, r24 ; 0x01 + 136: 89 81 ldd r24, Y+1 ; 0x01 + 138: 88 30 cpi r24, 0x08 ; 8 + 13a: 38 f3 brcs .-50 ; 0x10a <_Z9writeByteh+0x18> + digitalWrite(SDATA,(data>>bit)&0b01); + } +} + 13c: 0f 90 pop r0 + 13e: 0f 90 pop r0 + 140: cf 91 pop r28 + 142: df 91 pop r29 + 144: 08 95 ret + +00000146 <main>: +int main(){ + 146: df 93 push r29 + 148: cf 93 push r28 + 14a: 00 d0 rcall .+0 ; 0x14c <main+0x6> + 14c: cd b7 in r28, 0x3d ; 61 + 14e: de b7 in r29, 0x3e ; 62 + pinMode(DATA_NEW,INPUT); + 150: 82 e0 ldi r24, 0x02 ; 2 + 152: 60 e0 ldi r22, 0x00 ; 0 + 154: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode> + pinMode(SCLK,OUTPUT); + 158: 83 e0 ldi r24, 0x03 ; 3 + 15a: 61 e0 ldi r22, 0x01 ; 1 + 15c: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode> + + pinMode(OUTPUT1, OUTPUT); + 160: 8c e0 ldi r24, 0x0C ; 12 + 162: 61 e0 ldi r22, 0x01 ; 1 + 164: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode> + pinMode(OUTPUT2, OUTPUT); + 168: 8d e0 ldi r24, 0x0D ; 13 + 16a: 61 e0 ldi r22, 0x01 ; 1 + 16c: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode> + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + 170: 0e 94 a9 01 call 0x352 ; 0x352 <init> + + while(1) { + if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to receive data + 174: 82 e0 ldi r24, 0x02 ; 2 + 176: 0e 94 4c 02 call 0x498 ; 0x498 <digitalRead> + 17a: 1a 82 std Y+2, r1 ; 0x02 + 17c: 81 30 cpi r24, 0x01 ; 1 + 17e: 91 05 cpc r25, r1 + 180: 11 f4 brne .+4 ; 0x186 <main+0x40> + 182: 81 e0 ldi r24, 0x01 ; 1 + 184: 8a 83 std Y+2, r24 ; 0x02 + 186: 8a 81 ldd r24, Y+2 ; 0x02 + 188: 88 23 and r24, r24 + 18a: b1 f0 breq .+44 ; 0x1b8 <main+0x72> + digitalWrite(OUTPUT1,HIGH); + 18c: 8c e0 ldi r24, 0x0C ; 12 + 18e: 61 e0 ldi r22, 0x01 ; 1 + 190: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite> + writeByte(WRITE_ID); + 194: 88 ec ldi r24, 0xC8 ; 200 + 196: 0e 94 79 00 call 0xf2 ; 0xf2 <_Z9writeByteh> + if (digitalRead(DATA_NEW)==LOW){ //ACK + 19a: 82 e0 ldi r24, 0x02 ; 2 + 19c: 0e 94 4c 02 call 0x498 ; 0x498 <digitalRead> + 1a0: 19 82 std Y+1, r1 ; 0x01 + 1a2: 00 97 sbiw r24, 0x00 ; 0 + 1a4: 11 f4 brne .+4 ; 0x1aa <main+0x64> + 1a6: 81 e0 ldi r24, 0x01 ; 1 + 1a8: 89 83 std Y+1, r24 ; 0x01 + 1aa: 89 81 ldd r24, Y+1 ; 0x01 + 1ac: 88 23 and r24, r24 + 1ae: 21 f0 breq .+8 ; 0x1b8 <main+0x72> + digitalWrite(OUTPUT2,HIGH); + 1b0: 8d e0 ldi r24, 0x0D ; 13 + 1b2: 61 e0 ldi r22, 0x01 ; 1 + 1b4: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite> + } + } + delay(500); + 1b8: 64 ef ldi r22, 0xF4 ; 244 + 1ba: 71 e0 ldi r23, 0x01 ; 1 + 1bc: 80 e0 ldi r24, 0x00 ; 0 + 1be: 90 e0 ldi r25, 0x00 ; 0 + 1c0: 0e 94 71 01 call 0x2e2 ; 0x2e2 <delay> + digitalWrite(OUTPUT1,LOW); + 1c4: 8c e0 ldi r24, 0x0C ; 12 + 1c6: 60 e0 ldi r22, 0x00 ; 0 + 1c8: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite> + digitalWrite(OUTPUT1,LOW); + 1cc: 8c e0 ldi r24, 0x0C ; 12 + 1ce: 60 e0 ldi r22, 0x00 ; 0 + 1d0: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite> + 1d4: cf cf rjmp .-98 ; 0x174 <main+0x2e> + +000001d6 <_Z9SCLKcyclev>: +#define OUTPUT2 13 + +#define WRITE_ID 0b11001000 +#define READ_ID 0b11001001 + +void SCLKcycle() { + 1d6: df 93 push r29 + 1d8: cf 93 push r28 + 1da: cd b7 in r28, 0x3d ; 61 + 1dc: de b7 in r29, 0x3e ; 62 + digitalWrite(SCLK, HIGH); + 1de: 83 e0 ldi r24, 0x03 ; 3 + 1e0: 61 e0 ldi r22, 0x01 ; 1 + 1e2: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite> + delay(10); + 1e6: 6a e0 ldi r22, 0x0A ; 10 + 1e8: 70 e0 ldi r23, 0x00 ; 0 + 1ea: 80 e0 ldi r24, 0x00 ; 0 + 1ec: 90 e0 ldi r25, 0x00 ; 0 + 1ee: 0e 94 71 01 call 0x2e2 ; 0x2e2 <delay> + digitalWrite(SCLK, LOW); + 1f2: 83 e0 ldi r24, 0x03 ; 3 + 1f4: 60 e0 ldi r22, 0x00 ; 0 + 1f6: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite> + delay(10); + 1fa: 6a e0 ldi r22, 0x0A ; 10 + 1fc: 70 e0 ldi r23, 0x00 ; 0 + 1fe: 80 e0 ldi r24, 0x00 ; 0 + 200: 90 e0 ldi r25, 0x00 ; 0 + 202: 0e 94 71 01 call 0x2e2 ; 0x2e2 <delay> +} + 206: cf 91 pop r28 + 208: df 91 pop r29 + 20a: 08 95 ret + +0000020c <__vector_16>: + 20c: 1f 92 push r1 + 20e: 0f 92 push r0 + 210: 0f b6 in r0, 0x3f ; 63 + 212: 0f 92 push r0 + 214: 11 24 eor r1, r1 + 216: 2f 93 push r18 + 218: 8f 93 push r24 + 21a: 9f 93 push r25 + 21c: af 93 push r26 + 21e: bf 93 push r27 + 220: 80 91 00 01 lds r24, 0x0100 + 224: 90 91 01 01 lds r25, 0x0101 + 228: a0 91 02 01 lds r26, 0x0102 + 22c: b0 91 03 01 lds r27, 0x0103 + 230: 80 50 subi r24, 0x00 ; 0 + 232: 90 4c sbci r25, 0xC0 ; 192 + 234: af 4f sbci r26, 0xFF ; 255 + 236: bf 4f sbci r27, 0xFF ; 255 + 238: 80 93 00 01 sts 0x0100, r24 + 23c: 90 93 01 01 sts 0x0101, r25 + 240: a0 93 02 01 sts 0x0102, r26 + 244: b0 93 03 01 sts 0x0103, r27 + 248: 27 c0 rjmp .+78 ; 0x298 <__vector_16+0x8c> + 24a: 80 91 00 01 lds r24, 0x0100 + 24e: 90 91 01 01 lds r25, 0x0101 + 252: a0 91 02 01 lds r26, 0x0102 + 256: b0 91 03 01 lds r27, 0x0103 + 25a: 80 58 subi r24, 0x80 ; 128 + 25c: 9e 43 sbci r25, 0x3E ; 62 + 25e: a0 40 sbci r26, 0x00 ; 0 + 260: b0 40 sbci r27, 0x00 ; 0 + 262: 80 93 00 01 sts 0x0100, r24 + 266: 90 93 01 01 sts 0x0101, r25 + 26a: a0 93 02 01 sts 0x0102, r26 + 26e: b0 93 03 01 sts 0x0103, r27 + 272: 80 91 04 01 lds r24, 0x0104 + 276: 90 91 05 01 lds r25, 0x0105 + 27a: a0 91 06 01 lds r26, 0x0106 + 27e: b0 91 07 01 lds r27, 0x0107 + 282: 01 96 adiw r24, 0x01 ; 1 + 284: a1 1d adc r26, r1 + 286: b1 1d adc r27, r1 + 288: 80 93 04 01 sts 0x0104, r24 + 28c: 90 93 05 01 sts 0x0105, r25 + 290: a0 93 06 01 sts 0x0106, r26 + 294: b0 93 07 01 sts 0x0107, r27 + 298: 80 91 00 01 lds r24, 0x0100 + 29c: 90 91 01 01 lds r25, 0x0101 + 2a0: a0 91 02 01 lds r26, 0x0102 + 2a4: b0 91 03 01 lds r27, 0x0103 + 2a8: 81 58 subi r24, 0x81 ; 129 + 2aa: 9e 43 sbci r25, 0x3E ; 62 + 2ac: a0 40 sbci r26, 0x00 ; 0 + 2ae: b0 40 sbci r27, 0x00 ; 0 + 2b0: 60 f6 brcc .-104 ; 0x24a <__vector_16+0x3e> + 2b2: bf 91 pop r27 + 2b4: af 91 pop r26 + 2b6: 9f 91 pop r25 + 2b8: 8f 91 pop r24 + 2ba: 2f 91 pop r18 + 2bc: 0f 90 pop r0 + 2be: 0f be out 0x3f, r0 ; 63 + 2c0: 0f 90 pop r0 + 2c2: 1f 90 pop r1 + 2c4: 18 95 reti + +000002c6 <millis>: + 2c6: 8f b7 in r24, 0x3f ; 63 + 2c8: f8 94 cli + 2ca: 20 91 04 01 lds r18, 0x0104 + 2ce: 30 91 05 01 lds r19, 0x0105 + 2d2: 40 91 06 01 lds r20, 0x0106 + 2d6: 50 91 07 01 lds r21, 0x0107 + 2da: 8f bf out 0x3f, r24 ; 63 + 2dc: b9 01 movw r22, r18 + 2de: ca 01 movw r24, r20 + 2e0: 08 95 ret + +000002e2 <delay>: + 2e2: ef 92 push r14 + 2e4: ff 92 push r15 + 2e6: 0f 93 push r16 + 2e8: 1f 93 push r17 + 2ea: 7b 01 movw r14, r22 + 2ec: 8c 01 movw r16, r24 + 2ee: 8f b7 in r24, 0x3f ; 63 + 2f0: f8 94 cli + 2f2: 40 91 04 01 lds r20, 0x0104 + 2f6: 50 91 05 01 lds r21, 0x0105 + 2fa: 60 91 06 01 lds r22, 0x0106 + 2fe: 70 91 07 01 lds r23, 0x0107 + 302: 8f bf out 0x3f, r24 ; 63 + 304: 2f b7 in r18, 0x3f ; 63 + 306: f8 94 cli + 308: 80 91 04 01 lds r24, 0x0104 + 30c: 90 91 05 01 lds r25, 0x0105 + 310: a0 91 06 01 lds r26, 0x0106 + 314: b0 91 07 01 lds r27, 0x0107 + 318: 2f bf out 0x3f, r18 ; 63 + 31a: 84 1b sub r24, r20 + 31c: 95 0b sbc r25, r21 + 31e: a6 0b sbc r26, r22 + 320: b7 0b sbc r27, r23 + 322: 8e 15 cp r24, r14 + 324: 9f 05 cpc r25, r15 + 326: a0 07 cpc r26, r16 + 328: b1 07 cpc r27, r17 + 32a: 60 f3 brcs .-40 ; 0x304 <delay+0x22> + 32c: 1f 91 pop r17 + 32e: 0f 91 pop r16 + 330: ff 90 pop r15 + 332: ef 90 pop r14 + 334: 08 95 ret + +00000336 <delayMicroseconds>: + 336: 01 97 sbiw r24, 0x01 ; 1 + 338: 59 f0 breq .+22 ; 0x350 <delayMicroseconds+0x1a> + 33a: fc 01 movw r30, r24 + 33c: ee 0f add r30, r30 + 33e: ff 1f adc r31, r31 + 340: ee 0f add r30, r30 + 342: ff 1f adc r31, r31 + 344: 32 97 sbiw r30, 0x02 ; 2 + 346: 8f b7 in r24, 0x3f ; 63 + 348: f8 94 cli + 34a: 31 97 sbiw r30, 0x01 ; 1 + 34c: f1 f7 brne .-4 ; 0x34a <delayMicroseconds+0x14> + 34e: 8f bf out 0x3f, r24 ; 63 + 350: 08 95 ret + +00000352 <init>: + 352: 78 94 sei + 354: 84 b5 in r24, 0x24 ; 36 + 356: 82 60 ori r24, 0x02 ; 2 + 358: 84 bd out 0x24, r24 ; 36 + 35a: 84 b5 in r24, 0x24 ; 36 + 35c: 81 60 ori r24, 0x01 ; 1 + 35e: 84 bd out 0x24, r24 ; 36 + 360: 85 b5 in r24, 0x25 ; 37 + 362: 82 60 ori r24, 0x02 ; 2 + 364: 85 bd out 0x25, r24 ; 37 + 366: 85 b5 in r24, 0x25 ; 37 + 368: 81 60 ori r24, 0x01 ; 1 + 36a: 85 bd out 0x25, r24 ; 37 + 36c: ee e6 ldi r30, 0x6E ; 110 + 36e: f0 e0 ldi r31, 0x00 ; 0 + 370: 80 81 ld r24, Z + 372: 81 60 ori r24, 0x01 ; 1 + 374: 80 83 st Z, r24 + 376: e1 e8 ldi r30, 0x81 ; 129 + 378: f0 e0 ldi r31, 0x00 ; 0 + 37a: 80 81 ld r24, Z + 37c: 82 60 ori r24, 0x02 ; 2 + 37e: 80 83 st Z, r24 + 380: 80 81 ld r24, Z + 382: 81 60 ori r24, 0x01 ; 1 + 384: 80 83 st Z, r24 + 386: e0 e8 ldi r30, 0x80 ; 128 + 388: f0 e0 ldi r31, 0x00 ; 0 + 38a: 80 81 ld r24, Z + 38c: 81 60 ori r24, 0x01 ; 1 + 38e: 80 83 st Z, r24 + 390: e1 eb ldi r30, 0xB1 ; 177 + 392: f0 e0 ldi r31, 0x00 ; 0 + 394: 80 81 ld r24, Z + 396: 84 60 ori r24, 0x04 ; 4 + 398: 80 83 st Z, r24 + 39a: e0 eb ldi r30, 0xB0 ; 176 + 39c: f0 e0 ldi r31, 0x00 ; 0 + 39e: 80 81 ld r24, Z + 3a0: 81 60 ori r24, 0x01 ; 1 + 3a2: 80 83 st Z, r24 + 3a4: ea e7 ldi r30, 0x7A ; 122 + 3a6: f0 e0 ldi r31, 0x00 ; 0 + 3a8: 80 81 ld r24, Z + 3aa: 84 60 ori r24, 0x04 ; 4 + 3ac: 80 83 st Z, r24 + 3ae: 80 81 ld r24, Z + 3b0: 82 60 ori r24, 0x02 ; 2 + 3b2: 80 83 st Z, r24 + 3b4: 80 81 ld r24, Z + 3b6: 81 60 ori r24, 0x01 ; 1 + 3b8: 80 83 st Z, r24 + 3ba: 80 81 ld r24, Z + 3bc: 80 68 ori r24, 0x80 ; 128 + 3be: 80 83 st Z, r24 + 3c0: 10 92 c1 00 sts 0x00C1, r1 + 3c4: 08 95 ret + +000003c6 <pinMode>: + 3c6: 28 2f mov r18, r24 + 3c8: 30 e0 ldi r19, 0x00 ; 0 + 3ca: c9 01 movw r24, r18 + 3cc: 85 57 subi r24, 0x75 ; 117 + 3ce: 9f 4f sbci r25, 0xFF ; 255 + 3d0: fc 01 movw r30, r24 + 3d2: 94 91 lpm r25, Z+ + 3d4: 29 58 subi r18, 0x89 ; 137 + 3d6: 3f 4f sbci r19, 0xFF ; 255 + 3d8: f9 01 movw r30, r18 + 3da: 84 91 lpm r24, Z+ + 3dc: 88 23 and r24, r24 + 3de: 81 f0 breq .+32 ; 0x400 <pinMode+0x3a> + 3e0: e8 2f mov r30, r24 + 3e2: f0 e0 ldi r31, 0x00 ; 0 + 3e4: e8 59 subi r30, 0x98 ; 152 + 3e6: ff 4f sbci r31, 0xFF ; 255 + 3e8: e4 91 lpm r30, Z+ + 3ea: f0 e0 ldi r31, 0x00 ; 0 + 3ec: 66 23 and r22, r22 + 3ee: 29 f4 brne .+10 ; 0x3fa <pinMode+0x34> + 3f0: 80 81 ld r24, Z + 3f2: 90 95 com r25 + 3f4: 89 23 and r24, r25 + 3f6: 80 83 st Z, r24 + 3f8: 08 95 ret + 3fa: 80 81 ld r24, Z + 3fc: 89 2b or r24, r25 + 3fe: 80 83 st Z, r24 + 400: 08 95 ret + +00000402 <digitalWrite>: + 402: 48 2f mov r20, r24 + 404: 50 e0 ldi r21, 0x00 ; 0 + 406: ca 01 movw r24, r20 + 408: 81 56 subi r24, 0x61 ; 97 + 40a: 9f 4f sbci r25, 0xFF ; 255 + 40c: fc 01 movw r30, r24 + 40e: 24 91 lpm r18, Z+ + 410: ca 01 movw r24, r20 + 412: 85 57 subi r24, 0x75 ; 117 + 414: 9f 4f sbci r25, 0xFF ; 255 + 416: fc 01 movw r30, r24 + 418: 94 91 lpm r25, Z+ + 41a: 49 58 subi r20, 0x89 ; 137 + 41c: 5f 4f sbci r21, 0xFF ; 255 + 41e: fa 01 movw r30, r20 + 420: 34 91 lpm r19, Z+ + 422: 33 23 and r19, r19 + 424: c1 f1 breq .+112 ; 0x496 <digitalWrite+0x94> + 426: 22 23 and r18, r18 + 428: 31 f1 breq .+76 ; 0x476 <digitalWrite+0x74> + 42a: 23 30 cpi r18, 0x03 ; 3 + 42c: 21 f4 brne .+8 ; 0x436 <digitalWrite+0x34> + 42e: 80 91 80 00 lds r24, 0x0080 + 432: 8f 77 andi r24, 0x7F ; 127 + 434: 05 c0 rjmp .+10 ; 0x440 <digitalWrite+0x3e> + 436: 24 30 cpi r18, 0x04 ; 4 + 438: 31 f4 brne .+12 ; 0x446 <digitalWrite+0x44> + 43a: 80 91 80 00 lds r24, 0x0080 + 43e: 8f 7d andi r24, 0xDF ; 223 + 440: 80 93 80 00 sts 0x0080, r24 + 444: 18 c0 rjmp .+48 ; 0x476 <digitalWrite+0x74> + 446: 21 30 cpi r18, 0x01 ; 1 + 448: 19 f4 brne .+6 ; 0x450 <digitalWrite+0x4e> + 44a: 84 b5 in r24, 0x24 ; 36 + 44c: 8f 77 andi r24, 0x7F ; 127 + 44e: 04 c0 rjmp .+8 ; 0x458 <digitalWrite+0x56> + 450: 22 30 cpi r18, 0x02 ; 2 + 452: 21 f4 brne .+8 ; 0x45c <digitalWrite+0x5a> + 454: 84 b5 in r24, 0x24 ; 36 + 456: 8f 7d andi r24, 0xDF ; 223 + 458: 84 bd out 0x24, r24 ; 36 + 45a: 0d c0 rjmp .+26 ; 0x476 <digitalWrite+0x74> + 45c: 26 30 cpi r18, 0x06 ; 6 + 45e: 21 f4 brne .+8 ; 0x468 <digitalWrite+0x66> + 460: 80 91 b0 00 lds r24, 0x00B0 + 464: 8f 77 andi r24, 0x7F ; 127 + 466: 05 c0 rjmp .+10 ; 0x472 <digitalWrite+0x70> + 468: 27 30 cpi r18, 0x07 ; 7 + 46a: 29 f4 brne .+10 ; 0x476 <digitalWrite+0x74> + 46c: 80 91 b0 00 lds r24, 0x00B0 + 470: 8f 7d andi r24, 0xDF ; 223 + 472: 80 93 b0 00 sts 0x00B0, r24 + 476: e3 2f mov r30, r19 + 478: f0 e0 ldi r31, 0x00 ; 0 + 47a: e3 59 subi r30, 0x93 ; 147 + 47c: ff 4f sbci r31, 0xFF ; 255 + 47e: e4 91 lpm r30, Z+ + 480: f0 e0 ldi r31, 0x00 ; 0 + 482: 66 23 and r22, r22 + 484: 29 f4 brne .+10 ; 0x490 <digitalWrite+0x8e> + 486: 80 81 ld r24, Z + 488: 90 95 com r25 + 48a: 89 23 and r24, r25 + 48c: 80 83 st Z, r24 + 48e: 08 95 ret + 490: 80 81 ld r24, Z + 492: 89 2b or r24, r25 + 494: 80 83 st Z, r24 + 496: 08 95 ret + +00000498 <digitalRead>: + 498: 48 2f mov r20, r24 + 49a: 50 e0 ldi r21, 0x00 ; 0 + 49c: ca 01 movw r24, r20 + 49e: 81 56 subi r24, 0x61 ; 97 + 4a0: 9f 4f sbci r25, 0xFF ; 255 + 4a2: fc 01 movw r30, r24 + 4a4: 24 91 lpm r18, Z+ + 4a6: ca 01 movw r24, r20 + 4a8: 85 57 subi r24, 0x75 ; 117 + 4aa: 9f 4f sbci r25, 0xFF ; 255 + 4ac: fc 01 movw r30, r24 + 4ae: 94 91 lpm r25, Z+ + 4b0: 49 58 subi r20, 0x89 ; 137 + 4b2: 5f 4f sbci r21, 0xFF ; 255 + 4b4: fa 01 movw r30, r20 + 4b6: 34 91 lpm r19, Z+ + 4b8: 33 23 and r19, r19 + 4ba: 19 f4 brne .+6 ; 0x4c2 <digitalRead+0x2a> + 4bc: 20 e0 ldi r18, 0x00 ; 0 + 4be: 30 e0 ldi r19, 0x00 ; 0 + 4c0: 35 c0 rjmp .+106 ; 0x52c <digitalRead+0x94> + 4c2: 22 23 and r18, r18 + 4c4: 31 f1 breq .+76 ; 0x512 <digitalRead+0x7a> + 4c6: 23 30 cpi r18, 0x03 ; 3 + 4c8: 21 f4 brne .+8 ; 0x4d2 <digitalRead+0x3a> + 4ca: 80 91 80 00 lds r24, 0x0080 + 4ce: 8f 77 andi r24, 0x7F ; 127 + 4d0: 05 c0 rjmp .+10 ; 0x4dc <digitalRead+0x44> + 4d2: 24 30 cpi r18, 0x04 ; 4 + 4d4: 31 f4 brne .+12 ; 0x4e2 <digitalRead+0x4a> + 4d6: 80 91 80 00 lds r24, 0x0080 + 4da: 8f 7d andi r24, 0xDF ; 223 + 4dc: 80 93 80 00 sts 0x0080, r24 + 4e0: 18 c0 rjmp .+48 ; 0x512 <digitalRead+0x7a> + 4e2: 21 30 cpi r18, 0x01 ; 1 + 4e4: 19 f4 brne .+6 ; 0x4ec <digitalRead+0x54> + 4e6: 84 b5 in r24, 0x24 ; 36 + 4e8: 8f 77 andi r24, 0x7F ; 127 + 4ea: 04 c0 rjmp .+8 ; 0x4f4 <digitalRead+0x5c> + 4ec: 22 30 cpi r18, 0x02 ; 2 + 4ee: 21 f4 brne .+8 ; 0x4f8 <digitalRead+0x60> + 4f0: 84 b5 in r24, 0x24 ; 36 + 4f2: 8f 7d andi r24, 0xDF ; 223 + 4f4: 84 bd out 0x24, r24 ; 36 + 4f6: 0d c0 rjmp .+26 ; 0x512 <digitalRead+0x7a> + 4f8: 26 30 cpi r18, 0x06 ; 6 + 4fa: 21 f4 brne .+8 ; 0x504 <digitalRead+0x6c> + 4fc: 80 91 b0 00 lds r24, 0x00B0 + 500: 8f 77 andi r24, 0x7F ; 127 + 502: 05 c0 rjmp .+10 ; 0x50e <digitalRead+0x76> + 504: 27 30 cpi r18, 0x07 ; 7 + 506: 29 f4 brne .+10 ; 0x512 <digitalRead+0x7a> + 508: 80 91 b0 00 lds r24, 0x00B0 + 50c: 8f 7d andi r24, 0xDF ; 223 + 50e: 80 93 b0 00 sts 0x00B0, r24 + 512: e3 2f mov r30, r19 + 514: f0 e0 ldi r31, 0x00 ; 0 + 516: ee 58 subi r30, 0x8E ; 142 + 518: ff 4f sbci r31, 0xFF ; 255 + 51a: e4 91 lpm r30, Z+ + 51c: f0 e0 ldi r31, 0x00 ; 0 + 51e: 80 81 ld r24, Z + 520: 20 e0 ldi r18, 0x00 ; 0 + 522: 30 e0 ldi r19, 0x00 ; 0 + 524: 89 23 and r24, r25 + 526: 11 f0 breq .+4 ; 0x52c <digitalRead+0x94> + 528: 21 e0 ldi r18, 0x01 ; 1 + 52a: 30 e0 ldi r19, 0x00 ; 0 + 52c: c9 01 movw r24, r18 + 52e: 08 95 ret + +00000530 <_exit>: + 530: f8 94 cli + +00000532 <__stop_program>: + 532: ff cf rjmp .-2 ; 0x532 <__stop_program> diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.map b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.map new file mode 100644 index 0000000..57d6f9c --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.map @@ -0,0 +1,506 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x534 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x11a obj/Debug/main.o + 0x000000f2 writeByte(unsigned char) + 0x00000146 main + 0x000001d6 SCLKcycle() + .text 0x0000020c 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x0000020c __vector_16 + 0x000002c6 millis + 0x000002e2 delay + 0x00000336 delayMicroseconds + 0x00000352 init + .text 0x000003c6 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000003c6 pinMode + 0x00000402 digitalWrite + 0x00000498 digitalRead + .text 0x00000530 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000530 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000530 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00000530 exit + 0x00000530 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000530 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000534 _etext = . + +.data 0x00800100 0x0 load address 0x00000534 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Debug/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Debug/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000534 __data_load_start = LOADADDR (.data) + 0x00000534 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0xc9c + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x5e8 obj/Debug/main.o + 0x5f4 (size before relaxing) + +.stabstr 0x00000000 0x18d2 + *(.stabstr) + .stabstr 0x00000000 0x18d2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/ESS1995test_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +SCLKcycle() obj/Debug/main.o +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) +writeByte(unsigned char) obj/Debug/main.o diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf Binary files differnew file mode 100755 index 0000000..8759771 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex new file mode 100644 index 0000000..a6cb0f1 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex @@ -0,0 +1,1122 @@ +:100000000C9463000C94930A0C94C00A0C948B001B
+:100010000C948B000C948B000C948B000C94EC07CC
+:100020000C948B000C948B000C948B000C948B0024
+:100030000C948B000C948B000C948B000C948B0014
+:100040000C94A4130C948B000C9414030C948B004C
+:100050000C948B000C948B000C948B000C948B00F4
+:100060000C948B000C948B000200000000240027ED
+:10007000002A0000000000250028002B00000000DE
+:1000800000230026002900040404040404040402DC
+:100090000202020202030303030303010204081025
+:1000A00020408001020408102001020408102000F2
+:1000B0000000070002010000030406000000000029
+:1000C00000000000A10411241FBECFEFD8E0DEBF66
+:1000D000CDBF12E0A0E0B1E0E0E5F4E402C005909D
+:1000E0000D92AA3BB107D9F713E0AAEBB2E001C029
+:1000F0001D92A239B107E1F710E0C6ECD0E004C0D0
+:100100002297FE010E94881EC43CD107C9F70E94B5
+:10011000EF010C9426220C9400000F931F9360EDC6
+:1001200077E080E090E00E942C1408E513E0C8011D
+:1001300060E071E00E94120560ED77E080E090E001
+:100140000E942C14C8010E9482041F910F910895EF
+:100150000F931F9386E060E00E941C1508E513E0F2
+:10016000C80140E056E960E070E00E94A503C801C4
+:100170006BE071E00E941205C80169E171E00E9424
+:100180001205C80163E371E00E941205C80161E431
+:1001900071E00E941205C8016FE471E00E9412052F
+:1001A000C80160E671E00E9412050E948D001F9157
+:1001B0000F910895F894FFCF84E061E00E946F15DD
+:1001C00083E061E00E946F158AE090E00E94521483
+:1001D00084E060E00E946F158AE090E00E94521473
+:1001E00083E060E00E946F158AE090E00E94521464
+:1001F000089584E060E00E946F158AE090E00E941C
+:10020000521483E061E00E946F158AE090E00E9442
+:10021000521484E061E00E946F1508958AE090E036
+:100220000E94521483E060E00E946F1584E190E028
+:100230000E94521483E061E00E946F158AE090E012
+:100240000E94521408950F931F938AE090E00E9439
+:10025000521400E017E084E00E94A415682F90E09B
+:10026000012E02C0880F991F0A94E2F7082B8CE038
+:100270000E946F150E940E01115068F70E940E0136
+:10028000802F1F910F9108958AE090E00E945214F0
+:1002900083E061E00E946F1584E190E00E945214B7
+:1002A00083E060E00E946F158AE090E00E945214A3
+:1002B00008951F93CF93DF9317E0C82FD0E0BE01BE
+:1002C000012E02C0759567950A94E2F7617084E08B
+:1002D0000E946F150E944401115088F784E061E08C
+:1002E0000E946F150E944401DF91CF911F910895E4
+:1002F00084E060E00E941C1583E061E00E946F15BD
+:10030000089584E061E00E941C1583E061E00E9492
+:100310006F150895EF92FF920F931F938091C5027E
+:10032000879588278795F090C602FF0CFF0CFF0C7D
+:10033000F82A8091C702F82A8091C9028295880F15
+:10034000807E0091CA02000F000F000F082B8091E1
+:10035000C802082B9091CB02979599279795809189
+:10036000CF028295807F892B9091D102892B909129
+:10037000D302990F990F990F982BE090CE02EE0CB3
+:10038000E92A9091CC029795992797958091CD0273
+:100390008295880F880F807C892B9091D202892BBF
+:1003A0001091D002110F110F182B0E9481010E9491
+:1003B000DC0088EC0E9459018F2D0E945901802F8A
+:1003C0000E9459018E2D0E945901812F0E945901CE
+:1003D0000E94F9001F910F91FF90EF9008958F9266
+:1003E0009F92AF92BF92CF92DF92EF92FF920F93C4
+:1003F0001F93DF93CF93CDB7DEB727970FB6F8944F
+:10040000DEBF0FBECDBF0E945C1485E061E00E949C
+:100410001C1585E060E00E946F150E94A80082E034
+:1004200060E00E941C1583E061E00E941C1586E0DC
+:1004300060E00E941C158CE061E00E941C158DE0BC
+:1004400061E00E941C158DE061E00E946F1585E05F
+:1004500061E00E946F156AEF70E080E090E00E941A
+:100460002C140E948A01AAEFEA2EF12C4E01089466
+:10047000811C911CF4E0AF2EB12CAC0EBD1EE2E04D
+:10048000CE2ED12CCC0EDD1E82E00E94A415019749
+:1004900009F0BCC08CE061E00E946F158DE060E067
+:1004A0000E946F150E9481010E94DC0089EC0E946D
+:1004B000590182E00E94A415892B09F0A7C08DE0A4
+:1004C00061E00E946F150E9478010BEB12E00E9420
+:1004D0002301F80181938F01F2E0053C1F07B9F772
+:1004E0000E9481010E94F9008091BB0289832091C2
+:1004F000BD0230E040E050E0542F432F322F22273E
+:100500008091BE0290E0A0E0B0E0282B392B4A2B6E
+:100510005B2B8091BC0290E0A0E0B0E0877090700F
+:10052000A070B070DC0199278827282B392B4A2B23
+:100530005B2B2C833D834E835F832091C0022295E9
+:1005400026952695237030E08091BF0290E0880FB9
+:10055000991F880F991F282B392B3B832A8317C09B
+:1005600088E593E00E945E04823029F0833061F0D8
+:10057000813069F404C02AEFE22EF12C08C098EE15
+:10058000E92E93E0F92E03C082E3E82EF12C88E5F2
+:1005900093E00E9433041816190614F386E00E94B3
+:1005A000A4152091BA02892B59F1222319F481E074
+:1005B0008093BA0288E593E063E771E042E050E09F
+:1005C0000E94F30488E593E062E771E041E050E0C7
+:1005D0000E94F30488E593E0B40141E050E00E94FA
+:1005E000F30488E593E0B50144E050E00E94F30491
+:1005F00088E593E0B60142E050E00E94F30406C0B3
+:10060000222321F00E948D001092BA02B70180E0EF
+:1006100090E00E942C148CE060E00E946F158DE049
+:1006200060E00E946F1530CF1F920F920FB60F92AD
+:1006300011242F933F934F938F939F93EF93FF93A7
+:100640004091C600E0915403F091550331969F010B
+:100650002F77307031978091560390915703281768
+:10066000390739F0EC52FD4F408330935503209306
+:100670005403FF91EF919F918F914F913F912F9153
+:100680000F900FBE0F901F9018958F92AF92CF9240
+:10069000DF92EF92FF920F931F93DF93CF93CDB72B
+:1006A000DEB7FC0189E791E09183808373836283E5
+:1006B000558344833783268311870087F386E28638
+:1006C000D586C486A68687868D85808B8E85818B10
+:1006D0008F85828BCF91DF911F910F91FF90EF90CB
+:1006E000DF90CF90AF908F9008958F92AF92CF927E
+:1006F000DF92EF92FF920F931F93DF93CF93CDB7CB
+:10070000DEB7FC0189E791E0918380837383628384
+:10071000558344833783268311870087F386E286D7
+:10072000D586C486A68687868D85808B8E85818BAF
+:100730008F85828BCF91DF911F910F91FF90EF906A
+:10074000DF90CF90AF908F900895EF92FF920F932C
+:100750001F938C019A01AB01DC011896ED91FC917D
+:10076000199791E0E92EF12CC70152960C9002C026
+:10077000880F991F0A94E2F7808360E874E88EE19D
+:1007800090E00E94121E215030404040504056954B
+:10079000479537952795D8011496ED91FC911597BB
+:1007A00030831696ED91FC91179720831A96ED9160
+:1007B000FC911B972081C7011E960C901E9702C0CA
+:1007C000880F991F0A94E2F7282B20831A96ED913F
+:1007D000FC911B972081C7011F960C901F9702C0A8
+:1007E000880F991F0A94E2F7282B20831A96ED911F
+:1007F000FC911B97808150960C9002C0EE0CFF1C60
+:100800000A94E2F78E2980831F910F91FF90EF9059
+:100810000895FC01A285B3854C9121E030E0C90127
+:10082000068402C0880F991F0A94E2F780958423FA
+:100830008C93A285B3854C91C901078402C0880FAF
+:10084000991F0A94E2F7809584238C93A285B3853F
+:100850008C91008802C0220F331F0A94E2F7209582
+:1008600028232C930895DC011296ED91FC911397A7
+:10087000E058FF4F2191319180819181281B390BE4
+:100880002F773070C9010895DC011296ED91FC912B
+:100890001397EE57FF4F2081318192918291E0585A
+:1008A000F0408217930719F42FEF3FEF05C0E20FD6
+:1008B000F31F8081282F30E0C9010895DC011296D2
+:1008C000ED91FC911397DF01AE57BF4F2D913C91F5
+:1008D0001197E058FF4F80819181E058F0408217D6
+:1008E000930719F42FEF3FEF0BC0E20FF31F808146
+:1008F0002F5F3F4F2F7730702D933C93282F30E0A0
+:10090000C9010895DC011296ED91FC911397EE5701
+:10091000FF4F80819181929382930895FC01A0857D
+:10092000B18521898C9190E0022E02C09595879522
+:100930000A94E2F780FFF6CF0484F585E02D60830A
+:10094000089589E791E0909359038093580384EDCB
+:1009500092E090935B0380935A0385EC90E0909330
+:100960005D0380935C0384EC90E090935F0380933D
+:100970005E0380EC90E0909361038093600381ECD0
+:1009800090E0909363038093620386EC90E09093F1
+:1009900065038093640384E08093660383E080931F
+:1009A000670387E08093680385E08093690381E0B3
+:1009B00080936A0308950F931F93CF93DF938C0165
+:1009C000EB0109C02196D801ED91FC910190F081D5
+:1009D000E02DC801099568816623A1F7DF91CF91C9
+:1009E0001F910F910895EF92FF920F931F93CF9352
+:1009F000DF938C017B01EA010CC0D7016D917D0171
+:100A0000D801ED91FC910190F081E02DC80109958C
+:100A10002197209791F7DF91CF911F910F91FF9030
+:100A2000EF900895DC01ED91FC910280F381E02DBF
+:100A300009950895CF92DF92EF92FF920F931F9343
+:100A4000CF93DF936C017B01C0E0D0E00EC0D601F4
+:100A5000ED91FC9100811181C701BE010E94B40B90
+:100A6000682FC601F80109952196F70184819581C7
+:100A7000C817D90760F3DF91CF911F910F91FF90B5
+:100A8000EF90DF90CF9008952F923F924F925F9218
+:100A90006F927F928F929F92AF92BF92CF92DF928E
+:100AA000EF92FF920F931F93DF93CF93CDB7DEB7F3
+:100AB000A0970FB6F894DEBF0FBECDBF1C016A0130
+:100AC0007B01411551056105710549F440E350E092
+:100AD00060E070E020E030E00E94100656C08824FC
+:100AE00099245401422E55246624772401E010E015
+:100AF0000C0F1D1F080D191DC701B601A30192019E
+:100B00000E94121EF80160830894811C911CA11C94
+:100B1000B11CC701B601A30192010E94121EC901B6
+:100B2000DA016C017D01C114D104E104F104F1F694
+:100B300081E0E82EF12CEC0EFD1EE80CF91C3E01C4
+:100B40000894611C711CD501C4010197A109B10968
+:100B50006C01C818D90816C0F601EE0DFF1D4081C2
+:100B60004A3010F4405D01C0495C552747FD50955F
+:100B7000652F752FC10120E030E00E941006089417
+:100B8000E108F1086E147F0439F7A0960FB6F894C7
+:100B9000DEBF0FBECDBFCF91DF911F910F91FF90B0
+:100BA000EF90DF90CF90BF90AF909F908F907F900D
+:100BB0006F905F904F903F902F900895DC0121152A
+:100BC000310541F4ED91FC910190F081E02D642F0D
+:100BD000099508950E9444050895EF92FF920F939E
+:100BE0001F939A017B0100E010E0B801A7010E9469
+:100BF000DE051F910F91FF90EF900895EF92FF9205
+:100C00000F931F939A01E62EFF2400E010E0B80135
+:100C1000A7010E94DE051F910F91FF90EF900895AC
+:100C2000EF92FF920F931F93CF93DF93EC017A0122
+:100C30008B012115310541F4E881F9810190F081A2
+:100C4000E02D642F09951BC02A303105B1F477FFE0
+:100C500010C04DE250E060E070E020E030E00E9423
+:100C6000100610950095F094E094E11CF11C011D14
+:100C7000111DCE01B801A7012AE00E944405DF91B1
+:100C8000CF911F910F91FF90EF900895EF92FF92F7
+:100C90000F931F937B019A010027F7FC0095102FFB
+:100CA000B801A7010E9410061F910F91FF90EF90CD
+:100CB0000895EF92FF920F931F93E62E9A01FF245F
+:100CC000E7FCF0940F2D1F2DB801A7010E9410061C
+:100CD0001F910F91FF90EF9008950F931F938C0138
+:100CE0004DE050E060E070E020E030E00E9410064F
+:100CF000C8014AE050E060E070E020E030E00E948F
+:100D000010061F910F9108950F931F938C010E945D
+:100D1000DE05C8010E946D061F910F910895CF92C4
+:100D2000DF92EF92FF920F931F938C019A016B0158
+:100D3000EE24FF24B701A6010E94DE05C8010E942F
+:100D40006D061F910F91FF90EF90DF90CF90089567
+:100D5000CF92DF92EF92FF920F931F938C019A0133
+:100D6000C62EDD24EE24FF24B701A6010E94DE0575
+:100D7000C8010E946D061F910F91FF90EF90DF90C8
+:100D8000CF9008950F931F938C010E941205C80104
+:100D90000E946D061F910F9108950F931F938C0170
+:100DA0000E941A05C8010E946D061F910F910895B7
+:100DB0000F931F938C010E941006C8010E946D06BC
+:100DC0001F910F910895CF92DF92EF92FF920F93B0
+:100DD0001F938C016B019A01EE24D7FCE094FE2C4A
+:100DE000B701A6010E941006C8010E946D061F915E
+:100DF0000F91FF90EF90DF90CF900895CF92DF9208
+:100E0000EF92FF920F931F938C01C62E9A01DD245F
+:100E1000C7FCD094ED2CFD2CB701A6010E94100652
+:100E2000C8010E946D061F910F91FF90EF90DF9017
+:100E3000CF9008959F92AF92BF92CF92DF92EF92A0
+:100E4000FF920F931F93CF93DF93EC017A018B01F5
+:100E5000922ECB01BA0120E030E040E050E00E9449
+:100E6000A31A88236CF4CE014DE250E060E070E0FC
+:100E700020E030E00E94100617FB109517F910953E
+:100E800020E030E040E05FE3AA240BC0CA01B901D2
+:100E900020E030E040E251E40E94C7199B01AC0120
+:100EA000A394A91498F3C801B7010E94A0185B018C
+:100EB0006C010E94F7167B018C01CE01B801A701DD
+:100EC0002AE030E00E94DE05992029F0CE0169E990
+:100ED00071E00E941205C801B7010E94851B9B01A9
+:100EE000AC01C601B5010E946F1822C020E030E0BD
+:100EF00040E251E40E94CD187B018C010E94311B1D
+:100F00005B016C01CC24B7FCC094DC2CCE01B60193
+:100F1000A5012AE030E00E941006C601B5010E943A
+:100F2000D31A9B01AC01C801B7010E946F189A94B3
+:100F30009920E1F6DF91CF911F910F91FF90EF90F3
+:100F4000DF90CF90BF90AF909F9008950E941A07B6
+:100F500008950F931F938C010E941A07C8010E94E5
+:100F60006D061F910F910895813041F0813018F086
+:100F70008230D1F409C010926E00089580916F0004
+:100F80008D7F80936F000895809170008D7F809396
+:100F9000700081E08093B0008091B100887F846010
+:100FA0008093B1001092B30008951F93182F809181
+:100FB000A501811711F09FEF06C0E8E6F0E09491DB
+:100FC0008FEF8093A501892F0E94B407812F60E0E5
+:100FD0000E946F151F9108951F920F920FB60F92E6
+:100FE00011242F933F934F935F936F937F938F932E
+:100FF0009F93AF93BF93EF93FF9380917903909169
+:101000007A03A0917B03B0917C030097A105B10501
+:1010100051F1E0917D03F0917E03808190917F03F7
+:10102000892780838091790390917A03A0917B0333
+:10103000B0917C03181619061A061B06C4F4809199
+:10104000790390917A03A0917B03B0917C0301977F
+:10105000A109B1098093790390937A03A0937B034C
+:10106000B0937C0304C08091A5010E94D507FF9135
+:10107000EF91BF91AF919F918F917F916F915F9110
+:101080004F913F912F910F900FBE0F901F90189589
+:101090002F923F925F926F927F928F929F92AF9228
+:1010A000BF92CF92DF92EF92FF920F931F93DF9345
+:1010B000CF9300D000D0CDB7DEB7A82F1B01298376
+:1010C0003A834B835C838091A5018A1721F4E8E67B
+:1010D000F0E0549082C08F3F09F0D9C1A093A501E0
+:1010E000E8E6F0E054902FEF521609F4D0C181E009
+:1010F000581639F192E0591609F449C0552009F003
+:101100006CC014BC15BC84B5826084BD85B581609B
+:1011100085BD2A2F30E0F901E957FF4FE491F0E057
+:10112000EE0FFF1FED58FF4F859194919093700340
+:1011300080936F0325563F4FF9018491809371038B
+:101140004EC01092800010928100809181008860D2
+:1011500080938100809181008160809381002A2F9B
+:1011600030E0F901E957FF4FE491F0E0EE0FFF1F87
+:10117000ED58FF4F85919491909377038093760378
+:1011800025563F4FF90184918093780328C010922F
+:10119000B0001092B1008091B00082608093B000E6
+:1011A0008091B10081608093B1002A2F30E0F90175
+:1011B000E957FF4FE491F0E0EE0FFF1FED58FF4FAE
+:1011C0008591949190937E0380937D0325563F4FA4
+:1011D000F901849180937F0302C057FC58C18A2F84
+:1011E00061E00E941C15552021F0F2E05F1609F025
+:1011F000BDC031018824992460E079E08DE390E05E
+:10120000A40193010E94121E59016A018601750111
+:101210000894E108F108010911092FEFE216F10421
+:101220000105110509F008F498C060E271EA87E051
+:1012300090E0A40193010E94121E79018A01089492
+:10124000E108F1080109110982E05816C1F49FEF85
+:10125000E916F1040105110509F008F483C068E4FA
+:1012600078EE81E090E0A40193010E94121E7901C2
+:101270008A010894E108F1080109110983E0AFEF40
+:10128000EA16F1040105110509F008F467C064E2EB
+:1012900074EF80E090E0A40193010E94121E790196
+:1012A0008A010894E108F10801091109552011F497
+:1012B00083E01DC0B2E05B1611F084E018C0EFEFD0
+:1012C000EE16F1040105110509F008F4DEC062E133
+:1012D0007AE780E090E0A40193010E94121E790158
+:1012E0008A010894E108F1080109110985E0FFEF7E
+:1012F000EF16F1040105110589F180F169E07DE344
+:1013000080E090E0A40193010E94121E79018A01FD
+:101310000894E108F10801091109552011F086E04F
+:1013200001C084E02FEFE216F10401051105B1F0D0
+:10133000A8F0860175019AE016950795F794E79451
+:101340009A95D1F70894E108F1080109110955208F
+:1013500011F087E008C085E003C081E0552019F452
+:1013600085BD3AC082E08093B10036C05101CC24E3
+:10137000DD2460E079E08DE390E0A60195010E9414
+:10138000121E79018A010894E108F1080109110986
+:1013900080E0E81680E0F80681E0080780E01807A2
+:1013A00010F491E010C064E274EF80E090E0A601D8
+:1013B00095010E94121E79018A010894E108F10842
+:1013C0000109110993E0A1E05A1631F480918100DE
+:1013D000887F982B9093810089819A81AB81BC8111
+:1013E0000097A105B10529F48FEF9FEFAFEFBFEF95
+:1013F00013C0220C331CB10180E090E029813A81B6
+:101400004B815C810E94F31D28EE33E040E050E008
+:101410000E94121EC901DA01E1E05E16A1F0F2E0BD
+:101420005F1619F1552099F5E7BC80936B039093F3
+:101430006C03A0936D03B0936E0380916E00826085
+:1014400080936E0024C0F0928900E092880080931F
+:10145000720390937303A0937403B0937503809108
+:101460006F00826080936F0012C0E092B30080939F
+:10147000790390937A03A0937B03B0937C038091CC
+:10148000700082608093700002C084E06CCF0F9087
+:101490000F900F900F90CF91DF911F910F91FF90C0
+:1014A000EF90DF90CF90BF90AF909F908F907F9004
+:1014B0006F905F903F902F900895823000F5E82F55
+:1014C000F0E0EE0FFF1FE058FC4F7183608388232C
+:1014D00019F08130A1F408C0809169008C7F842BC1
+:1014E00080936900E89A089580916900440F551F20
+:1014F000440F551F837F842B80936900E99A0895D8
+:10150000823080F4882319F0813021F402C0E898F9
+:1015100001C0E998E82FF0E0EE0FFF1FE058FC4F04
+:101520001182108208951F920F920FB60F9211240C
+:101530002F933F934F935F936F937F938F939F93DB
+:10154000AF93BF93EF93FF938091800390918103BA
+:10155000892B29F0E0918003F09181030995FF9197
+:10156000EF91BF91AF919F918F917F916F915F911B
+:101570004F913F912F910F900FBE0F901F90189594
+:101580001F920F920FB60F9211242F933F934F93F8
+:101590005F936F937F938F939F93AF93BF93EF93DB
+:1015A000FF938091820390918303892B29F0E0912E
+:1015B0008203F09183030995FF91EF91BF91AF9161
+:1015C0009F918F917F916F915F914F913F912F915B
+:1015D0000F900FBE0F901F9018952F923F924F9231
+:1015E0005F926F927F928F929F92AF92BF92CF92B3
+:1015F000DF92EF92FF920F931F93DF93CF93CDB7BC
+:10160000DEB73B014C0119012A016D897E898F8962
+:10161000988D6A197B098C099D09621A730A840ADC
+:10162000950AA40193010E94F31DE218F30804092E
+:101630001509A80197010E94341E2A0D3B1D4C1D5F
+:101640005D1DB901CA01CF91DF911F910F91FF90EC
+:10165000EF90DF90CF90BF90AF909F908F907F9052
+:101660006F905F904F903F902F900895089570E095
+:10167000382F20E0622B732BCB010895EF92FF925D
+:101680000F931F937B018C016115710581059105F5
+:1016900029F420E030E040E050E00BC00E94E41F5D
+:1016A000A80197010E94341EAC01CB01DA019C0114
+:1016B000AD01B901CA011F910F91FF90EF900895FC
+:1016C000EF92FF920F931F937B018C0162177307B8
+:1016D0008407950764F4261B370B480B590BCA0186
+:1016E000B9010E943E0BE60EF71E081F191FB70135
+:1016F000C8011F910F91FF90EF900895009729F076
+:10170000BC0180E090E00E94E91F0895FC01019077
+:10171000F081E02DE60FF71F80810895DC01ED9147
+:10172000FC911197309751F014968D919C911597DB
+:101730006817790718F4E60FF71F40830895FC0136
+:101740009B01848195816817790728F460817181F4
+:101750006115710529F41092840364E873E002C0F6
+:10176000620F731FCB010895FC010190F081E02D01
+:10177000E60FF71F80810895FC01808191810E940E
+:10178000C02008950F931F93CF93DF93FC018B012B
+:1017900041155105A1F06115710589F0848195818C
+:1017A000EA0121978C179D0708F4EC016081718193
+:1017B000C801AE010E943C21C00FD11F1882DF91E9
+:1017C000CF911F910F9108950F931F93CF93DF93A4
+:1017D000FC018B0141155105A1F06115710589F0DE
+:1017E00084819581EA0121978C179D0708F4EC010B
+:1017F00060817181C801AE010E943C21C00FD11FE0
+:101800001882DF91CF911F910F9108950F931F932D
+:101810008C01FC01808191810E94391FF8011382A3
+:101820001282158214821F910F910895FC01DB0131
+:1018300014962D913C91159784819581821B930B71
+:101840008417950710F480E00895808191816D914F
+:101850007C91840F951FA9010E942E219C0180E09C
+:10186000232B09F481E00895FC01DB0124813581FB
+:1018700014968D919C9115972817390710F480E0E4
+:101880000895CF0140E050E00E94160C0895DF92C9
+:10189000EF92FF920F931F93CF93DF93EC018C8114
+:1018A0009D8148175907C8F47A010894E11CF11C7E
+:1018B000E881F981EE0DFF1DD08010820881198129
+:1018C000772767FD7095C8010E944B219C010E0D82
+:1018D0001F1DF801D082009719F4EFEFFFEF05C04C
+:1018E00088819981F901E81BF90BCF01DF91CF9134
+:1018F0001F910F91FF90EF90DF900895FC014481BC
+:101900005581415050400E94470C0895CF93DF937A
+:10191000FC01DB01848195814817590760F4C0817F
+:10192000D1816D917C91CE01840F951F0E9456212B
+:101930009C01009719F42FEF3FEF02C02C1B3D0BC9
+:10194000C901DF91CF91089540E050E00E94860CDC
+:101950000895CF93DF93FC0184819581481759073F
+:1019600068F4C081D181772767FD7095CE01840F1F
+:10197000951F0E9413219C01009719F42FEF3FEF50
+:1019800002C02C1B3D0BC901DF91CF91089540E0AF
+:1019900050E00E94A90C0895DC01FB0114962D91E2
+:1019A0003C911597848195812817390711F080E0C3
+:1019B0000895608171818D919C910E941E219C01EE
+:1019C00080E0232B09F481E00895FC01DB012481F0
+:1019D000358114968D919C9115972817390710F42D
+:1019E00080E00895281B390B808191816D917C9155
+:1019F000820F931F0E941E219C0180E0232B09F47B
+:101A000081E00895DC01FB01608171818D919C91E1
+:101A10000E941E21292F332727FD309520953095D0
+:101A20002227330F221F3327C9010895DC01FB0150
+:101A3000608171818D919C910E941E2140E050E057
+:101A40001816190614F041E050E0CA010895DC01AF
+:101A5000FB01608171818D919C910E941E2140E06B
+:101A600050E01816190614F441E050E0CA01089538
+:101A7000DC01FB01608171818D919C910E941E218E
+:101A8000292F332727FD30952227330F221F332795
+:101A9000C9010895DC01FB0114962D913C91159725
+:101AA000848195812817390751F4608171818D9166
+:101AB0009C910E941E219C0180E0232B09F081E073
+:101AC00090E00895DC01FB0114962D913C9115974F
+:101AD000848195812817390711F080E00BC060815F
+:101AE00071818D919C910E941E219C0180E0232B8D
+:101AF00009F481E090E00895FC01DB016D917C9197
+:101B0000808191810E941E2108950F931F93CF938E
+:101B1000DF93EC018B01FB01648175818C819D81D8
+:101B2000680F791F7D836C838A819B818617970755
+:101B3000B8F46F5F7F4F888199810E94F21F4C81BA
+:101B40005D81009729F0998388835B834A8308C06D
+:101B5000F80184819581481B590B5D834C8307C034
+:101B6000F80160817181888199810E940821CE01EC
+:101B7000DF91CF911F910F9108950E94850D0895D7
+:101B8000CF93DF93EC01CB017B836A8301960E94A4
+:101B90008C1E99838883009721F41B821A821D82F0
+:101BA0001C82DF91CF9108950F931F93CF93DF9302
+:101BB000EC018B018617970709F1FB012481358120
+:101BC0008C819D818217930750F4888199810E94AE
+:101BD000391FF80164817581CE010E94C00D2881F2
+:101BE00039812115310551F0F801848195819D835A
+:101BF0008C8360817181C9010E942721CE01DF9110
+:101C0000CF911F910F9108951F93CF93DF93EC0114
+:101C1000162F81E090E09D838C83CE0161E070E01F
+:101C20000E94C00DE881F981309721F01083E8818E
+:101C3000F9811182DF91CF911F9108951F93CF9366
+:101C4000DF93EC01162F81E090E09D838C83CE0121
+:101C500061E070E00E94C00DE881F981309721F0C9
+:101C60001083E881F9811182DF91CF911F9108954E
+:101C70001F93CF93DF93EC01162F81E090E09D83BB
+:101C80008C83CE0161E070E00E94C00DE881F98193
+:101C9000309721F01083E881F9811182DF91CF9193
+:101CA0001F9108951F93CF93DF93EC01162F81E0CE
+:101CB00090E09D838C83CE0161E070E00E94C00DB6
+:101CC000E881F981309721F01083E881F981118250
+:101CD000DF91CF911F9108950F931F93CF93DF93BF
+:101CE0008C01EB016C817D81FC01758364830E9412
+:101CF000C00DF80180819181009721F06881798180
+:101D00000E942721DF91CF911F910F9108950F938A
+:101D10001F93CF93DF938C01EB016C817D81FC01DC
+:101D2000758364830E94C00DF801808191810097C2
+:101D300021F0688179810E942721DF91CF911F9145
+:101D40000F910895EF92FF920F931F93DF93CF931C
+:101D5000CDB7DEB7A1970FB6F894DEBF0FBECDBFEB
+:101D60008C01CB01BA017E010894E11CF11CA70192
+:101D70002AE030E00E94DA21F70101900020E9F723
+:101D80003197EE19FF09D8011596FC93EE9314973D
+:101D9000C801BF010E94C00DF801808191810097A8
+:101DA00019F0B7010E942721A1960FB6F894DEBF63
+:101DB0000FBECDBFCF91DF911F910F91FF90EF909C
+:101DC0000895EF92FF920F931F93DF93CF93CDB7B8
+:101DD000DEB7A1970FB6F894DEBF0FBECDBF8C0162
+:101DE000CB01BA017E010894E11CF11CA7012AE095
+:101DF00030E00E94DA21F70101900020E9F73197E5
+:101E0000EE19FF09D8011596FC93EE931497C801BB
+:101E1000BF010E94C00DF80180819181009719F0E7
+:101E2000B7010E942721A1960FB6F894DEBF0FBE1E
+:101E3000CDBFCF91DF911F910F91FF90EF9008954B
+:101E4000EF92FF920F931F93DF93CF93CDB7DEB73F
+:101E5000A1970FB6F894DEBF0FBECDBF8C019A01DB
+:101E600080E090E07E010894E11CF11CA7010E9433
+:101E7000DA21F70101900020E9F73197EE19FF0907
+:101E8000D8011596FC93EE931497C801BF010E94E8
+:101E9000C00DF80180819181009719F0B7010E946F
+:101EA0002721A1960FB6F894DEBF0FBECDBFCF910C
+:101EB000DF911F910F91FF90EF900895EF92FF92A5
+:101EC0000F931F93DF93CF93CDB7DEB7A1970FB6D4
+:101ED000F894DEBF0FBECDBF8C019A0180E090E088
+:101EE0007E010894E11CF11CA7010E94DA21F70190
+:101EF00001900020E9F73197EE19FF09D8011596F6
+:101F0000FC93EE931497C801BF010E94C00DF80125
+:101F100080819181009719F0B7010E942721A19635
+:101F20000FB6F894DEBF0FBECDBFCF91DF911F91EA
+:101F30000F91FF90EF9008950F931F93CF93DF932E
+:101F40008C01EB016115710511F4C6EAD1E0FE01C7
+:101F500001900020E9F73197EC1BFD0BD801159695
+:101F6000FC93EE931497C801BF010E94C00DF801C5
+:101F700080819181009719F0BE010E942721DF9195
+:101F8000CF911F910F910895AF92BF92CF92DF92A0
+:101F9000EF92FF920F931F93CF93DF93B82EA92E4A
+:101FA0006B01C82FD92FFB0160817181CE010E9486
+:101FB0009C0FEE24FF2410C0088119810E0D1F1DF7
+:101FC000F8018081992787FD90950E94F720F801FC
+:101FD00080830894E11CF11CF60184819581E81648
+:101FE000F90650F38B2D9A2DDF91CF911F910F9110
+:101FF000FF90EF90DF90CF90BF90AF900895AF9299
+:10200000BF92CF92DF92EF92FF920F931F93CF93E5
+:10201000DF93B82EA92E6B01C82FD92FFB01608149
+:102020007181CE010E949C0FEE24FF2410C0088114
+:1020300019810E0D1F1DF8018081992787FD90954C
+:102040000E94EF20F80180830894E11CF11CF60146
+:1020500084819581E816F90650F38B2D9A2DDF9136
+:10206000CF911F910F91FF90EF90DF90CF90BF9095
+:10207000AF900895EF92FF920F931F93DF93CF934A
+:10208000CDB7DEB72C970FB6F894DEBF0FBECDBF2D
+:10209000FC017B018617970711F401E029C0248118
+:1020A0003581DB0114968D919C911597281739077E
+:1020B00011F000E01DC0CE010196BF010E94FF0F8C
+:1020C00009811A81CE010796B7010E94FF0F6F8127
+:1020D0007885C8010E941E2100E0009709F401E004
+:1020E000CE0107960E94060CCE0101960E94060CB6
+:1020F000802F2C960FB6F894DEBF0FBECDBFCF91C8
+:10210000DF911F910F91FF90EF900895CF92DF9292
+:10211000EF92FF921F93CF93DF936C017B01B90184
+:102120002417350710F4BA01A901D70114968D912F
+:102130009C911597EB018617970708F4EC01D701DE
+:10214000ED91FC911197EC0FFD1F108110826D91A4
+:102150007C91640F751FC6010E949C0FD701ED9101
+:10216000FC91EC0FFD1F1083C601DF91CF911F91F1
+:10217000FF90EF90DF90CF9008950F931F938C0105
+:10218000FB01248135810E948610C8011F910F91A7
+:1021900008958F929F92AF92BF92CF92DF92EF926B
+:1021A000FF920F931F93DF93CF9300D000D000D006
+:1021B000CDB7DEB75C016B01DB0114968D919C916C
+:1021C00015970097A1F101974817590780F1F5017C
+:1021D000848195814817590750F5ED91FC91008154
+:1021E0007A014E010894811C911C1FC0D501ED910C
+:1021F000FC91EE0DFF1D80818017A1F4F601248172
+:1022000035812E0D3F1DC401B501A7010E94861026
+:10221000C401B6010E94CC0C182FC4010E94060C08
+:10222000112341F40894E108F108F7FEDFCFEE2412
+:10223000EA94FE2CC70126960FB6F894DEBF0FBEB7
+:10224000CDBFCF91DF911F910F91FF90EF90DF9065
+:10225000CF90BF90AF909F908F900895FC01DB01CD
+:102260004481558114968D919C911597481B590B6B
+:10227000CF010E94C9100895AF92BF92CF92DF9212
+:10228000EF92FF920F931F93DF93CF9300D000D074
+:1022900000D0CDB7DEB75C018B01DB016D917C9185
+:1022A0006115710521F4B8010E946C0E42C0CE0187
+:1022B00001960E949C0FF801E480F580CC24DD2477
+:1022C00010C0D801ED91FC91EC0DFD1D8081992786
+:1022D00087FD90950E94E720892B31F00894C11C5E
+:1022E000D11CCE14DF0468F3ED80FE800DC0D80150
+:1022F000ED91FC91EE0DFF1D8081992787FD909552
+:102300000E94E720892B31F00894E108F108CE14EF
+:10231000DF0468F30894E11CF11CC5018E010F5F16
+:102320001F4FB801A60197010E948610C8010E94A4
+:10233000060CC50126960FB6F894DEBF0FBECDBFC2
+:10234000CF91DF911F910F91FF90EF90DF90CF9091
+:10235000BF90AF9008952F923F924F925F926F92ED
+:102360007F928F929F92AF92BF92CF92DF92EF9225
+:10237000FF920F931F93DF93CF93CDB7DEB768978C
+:102380000FB6F894DEBF0FBECDBF3C01FB012A01A2
+:102390001901608171816115710521F4BF010E94ED
+:1023A0006C0E5AC07E010894E11CF11CC7010E940A
+:1023B0009C0F8E01095F1F4FC80166EA71E00E9401
+:1023C0009C0FD02EC12E3DE0832E912C8C0E9D1E95
+:1023D00023E1A22EB12CAC0EBD1E24C0C401B70156
+:1023E00040E050E098010E9486108D2D9C2DB40194
+:1023F0000E94850DC4010E94060C8D2D9C2DB101FB
+:102400000E94850DF20144815581400F511FC50185
+:10241000B7010E94BD10C701B5010E94D40DC501CE
+:102420000E94060CC701B2010E94A40C8C01FFEFB0
+:102430008F3F9F0799F68D2D9C2DB7010E94850D2A
+:10244000C3016D2D7C2D0E946C0E8D2D9C2D0E9444
+:10245000060CC7010E94060CC30168960FB6F894DB
+:10246000DEBF0FBECDBFCF91DF911F910F91FF90C7
+:10247000EF90DF90CF90BF90AF909F908F907F9024
+:102480006F905F904F903F902F900895DF92EF9262
+:10249000FF920F931F93DF93CF9300D000D000D013
+:1024A000CDB7DEB77C01FB01142FD22E6081718184
+:1024B0006115710521F4BF010E946C0E1CC0CE0194
+:1024C00001960E949C0F89819A81012F112707FD97
+:1024D000109501C0D082B8010E941321FC01009721
+:1024E000C9F7C7018E010F5F1F4FB8010E946C0E24
+:1024F000C8010E94060CC70126960FB6F894DEBFED
+:102500000FBECDBFCF91DF911F910F91FF90EF9044
+:10251000DF9008950F931F93CF93DF938C01EB010E
+:102520006115710511F4C6EAD1E0FE0101900020A9
+:10253000E9F73197EC1BFD0BD8011596FC93EE9350
+:102540001497C801BF010E94C00DF80180819181DC
+:10255000009719F0BE010E942721DF91CF911F91B2
+:102560000F910895EF92FF920F931F93DF93CF93F4
+:10257000CDB7DEB7A1970FB6F894DEBF0FBECDBFC3
+:102580008C01CB01BA017E010894E11CF11CA7016A
+:102590000E949121F70101900020E9F73197EE198F
+:1025A000FF09D8011596FC93EE931497C801BF015B
+:1025B0000E94C00DF80180819181009719F0B70148
+:1025C0000E942721A1960FB6F894DEBF0FBECDBFA3
+:1025D000CF91DF911F910F91FF90EF900895EF92AF
+:1025E000FF920F931F93DF93CF93CDB7DEB7A197E1
+:1025F0000FB6F894DEBF0FBECDBF8C01CB01BA0180
+:102600007E010894E11CF11CA7010E949121F701B1
+:1026100001900020E9F73197EE19FF09D8011596CE
+:10262000FC93EE931497C801BF010E94C00DF801FE
+:1026300080819181009719F0B7010E942721A1960E
+:102640000FB6F894DEBF0FBECDBFCF91DF911F91C3
+:102650000F91FF90EF900895EF92FF920F931F93C9
+:10266000DF93CF93CDB7DEB7A1970FB6F894DEBF57
+:102670000FBECDBF8C01CB017E010894E11CF11C83
+:10268000B7010E947021F70101900020E9F731970E
+:10269000EE19FF09D8011596FC93EE931497C80123
+:1026A000BF010E94C00DF80180819181009719F04F
+:1026B000B7010E942721A1960FB6F894DEBF0FBE86
+:1026C000CDBFCF91DF911F910F91FF90EF900895B3
+:1026D000EF92FF920F931F93DF93CF93CDB7DEB7A7
+:1026E000A1970FB6F894DEBF0FBECDBF8C01CB0112
+:1026F0007E010894E11CF11CB7010E947021F701D2
+:1027000001900020E9F73197EE19FF09D8011596DD
+:10271000FC93EE931497C801BF010E94C00DF8010D
+:1027200080819181009719F0B7010E942721A1961D
+:102730000FB6F894DEBF0FBECDBFCF91DF911F91D2
+:102740000F91FF90EF9008951F920F920FB60F9286
+:1027500011242F933F934F935F936F937F938F93A6
+:102760009F93AF93BF932091890330918A03409147
+:102770008B0350918C0370918D03DA01C90102968D
+:10278000A11DB11D672F6A5F6D3730F06D57DA01FB
+:10279000C9010396A11DB11D60938D038093890328
+:1027A00090938A03A0938B03B0938C03809185034D
+:1027B00090918603A0918703B09188030196A11D93
+:1027C000B11D8093850390938603A0938703B093F4
+:1027D0008803BF91AF919F918F917F916F915F918E
+:1027E0004F913F912F910F900FBE0F901F90189512
+:1027F0008FB7F8942091890330918A0340918B031D
+:1028000050918C038FBFB901CA0108959FB7F89406
+:10281000209185033091860340918703509188036E
+:1028200086B5A89B06C08F3F21F02F5F3F4F4F4FCB
+:102830005F4F9FBF542F432F322F2227280F311D68
+:10284000411D511D83E0220F331F441F551F8A95E0
+:10285000D1F7B901CA010895EF92FF920F931F9328
+:10286000CF93DF937B018C010E940614EB010EC015
+:102870000E9406146C1B7D0B685E7340C8F30894BD
+:10288000E108F10801091109C851DC4FE114F10414
+:102890000105110569F7DF91CF911F910F91FF900D
+:1028A000EF900895019739F0019729F0880F991F4B
+:1028B00001970197F1F70895789484B5826084BDFB
+:1028C00084B5816084BD85B5826085BD85B5816034
+:1028D00085BDEEE6F0E0808181608083E1E8F0E094
+:1028E0001082808182608083808181608083E0E8C3
+:1028F000F0E0808181608083E1EBF0E080818460A2
+:102900008083E0EBF0E0808181608083EAE7F0E0A3
+:102910008081846080838081826080838081816007
+:1029200080838081806880831092C10008958093A5
+:10293000A7010895982F8E3008F09E5097708091CF
+:10294000A7018295880F880F807C892B80937C005B
+:1029500080917A00806480937A0080917A0086FD6D
+:10296000FCCF2091780040917900942F80E030E0F6
+:10297000282B392BC90108951F93CF93DF93182F6C
+:10298000EB0161E00E941C15209709F44AC0CF3F7B
+:10299000D10509F449C0E12FF0E0E155FF4F8491E2
+:1029A0008330C1F0843028F4813051F08230B1F5A9
+:1029B0000CC0863019F1873049F1843079F514C0A4
+:1029C00084B5806884BDC7BD33C084B5806284BDD2
+:1029D000C8BD2EC080918000806880938000D09315
+:1029E0008900C093880024C0809180008062809319
+:1029F0008000D0938B00C0938A001AC08091B000F1
+:102A000080688093B000C093B30012C08091B00082
+:102A100080628093B000C093B4000AC0C038D10572
+:102A20001CF4812F60E002C0812F61E00E946F15CD
+:102A3000DF91CF911F910895482F50E0CA0185562C
+:102A40009F4FFC01249149575F4FFA0184918823DD
+:102A5000C1F0E82FF0E0EE0FFF1FE759FF4FA591FF
+:102A6000B491662341F49FB7F8948C91209582230A
+:102A70008C939FBF08959FB7F8948C91822B8C9371
+:102A80009FBF0895833071F0843028F48130A1F025
+:102A9000823021F514C08630B1F08730D1F0843017
+:102AA000E9F404C0809180008F7703C0809180009A
+:102AB0008F7D80938000089584B58F7702C084B5A0
+:102AC0008F7D84BD08958091B0008F778093B00092
+:102AD00008958091B0008F7D8093B0000895FF929B
+:102AE0000F931F93F62E482F50E0CA0181559F4F38
+:102AF000FC012491CA0185569F4FFC01149149574E
+:102B00005F4FFA0104910023D9F0222319F0822F9C
+:102B10000E944215E02FF0E0EE0FFF1FED58FF4F2F
+:102B2000A591B491FF2031F49FB7F8948C91109542
+:102B3000812304C09FB7F8948C91812B8C939FBF05
+:102B40001F910F91FF9008950F931F93482F50E00E
+:102B5000CA0181559F4FFC012491CA0185569F4FA0
+:102B6000FC01049149575F4FFA011491112319F4A4
+:102B700020E030E015C0222319F0822F0E94421578
+:102B8000812F90E0880F991F83589F4FFC01A591DA
+:102B9000B4918C9120E030E0802311F021E030E00E
+:102BA000C9011F910F9108958F929F92AF92BF928A
+:102BB000CF92DF92EF92FF920F931F93CF93DF9309
+:102BC000A82FB0E0CD0185569F4FFC018490A957F6
+:102BD000BF4FFD01D490662311F4992401C0982CB5
+:102BE000CA01B90120E43FE140E050E00E94F31D3A
+:102BF00020E83EE340E050E00E94121E79018A0185
+:102C00006D2D70E0660F771F63587F4FAA24BB2499
+:102C10006501FB01A591B4910BC0AE14BF04C006C1
+:102C2000D10609F44FC00894A11CB11CC11CD11CD1
+:102C30008C918821891589F30CC0AE14BF04C0069D
+:102C4000D10609F43FC00894A11CB11CC11CD11CC1
+:102C500003C0FB01A591B4918C918821891569F776
+:102C600020E030E040E050E0FB01C591D4910FC07E
+:102C7000DA01C9018A0D9B1DAC1DBD1D8E159F0576
+:102C8000A007B107F9F02F5F3F4F4F4F5F4F88818B
+:102C90008821891569F3CA01B90128E032E540E0CD
+:102CA00050E00E94F31D6058714C8F4F9F4F20E4FD
+:102CB0003FE140E050E00E94121EC901DA019C0190
+:102CC000AD0104C020E030E040E050E0B901CA01AD
+:102CD000DF91CF911F910F91FF90EF90DF90CF90F8
+:102CE000BF90AF909F908F900895BF92CF92DF9248
+:102CF000EF92FF920F931F93CF93DF93E82EF62E60
+:102D0000B42EC7E0D0E0022F10E087E0C82ED12C0F
+:102D1000BB2059F4B6016C1B7D0BC80102C0959510
+:102D200087956A95E2F7BC0107C0B8010C2E02C076
+:102D3000759567950A94E2F761708E2D0E946F1564
+:102D40008F2D61E00E946F158F2D60E00E946F153E
+:102D500021979FEFCF3FD907D9F6DF91CF911F91F0
+:102D60000F91FF90EF90DF90CF90BF900895CF929A
+:102D7000DF92EF92FF920F931F93CF93DF93F82E82
+:102D8000062FE42E10E0C7E0D0E097E0C92ED12C4A
+:102D9000802F61E00E946F15EE2061F48F2D0E945C
+:102DA000A41596012C1B3D0B02C0880F991F2A9574
+:102DB000E2F709C08F2D0E94A4150C2E02C0880FC7
+:102DC000991F0A94E2F7182B802F60E00E946F157C
+:102DD00021978FEFCF3FD807D9F6812FDF91CF9181
+:102DE0001F910F91FF90EF90DF90CF900895EF9299
+:102DF000FF920F931F937B018C0120E030E040E0B5
+:102E00005FE40E94731A88238CF0C801B70120E0A8
+:102E100030E040E05FE40E946F180E94311B9B018C
+:102E2000AC01205030404040504806C0C801B701B6
+:102E30000E94311B9B01AC01B901CA011F910F9186
+:102E4000FF90EF900895A0E0B0E0E9E2F7E10C9484
+:102E50004F1EDC012B01FA019C91923008F439C11C
+:102E6000EB018881823008F433C1943069F48430F6
+:102E700009F02FC111969C9111978981981709F437
+:102E800028C1A8EAB1E025C1843009F421C182300B
+:102E9000A9F4923009F01DC19A01AD0188E0EA0160
+:102EA0000990AE01E90109929E018150C1F7E2014A
+:102EB000898111969C918923818308C1923009F4FC
+:102EC00007C112962D903C901397EB018A819B814C
+:102ED0001496AD90BD90CD90DC901797EC80FD805E
+:102EE0000E811F819101281B390BB90137FF04C0E6
+:102EF00066277727621B730B603271050CF061C087
+:102F0000121613066CF537014801062E04C096947C
+:102F10008794779467940A94D2F721E030E040E0F8
+:102F200050E004C0220F331F441F551F6A95D2F78B
+:102F300021503040404050402E213F21402351231A
+:102F4000211531054105510521F021E030E040E037
+:102F500050E079018A01E628F728082919293CC0A0
+:102F6000232BD1F1260E371E35014601062E04C053
+:102F700096948794779467940A94D2F721E030E08E
+:102F800040E050E004C0220F331F441F551F6A95D4
+:102F9000D2F721503040404050402A213B214C2163
+:102FA0005D21211531054105510521F021E030E079
+:102FB00040E050E059016A01A628B728C828D9285E
+:102FC0000BC0821593052CF01C01AA24BB246501BB
+:102FD00003C0EE24FF24870111969C91D201119623
+:102FE0008C91981709F445C0992339F0A8019701ED
+:102FF0002A193B094C095D0906C0A60195012E1945
+:103000003F09400B510B57FD08C0118233822282C9
+:1030100024833583468357831DC081E081833382B7
+:10302000228288279927DC01821B930BA40BB50B06
+:1030300084839583A683B7830DC0220F331F441F5B
+:10304000551F24833583468357838281938101975B
+:10305000938382832481358146815781DA01C901B6
+:103060000197A109B1098F5F9F4FAF4FBF4328F36D
+:103070000BC0918333822282EA0CFB1C0C1D1D1DA8
+:10308000E482F5820683178383E08083248135817F
+:103090004681578157FF1AC0C901AA2797FDA095FD
+:1030A000BA2F81709070A070B07056954795379583
+:1030B0002795822B932BA42BB52B84839583A683F2
+:1030C000B78382819381019693838283DF0101C05C
+:1030D000D201CD01CDB7DEB7E2E10C946B1EA0E2C8
+:1030E000B0E0E5E7F8E10C945B1E69837A838B839B
+:1030F0009C832D833E834F835887E9E0EE2EF12C8D
+:10310000EC0EFD1ECE010196B7010E94221D8E011C
+:103110000F5E1F4FCE010596B8010E94221D8A89BD
+:1031200091E089278A8BC701B801AE01475E5F4FE6
+:103130000E9423170E944D1CA096E6E00C94771E77
+:10314000A0E2B0E0E6EAF8E10C945B1E69837A83C2
+:103150008B839C832D833E834F835887F9E0EF2E2A
+:10316000F12CEC0EFD1ECE010196B7010E94221D2E
+:103170008E010F5E1F4FCE010596B8010E94221DE1
+:10318000C701B801AE01475E5F4F0E9423170E943E
+:103190004D1CA096E6E00C94771EA0E2B0E0E3EDB3
+:1031A000F8E10C944F1E69837A838B839C832D8373
+:1031B0003E834F835887CE010196BE01675F7F4FE4
+:1031C0000E94221DCE010596BE016F5E7F4F0E94B8
+:1031D000221D9985923088F089898230C8F0943018
+:1031E00019F4823051F404C0843029F4923081F40F
+:1031F00088EA91E0C6C0923049F420E09A858A8935
+:10320000981321E02A87CE010996BBC0823049F489
+:1032100020E09A858A89981321E02A8BCE01419675
+:10322000B0C02D843E844F8458886D887E888F88F6
+:10323000988CEE24FF248701AA24BB24650140E07A
+:1032400050E060E070E0E0E0F0E0C101817090707B
+:10325000892BE9F0E60CF71C081D191D9A01AB013A
+:103260002A0D3B1D4C1D5D1D80E090E0A0E0B0E00C
+:10327000E614F7040805190520F481E090E0A0E0C9
+:10328000B0E0BA01A901480F591F6A1F7B1FAA0CA1
+:10329000BB1CCC1CDD1C97FE08C081E090E0A0E0C8
+:1032A000B0E0A82AB92ACA2ADB2A3196E032F10511
+:1032B00049F0660C771C881C991C569447943794E7
+:1032C0002794C3CFFA85EA892B893C898B859C8515
+:1032D000280F391F2E5F3F4F17C0CA0181709070B1
+:1032E000892B61F016950795F794E79480E090E0BC
+:1032F000A0E0B0E8E82AF92A0A2B1B2B76956795FF
+:10330000579547952F5F3F4F77FDE7CF0CC0440F90
+:10331000551F661F771F17FD4160EE0CFF1C001F35
+:10332000111F21503040403090E0590790E069076C
+:1033300090E4790760F32B8F3C8FDB01CA018F7714
+:103340009070A070B07080349105A105B10561F452
+:1033500047FD0AC0E114F1040105110529F0405CA4
+:103360005F4F6F4F7F4F40781A8EFE1711F081E04C
+:103370008A8F4D8F5E8F6F8F78A383E0898FCE0108
+:1033800049960E944D1CA096E2E10C946B1EA8E1A8
+:10339000B0E0EDECF9E10C94571E69837A838B83DE
+:1033A0009C832D833E834F835887B9E0EB2EF12C0D
+:1033B000EC0EFD1ECE010196B7010E94221D8E016A
+:1033C0000F5E1F4FCE010596B8010E94221D298570
+:1033D000223008F47EC03989323010F4B8017CC044
+:1033E0008A859A8989278A87243011F0223031F41E
+:1033F000231709F06EC068EA71E06EC0343039F40A
+:103400001D861E861F86188A1C861B8604C03230C5
+:1034100021F484E08987B7015FC02B853C858B89C7
+:103420009C89281B390B3C872B87ED84FE840F85F4
+:103430001889AD88BE88CF88D88CEA14FB040C05A7
+:103440001D0540F4EE0CFF1C001F111F21503040E1
+:103450003C872B8720E030E040E050E080E090E0C7
+:10346000A0E0B0E460E070E0EA14FB040C051D0588
+:1034700040F0282B392B4A2B5B2BEA18FB080C0950
+:103480001D09B695A79597958795EE0CFF1C001F13
+:10349000111F6F5F7F4F6F31710531F7DA01C9017D
+:1034A0008F779070A070B07080349105A105B10540
+:1034B00061F427FD0AC0E114F1040105110529F0AA
+:1034C000205C3F4F4F4F5F4F20782D873E874F87BF
+:1034D000588BBE01675F7F4FCB010E944D1C6896E1
+:1034E000EAE00C94731EA8E1B0E0E9E7FAE10C947D
+:1034F0005B1E69837A838B839C832D833E834F83FA
+:10350000588789E0E82EF12CEC0EFD1ECE010196C5
+:10351000B7010E94221D8E010F5E1F4FCE0105963E
+:10352000B8010E94221D8985823040F0898982304D
+:1035300028F0C701B8010E949A1D01C08FEF68965C
+:10354000E6E00C94771EA8E1B0E0E9EAFAE10C9419
+:103550005B1E69837A838B839C832D833E834F8399
+:10356000588789E0E82EF12CEC0EFD1ECE01019665
+:10357000B7010E94221D8E010F5E1F4FCE010596DE
+:10358000B8010E94221D8985823040F089898230ED
+:1035900028F0C701B8010E949A1D01C081E0689619
+:1035A000E6E00C94771EA8E0B0E0E9EDFAE10C94B7
+:1035B000581E9B01AC0183E08983DA01C901882789
+:1035C000B7FD83959927AA27BB27B82E211531056A
+:1035D0004105510519F482E089833AC08823A9F096
+:1035E000203080E0380780E0480780E8580729F459
+:1035F00060E070E080E09FEC30C0EE24FF248701A3
+:10360000E21AF30A040B150B02C079018A018EE15C
+:10361000C82ED12CDC82CB82ED82FE820F831887EC
+:10362000C801B7010E94FE1B01971816190684F401
+:10363000082E04C0EE0CFF1C001F111F0A94D2F7C5
+:10364000ED82FE820F831887C81AD90ADC82CB82EA
+:10365000BA82CE0101960E944D1C2896E9E00C9496
+:10366000741EACE0B0E0E7E3FBE10C945F1E6983FD
+:103670007A838B839C83CE010196BE016B5F7F4F63
+:103680000E94221D8D81823061F1823050F18430A0
+:1036900021F48E81882351F12EC02F81388537FD8A
+:1036A00020C06E812F3131051CF06623F9F023C054
+:1036B0008EE190E0821B930B29853A854B855C85D2
+:1036C00004C056954795379527958A95D2F7662376
+:1036D000B1F050954095309521953F4F4F4F5F4F3A
+:1036E0000EC020E030E040E050E009C02FEF3FEF97
+:1036F0004FEF5FE704C020E030E040E050E8B90160
+:10370000CA012C96E2E00C947B1EA8E0B0E0EBE846
+:10371000FBE10C94571E7B018C016115710581053D
+:10372000910519F482E0898360C083E089838EE18A
+:10373000C82ED12CDC82CB82ED82FE820F831887CB
+:10374000C801B7010E94FE1BFC013197F7FF3BC087
+:10375000222733272E1B3F0B57016801022E04C07E
+:10376000D694C794B794A7940A94D2F740E050E057
+:1037700060E070E081E090E0A0E0B0E004C0880F7D
+:10378000991FAA1FBB1F2A95D2F70197A109B1095A
+:103790008E219F21A023B1230097A105B10521F01F
+:1037A00041E050E060E070E04A295B296C297D2906
+:1037B0004D835E836F8378878EE190E08E1B9F0B35
+:1037C0009C838B8312C0309781F00E2E04C0EE0CC8
+:1037D000FF1C001F111F0A94D2F7ED82FE820F8397
+:1037E0001887CE1ADF0ADC82CB821A82CE010196BC
+:1037F0000E944D1C2896EAE00C94731EEF92FF92F3
+:103800000F931F937B018C0180E0E81680E0F8069F
+:1038100081E0080780E0180788F48FEFE816F104CC
+:103820000105110531F028F088E090E0A0E0B0E05B
+:1038300017C080E090E0A0E0B0E012C080E0E816A1
+:1038400080E0F80680E0080781E0180728F088E1AA
+:1038500090E0A0E0B0E004C080E190E0A0E0B0E043
+:1038600020E230E040E050E0281B390B4A0B5B0BB4
+:1038700004C016950795F794E7948A95D2F7F70157
+:10388000E055FE4F8081281B310941095109C901CA
+:103890001F910F91FF90EF900895DF92EF92FF92AA
+:1038A0000F931F93FC01E480F58006811781D1807E
+:1038B0008081823048F480E090E0A0E1B0E0E82A26
+:1038C000F92A0A2B1B2BA5C0843009F49FC0823033
+:1038D00021F4EE24FF24870105C0E114F104010561
+:1038E000110519F4E0E0F0E096C0628173819FEF6A
+:1038F000623879070CF05BC022E83FEF261B370BDC
+:103900002A3131052CF020E030E040E050E02AC0C0
+:10391000B801A701022E04C0769567955795479583
+:103920000A94D2F781E090E0A0E0B0E004C0880FF4
+:10393000991FAA1FBB1F2A95D2F70197A109B109A8
+:103940008E219F21A023B1230097A105B10521F06D
+:1039500081E090E0A0E0B0E09A01AB01282B392B88
+:103960004A2B5B2BDA01C9018F779070A070B07081
+:1039700080349105A105B10539F427FF09C0205C09
+:103980003F4F4F4F5F4F04C0215C3F4F4F4F5F4F42
+:10399000E0E0F0E02030A0E03A07A0E04A07A0E431
+:1039A0005A0710F0E1E0F0E079018A0127C06038A1
+:1039B000710564F5FB01E158FF4FD801C7018F770E
+:1039C0009070A070B07080349105A105B10539F4F4
+:1039D000E7FE0DC080E490E0A0E0B0E004C08FE31B
+:1039E00090E0A0E0B0E0E80EF91E0A1F1B1F17FFD1
+:1039F00005C016950795F794E794319687E01695DC
+:103A00000795F794E7948A95D1F705C0EE24FF2433
+:103A10008701EFEFF0E06E2F679566276795902F8F
+:103A20009F77D794DD24D7948E2F8695492F462BE8
+:103A3000582F5D29B701CA011F910F91FF90EF9098
+:103A4000DF900895FC01DB01408151812281622FCA
+:103A50006F7770E0221F2227221F9381892F880F02
+:103A6000822B282F30E0991F9927991F11969C933C
+:103A7000119721153105A9F541155105610571050C
+:103A800011F482E037C082E89FEF13969C938E93E7
+:103A900012979A01AB0167E0220F331F441F551F95
+:103AA0006A95D1F783E08C930DC0220F331F441F1A
+:103AB000551F12968D919C911397019713969C9385
+:103AC0008E931297203080E0380780E0480780E42A
+:103AD000580758F314962D933D934D935C93179785
+:103AE00008952F3F310579F44115510561057105A0
+:103AF00019F484E08C93089564FF03C081E08C93F3
+:103B000012C01C9210C02F57304013963C932E9336
+:103B1000129783E08C9387E0440F551F661F771F31
+:103B20008A95D1F7706414964D935D936D937C9351
+:103B3000179708951F93DC01FB019C91923008F4C4
+:103B400047C08081823008F443C0943051F411960C
+:103B50001C91843099F58181682F70E0611B710997
+:103B60003FC0843021F0923031F48230B9F181814C
+:103B7000882389F12DC011961C9111978230F1F0A4
+:103B800081811817D9F412962D913C911397828157
+:103B900093818217930794F028173907BCF0149685
+:103BA0008D919D910D90BC91A02D248135814681F0
+:103BB0005781281739074A075B0718F4112341F08A
+:103BC0000AC082179307A407B50740F4112319F020
+:103BD00061E070E005C06FEF7FEF02C060E070E071
+:103BE000CB011F910895629FD001739FF001829FC6
+:103BF000E00DF11D649FE00DF11D929FF00D839F7C
+:103C0000F00D749FF00D659FF00D9927729FB00D18
+:103C1000E11DF91F639FB00DE11DF91FBD01CF012B
+:103C200011240895A1E21A2EAA1BBB1BFD010DC091
+:103C3000AA1FBB1FEE1FFF1FA217B307E407F5075C
+:103C400020F0A21BB30BE40BF50B661F771F881F38
+:103C5000991F1A9469F760957095809590959B01CE
+:103C6000AC01BD01CF01089597FB092E05260ED0AA
+:103C700057FD04D0D7DF0AD0001C38F4509540958A
+:103C8000309521953F4F4F4F5F4F0895F6F7909530
+:103C90008095709561957F4F8F4F9F4F08952F921C
+:103CA0003F924F925F926F927F928F929F92AF92CC
+:103CB000BF92CF92DF92EF92FF920F931F93CF9319
+:103CC000DF93CDB7DEB7CA1BDB0B0FB6F894DEBFB0
+:103CD0000FBECDBF09942A88398848885F846E84D6
+:103CE0007D848C849B84AA84B984C884DF80EE8020
+:103CF000FD800C811B81AA81B981CE0FD11D0FB629
+:103D0000F894DEBF0FBECDBFED010895EE0FFF1F8B
+:103D10000590F491E02D0994CF93DF93BC0182309C
+:103D2000910510F462E070E0A0919003B0919103CE
+:103D3000ED01E0E0F0E040E050E021C088819981B1
+:103D40008617970769F48A819B81309719F09383CE
+:103D5000828304C09093910380939003FE0134C04A
+:103D60006817790738F44115510519F0841795073C
+:103D700008F4AC01FE018A819B819C01E901209736
+:103D8000E9F641155105A9F1CA01861B970B049765
+:103D900008F4BA01E0E0F0E02AC08D919C911197FF
+:103DA00084179507F9F46417750781F412968D91BD
+:103DB0009C911397309719F09383828304C090935A
+:103DC000910380939003FD0132964FC0CA01861B78
+:103DD000970BFD01E80FF91F6193719302978D9383
+:103DE0009C9343C0FD01828193819C01D90110976E
+:103DF000A1F680918E0390918F03892B41F48091DD
+:103E0000B2029091B30290938F0380938E034091FE
+:103E1000B4025091B5024115510541F44DB75EB75A
+:103E20008091B0029091B102481B590B20918E03F2
+:103E300030918F0324173507B0F4CA01821B930B0E
+:103E40008617970780F0AB014E5F5F4F8417950789
+:103E500050F0420F531F50938F0340938E03F9018C
+:103E60006193719302C0E0E0F0E0CF01DF91CF9168
+:103E70000895CF93DF93009709F450C0EC01229787
+:103E80001B821A82A0919003B0919103109709F1BF
+:103E900040E050E0AC17BD0708F1BB83AA83FE01E8
+:103EA00021913191E20FF31FAE17BF0779F48D9185
+:103EB0009C911197280F391F2E5F3F4F398328831C
+:103EC00012968D919C9113979B838A83411551057E
+:103ED00071F4D0939103C093900320C012968D91FA
+:103EE0009C911397AD01009711F0DC01D3CFFA013B
+:103EF000D383C28321913191E20FF31FCE17DF07E5
+:103F000069F488819981280F391F2E5F3F4FFA018C
+:103F1000318320838A819B8193838283DF91CF9138
+:103F20000895A0E0B0E0E7E9FFE10C94571EEC0132
+:103F3000A880B980CA80DB80A114B104C104D10477
+:103F400041F484E2A82E89EDB82E8BE5C82E87E0D7
+:103F5000D82EC601B5012DE133EF41E050E00E94BB
+:103F6000341E27EA31E440E050E00E94F31D7B015B
+:103F70008C01C601B5012DE133EF41E050E00E9414
+:103F8000341ECA01B9012CEE34EF4FEF5FEF0E94EF
+:103F9000F31D6E0D7F1D801F911F97FF04C06150A0
+:103FA000704080409048688379838A839B839B011B
+:103FB000AC015F77B901CA01CDB7DEB7EAE00C9476
+:103FC000731E0E94911F089586EB92E00E94911F3C
+:103FD00008956093B6027093B7028093B8029093ED
+:103FE000B9020895A0E0B0E0E8EFFFE10C94551E9F
+:103FF0008C01009729F4CB010E948C1E8C01BAC061
+:104000009EEFE92E9FEFF92EE00EF11E5801A60E4D
+:10401000B71EAE14BF0408F4ABC08EEF882E8FEF2E
+:10402000982E8A0C9B1CE701488159814617570737
+:10403000B8F04530510508F49DC0CA0104978617B1
+:10404000970708F497C042505040461B570BF401A5
+:104050005183408379836883C5010E94391F8AC0D8
+:104060006B01C41AD50AE0919003F0919103A0E08E
+:10407000B0E0C0E0D0E042C0E815F905A1F520812C
+:1040800031812C153D0578F1C90102968C159D05ED
+:10409000A8F04E5F5F4F420F531FE70159834883DB
+:1040A00022813381109729F013963C932E93129717
+:1040B00061C030939103209390035CC02250304044
+:1040C0002C193D0931832083109729F01396FC9316
+:1040D000EE93129704C0F0939103E0939003F701DD
+:1040E0007183608347C080819181C817D90708F424
+:1040F000EC01DF01828193819C01F901309709F085
+:10410000BBCF400F511F80918E0390918F03841776
+:104110009507E9F4C617D707D0F42091B40230917F
+:10412000B5022115310541F42DB73EB78091B0029B
+:104130009091B102281B390BA216B306C8F4B092B5
+:104140008F03A0928E03E7017983688313C0CB01AC
+:104150000E948C1EEC01009759F0F70140815181BB
+:10416000B8010E94FF20C8010E94391F8E0102C0C1
+:1041700000E010E0C801CDB7DEB7ECE00C94711E92
+:104180001F93FC0199278827BC01E89411911032F4
+:10419000E9F3193010F01E30C8F31B3251F01D3214
+:1041A00049F4689406C00E94C521610F711D811DEC
+:1041B000911D119110531A30B0F33EF490958095F3
+:1041C000709561957F4F8F4F9F4F1F91089591116B
+:1041D00016C1803219F089508550D0F70895911199
+:1041E000089581548A5108F4805E855A089591118A
+:1041F000089581568A5108F4805285580895FB012C
+:10420000DC0102C001900D9241505040D8F7089552
+:10421000FB01DC010D900020E9F7119701900D9250
+:104220000020E1F70895FC018191861721F0882391
+:10423000D9F7992708953197CF010895FB01DC0143
+:104240008D91019080190110D9F3990B0895FB010C
+:10425000DC0101900D920020E1F70895FB01DC01E3
+:104260004150504030F08D910190801919F4002098
+:10427000B9F7881B990B0895FB01DC0141505040B0
+:1042800048F001900D920020C9F701C01D924150E5
+:104290005040E0F70895FC0181E090E0019006169F
+:1042A00009F4CF010020D1F701970895FB01519146
+:1042B0005523A9F0BF01DC014D9145174111E1F7EC
+:1042C00059F4CD010190002049F04D914015411164
+:1042D000C9F3FB014111EFCF81E090E00197089510
+:1042E000FB019F01E8944230C4F04532B4F44A30F7
+:1042F00029F497FB1EF4909581959F4F642F7727A3
+:104300000E941222805D8A330CF0895D8193CB017B
+:104310000097A1F716F45DE251931082C9010C9445
+:104320000222FA01CF93FF93EF93223044F125321A
+:1043300034F5C22FE894CA3049F497FB3EF49095C7
+:104340008095709561957F4F8F4F9F4F2C2F33270E
+:1043500044275527FF93EF930E94121EEF91FF9180
+:10436000605D6A330CF0695D6193B901CA01605008
+:1043700070408040904051F716F4CDE2C193108216
+:104380008F919F91CF910C940222592F482F372F54
+:10439000262F660F771F881F991F660F771F881FAC
+:1043A000991F620F731F841F951F660F771F881F49
+:1043B000991F0895FA01CF93FF93EF932230CCF029
+:1043C0002532BCF4C22F2C2F332744275527FF93C7
+:1043D000EF930E94121EEF91FF91605D6A330CF023
+:1043E000695D6193B901CA0160507040804090409E
+:1043F00051F710828F919F91CF910C9402229927AF
+:1044000088270895DC01FC01672F71917723E1F77C
+:10441000329704C07C916D9370836291AE17BF0791
+:10442000C8F30895AA1BBB1B51E107C0AA1FBB1FFD
+:10443000A617B70710F0A61BB70B881F991F5A9530
+:10444000A9F780959095BC01CD010895F894FFCF10
+:104450000D0A2B494E513D310D0A000D0A2B5354C4
+:10446000574D4F443D300D0A000D0A2B53544E4119
+:104470003D4164617074696373456C65637469631D
+:104480000D0A000D0A2B53544F4155543D310D0A6E
+:10449000000D0A2B53544155544F3D300D0A000D69
+:1044A0000A202B535450494E3D303030300D0A0015
+:1044B0000D0A2B4C4F53535245434F4E4E3D300D3A
+:1044C0000A0007F000000000008E04DB04F3043350
+:1044D000045E044404820400000000DA00DB04F3FC
+:1044E00004DA00DA00DA00DA002E0000000000DA58
+:1044F00000DB04F304FF00010000000000000000E6
+:10450000000102020303030304040404040404047A
+:10451000050505050505050505050505050505054B
+:10452000060606060606060606060606060606062B
+:10453000060606060606060606060606060606061B
+:1045400007070707070707070707070707070707FB
+:1045500007070707070707070707070707070707EB
+:1045600007070707070707070707070707070707DB
+:1045700007070707070707070707070707070707CB
+:1045800008080808080808080808080808080808AB
+:10459000080808080808080808080808080808089B
+:1045A000080808080808080808080808080808088B
+:1045B000080808080808080808080808080808087B
+:1045C000080808080808080808080808080808086B
+:1045D000080808080808080808080808080808085B
+:1045E000080808080808080808080808080808084B
+:1045F000080808080808080808080808080808083B
+:0A46000020009203000001000000FA
+:00000001FF
diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss new file mode 100644 index 0000000..2efb687 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss @@ -0,0 +1,8524 @@ + +bin/Release/ESS1995test_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 000001ba 00800100 00004450 000044e4 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00004450 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 000000d8 008002ba 008002ba 0000469e 2**0 + ALLOC + 3 .stab 0000267c 00000000 00000000 000046a0 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00000cf1 00000000 00000000 00006d1c 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__ctors_end> + 4: 0c 94 93 0a jmp 0x1526 ; 0x1526 <__vector_1> + 8: 0c 94 c0 0a jmp 0x1580 ; 0x1580 <__vector_2> + c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 10: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 14: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 18: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 1c: 0c 94 ec 07 jmp 0xfd8 ; 0xfd8 <__vector_7> + 20: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 24: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 28: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 2c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 30: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 34: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 38: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 3c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 40: 0c 94 a4 13 jmp 0x2748 ; 0x2748 <__vector_16> + 44: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 48: 0c 94 14 03 jmp 0x628 ; 0x628 <__vector_18> + 4c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 50: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 54: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 58: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 5c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 60: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 64: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + +00000068 <_ZL21tone_pin_to_timer_PGM>: + 68: 02 . + +00000069 <port_to_mode_PGM>: + 69: 00 00 00 00 24 00 27 00 2a 00 ....$.'.*. + +00000073 <port_to_output_PGM>: + 73: 00 00 00 00 25 00 28 00 2b 00 ....%.(.+. + +0000007d <port_to_input_PGM>: + 7d: 00 00 00 00 23 00 26 00 29 00 ....#.&.). + +00000087 <digital_pin_to_port_PGM>: + 87: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 97: 03 03 03 03 .... + +0000009b <digital_pin_to_bit_mask_PGM>: + 9b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + ab: 04 08 10 20 ... + +000000af <digital_pin_to_timer_PGM>: + af: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + bf: 00 00 00 00 00 ..... + +000000c4 <__ctors_start>: + c4: a1 04 cpc r10, r1 + +000000c6 <__ctors_end>: + c6: 11 24 eor r1, r1 + c8: 1f be out 0x3f, r1 ; 63 + ca: cf ef ldi r28, 0xFF ; 255 + cc: d8 e0 ldi r29, 0x08 ; 8 + ce: de bf out 0x3e, r29 ; 62 + d0: cd bf out 0x3d, r28 ; 61 + +000000d2 <__do_copy_data>: + d2: 12 e0 ldi r17, 0x02 ; 2 + d4: a0 e0 ldi r26, 0x00 ; 0 + d6: b1 e0 ldi r27, 0x01 ; 1 + d8: e0 e5 ldi r30, 0x50 ; 80 + da: f4 e4 ldi r31, 0x44 ; 68 + dc: 02 c0 rjmp .+4 ; 0xe2 <.do_copy_data_start> + +000000de <.do_copy_data_loop>: + de: 05 90 lpm r0, Z+ + e0: 0d 92 st X+, r0 + +000000e2 <.do_copy_data_start>: + e2: aa 3b cpi r26, 0xBA ; 186 + e4: b1 07 cpc r27, r17 + e6: d9 f7 brne .-10 ; 0xde <.do_copy_data_loop> + +000000e8 <__do_clear_bss>: + e8: 13 e0 ldi r17, 0x03 ; 3 + ea: aa eb ldi r26, 0xBA ; 186 + ec: b2 e0 ldi r27, 0x02 ; 2 + ee: 01 c0 rjmp .+2 ; 0xf2 <.do_clear_bss_start> + +000000f0 <.do_clear_bss_loop>: + f0: 1d 92 st X+, r1 + +000000f2 <.do_clear_bss_start>: + f2: a2 39 cpi r26, 0x92 ; 146 + f4: b1 07 cpc r27, r17 + f6: e1 f7 brne .-8 ; 0xf0 <.do_clear_bss_loop> + +000000f8 <__do_global_ctors>: + f8: 10 e0 ldi r17, 0x00 ; 0 + fa: c6 ec ldi r28, 0xC6 ; 198 + fc: d0 e0 ldi r29, 0x00 ; 0 + fe: 04 c0 rjmp .+8 ; 0x108 <.do_global_ctors_start> + +00000100 <.do_global_ctors_loop>: + 100: 22 97 sbiw r28, 0x02 ; 2 + 102: fe 01 movw r30, r28 + 104: 0e 94 88 1e call 0x3d10 ; 0x3d10 <__tablejump__> + +00000108 <.do_global_ctors_start>: + 108: c4 3c cpi r28, 0xC4 ; 196 + 10a: d1 07 cpc r29, r17 + 10c: c9 f7 brne .-14 ; 0x100 <.do_global_ctors_loop> + 10e: 0e 94 ef 01 call 0x3de ; 0x3de <main> + 112: 0c 94 26 22 jmp 0x444c ; 0x444c <_exit> + +00000116 <__bad_interrupt>: + 116: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +0000011a <_Z9advertisev>: + 11a: 0f 93 push r16 + 11c: 1f 93 push r17 + 11e: 60 ed ldi r22, 0xD0 ; 208 + 120: 77 e0 ldi r23, 0x07 ; 7 + 122: 80 e0 ldi r24, 0x00 ; 0 + 124: 90 e0 ldi r25, 0x00 ; 0 + 126: 0e 94 2c 14 call 0x2858 ; 0x2858 <delay> + 12a: 08 e5 ldi r16, 0x58 ; 88 + 12c: 13 e0 ldi r17, 0x03 ; 3 + 12e: c8 01 movw r24, r16 + 130: 60 e0 ldi r22, 0x00 ; 0 + 132: 71 e0 ldi r23, 0x01 ; 1 + 134: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 138: 60 ed ldi r22, 0xD0 ; 208 + 13a: 77 e0 ldi r23, 0x07 ; 7 + 13c: 80 e0 ldi r24, 0x00 ; 0 + 13e: 90 e0 ldi r25, 0x00 ; 0 + 140: 0e 94 2c 14 call 0x2858 ; 0x2858 <delay> + 144: c8 01 movw r24, r16 + 146: 0e 94 82 04 call 0x904 ; 0x904 <_ZN14HardwareSerial5flushEv> + 14a: 1f 91 pop r17 + 14c: 0f 91 pop r16 + 14e: 08 95 ret + +00000150 <_Z14setupBlueToothv>: + 150: 0f 93 push r16 + 152: 1f 93 push r17 + 154: 86 e0 ldi r24, 0x06 ; 6 + 156: 60 e0 ldi r22, 0x00 ; 0 + 158: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 15c: 08 e5 ldi r16, 0x58 ; 88 + 15e: 13 e0 ldi r17, 0x03 ; 3 + 160: c8 01 movw r24, r16 + 162: 40 e0 ldi r20, 0x00 ; 0 + 164: 56 e9 ldi r21, 0x96 ; 150 + 166: 60 e0 ldi r22, 0x00 ; 0 + 168: 70 e0 ldi r23, 0x00 ; 0 + 16a: 0e 94 a5 03 call 0x74a ; 0x74a <_ZN14HardwareSerial5beginEl> + 16e: c8 01 movw r24, r16 + 170: 6b e0 ldi r22, 0x0B ; 11 + 172: 71 e0 ldi r23, 0x01 ; 1 + 174: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 178: c8 01 movw r24, r16 + 17a: 69 e1 ldi r22, 0x19 ; 25 + 17c: 71 e0 ldi r23, 0x01 ; 1 + 17e: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 182: c8 01 movw r24, r16 + 184: 63 e3 ldi r22, 0x33 ; 51 + 186: 71 e0 ldi r23, 0x01 ; 1 + 188: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 18c: c8 01 movw r24, r16 + 18e: 61 e4 ldi r22, 0x41 ; 65 + 190: 71 e0 ldi r23, 0x01 ; 1 + 192: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 196: c8 01 movw r24, r16 + 198: 6f e4 ldi r22, 0x4F ; 79 + 19a: 71 e0 ldi r23, 0x01 ; 1 + 19c: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 1a0: c8 01 movw r24, r16 + 1a2: 60 e6 ldi r22, 0x60 ; 96 + 1a4: 71 e0 ldi r23, 0x01 ; 1 + 1a6: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 1aa: 0e 94 8d 00 call 0x11a ; 0x11a <_Z9advertisev> + 1ae: 1f 91 pop r17 + 1b0: 0f 91 pop r16 + 1b2: 08 95 ret + +000001b4 <__cxa_pure_virtual>: + 1b4: f8 94 cli + 1b6: ff cf rjmp .-2 ; 0x1b6 <__cxa_pure_virtual+0x2> + +000001b8 <_Z13writeStartBitv>: + 1b8: 84 e0 ldi r24, 0x04 ; 4 + 1ba: 61 e0 ldi r22, 0x01 ; 1 + 1bc: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 1c0: 83 e0 ldi r24, 0x03 ; 3 + 1c2: 61 e0 ldi r22, 0x01 ; 1 + 1c4: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 1c8: 8a e0 ldi r24, 0x0A ; 10 + 1ca: 90 e0 ldi r25, 0x00 ; 0 + 1cc: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 1d0: 84 e0 ldi r24, 0x04 ; 4 + 1d2: 60 e0 ldi r22, 0x00 ; 0 + 1d4: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 1d8: 8a e0 ldi r24, 0x0A ; 10 + 1da: 90 e0 ldi r25, 0x00 ; 0 + 1dc: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 1e0: 83 e0 ldi r24, 0x03 ; 3 + 1e2: 60 e0 ldi r22, 0x00 ; 0 + 1e4: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 1e8: 8a e0 ldi r24, 0x0A ; 10 + 1ea: 90 e0 ldi r25, 0x00 ; 0 + 1ec: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 1f0: 08 95 ret + +000001f2 <_Z12writeStopBitv>: + 1f2: 84 e0 ldi r24, 0x04 ; 4 + 1f4: 60 e0 ldi r22, 0x00 ; 0 + 1f6: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 1fa: 8a e0 ldi r24, 0x0A ; 10 + 1fc: 90 e0 ldi r25, 0x00 ; 0 + 1fe: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 202: 83 e0 ldi r24, 0x03 ; 3 + 204: 61 e0 ldi r22, 0x01 ; 1 + 206: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 20a: 8a e0 ldi r24, 0x0A ; 10 + 20c: 90 e0 ldi r25, 0x00 ; 0 + 20e: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 212: 84 e0 ldi r24, 0x04 ; 4 + 214: 61 e0 ldi r22, 0x01 ; 1 + 216: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 21a: 08 95 ret + +0000021c <_Z11SCLKcycle_Rv>: + 21c: 8a e0 ldi r24, 0x0A ; 10 + 21e: 90 e0 ldi r25, 0x00 ; 0 + 220: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 224: 83 e0 ldi r24, 0x03 ; 3 + 226: 60 e0 ldi r22, 0x00 ; 0 + 228: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 22c: 84 e1 ldi r24, 0x14 ; 20 + 22e: 90 e0 ldi r25, 0x00 ; 0 + 230: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 234: 83 e0 ldi r24, 0x03 ; 3 + 236: 61 e0 ldi r22, 0x01 ; 1 + 238: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 23c: 8a e0 ldi r24, 0x0A ; 10 + 23e: 90 e0 ldi r25, 0x00 ; 0 + 240: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 244: 08 95 ret + +00000246 <_Z8readBytev>: + 246: 0f 93 push r16 + 248: 1f 93 push r17 + 24a: 8a e0 ldi r24, 0x0A ; 10 + 24c: 90 e0 ldi r25, 0x00 ; 0 + 24e: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 252: 00 e0 ldi r16, 0x00 ; 0 + 254: 17 e0 ldi r17, 0x07 ; 7 + 256: 84 e0 ldi r24, 0x04 ; 4 + 258: 0e 94 a4 15 call 0x2b48 ; 0x2b48 <digitalRead> + 25c: 68 2f mov r22, r24 + 25e: 90 e0 ldi r25, 0x00 ; 0 + 260: 01 2e mov r0, r17 + 262: 02 c0 rjmp .+4 ; 0x268 <_Z8readBytev+0x22> + 264: 88 0f add r24, r24 + 266: 99 1f adc r25, r25 + 268: 0a 94 dec r0 + 26a: e2 f7 brpl .-8 ; 0x264 <_Z8readBytev+0x1e> + 26c: 08 2b or r16, r24 + 26e: 8c e0 ldi r24, 0x0C ; 12 + 270: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 274: 0e 94 0e 01 call 0x21c ; 0x21c <_Z11SCLKcycle_Rv> + 278: 11 50 subi r17, 0x01 ; 1 + 27a: 68 f7 brcc .-38 ; 0x256 <_Z8readBytev+0x10> + 27c: 0e 94 0e 01 call 0x21c ; 0x21c <_Z11SCLKcycle_Rv> + 280: 80 2f mov r24, r16 + 282: 1f 91 pop r17 + 284: 0f 91 pop r16 + 286: 08 95 ret + +00000288 <_Z11SCLKcycle_Wv>: + 288: 8a e0 ldi r24, 0x0A ; 10 + 28a: 90 e0 ldi r25, 0x00 ; 0 + 28c: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 290: 83 e0 ldi r24, 0x03 ; 3 + 292: 61 e0 ldi r22, 0x01 ; 1 + 294: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 298: 84 e1 ldi r24, 0x14 ; 20 + 29a: 90 e0 ldi r25, 0x00 ; 0 + 29c: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 2a0: 83 e0 ldi r24, 0x03 ; 3 + 2a2: 60 e0 ldi r22, 0x00 ; 0 + 2a4: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2a8: 8a e0 ldi r24, 0x0A ; 10 + 2aa: 90 e0 ldi r25, 0x00 ; 0 + 2ac: 0e 94 52 14 call 0x28a4 ; 0x28a4 <delayMicroseconds> + 2b0: 08 95 ret + +000002b2 <_Z9writeByteh>: + 2b2: 1f 93 push r17 + 2b4: cf 93 push r28 + 2b6: df 93 push r29 + 2b8: 17 e0 ldi r17, 0x07 ; 7 + 2ba: c8 2f mov r28, r24 + 2bc: d0 e0 ldi r29, 0x00 ; 0 + 2be: be 01 movw r22, r28 + 2c0: 01 2e mov r0, r17 + 2c2: 02 c0 rjmp .+4 ; 0x2c8 <_Z9writeByteh+0x16> + 2c4: 75 95 asr r23 + 2c6: 67 95 ror r22 + 2c8: 0a 94 dec r0 + 2ca: e2 f7 brpl .-8 ; 0x2c4 <_Z9writeByteh+0x12> + 2cc: 61 70 andi r22, 0x01 ; 1 + 2ce: 84 e0 ldi r24, 0x04 ; 4 + 2d0: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2d4: 0e 94 44 01 call 0x288 ; 0x288 <_Z11SCLKcycle_Wv> + 2d8: 11 50 subi r17, 0x01 ; 1 + 2da: 88 f7 brcc .-30 ; 0x2be <_Z9writeByteh+0xc> + 2dc: 84 e0 ldi r24, 0x04 ; 4 + 2de: 61 e0 ldi r22, 0x01 ; 1 + 2e0: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2e4: 0e 94 44 01 call 0x288 ; 0x288 <_Z11SCLKcycle_Wv> + 2e8: df 91 pop r29 + 2ea: cf 91 pop r28 + 2ec: 1f 91 pop r17 + 2ee: 08 95 ret + +000002f0 <_Z9startReadv>: + 2f0: 84 e0 ldi r24, 0x04 ; 4 + 2f2: 60 e0 ldi r22, 0x00 ; 0 + 2f4: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 2f8: 83 e0 ldi r24, 0x03 ; 3 + 2fa: 61 e0 ldi r22, 0x01 ; 1 + 2fc: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 300: 08 95 ret + +00000302 <_Z10startWritev>: + 302: 84 e0 ldi r24, 0x04 ; 4 + 304: 61 e0 ldi r22, 0x01 ; 1 + 306: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 30a: 83 e0 ldi r24, 0x03 ; 3 + 30c: 61 e0 ldi r22, 0x01 ; 1 + 30e: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 312: 08 95 ret + +00000314 <_Z8writeDMMv>: + 314: ef 92 push r14 + 316: ff 92 push r15 + 318: 0f 93 push r16 + 31a: 1f 93 push r17 + 31c: 80 91 c5 02 lds r24, 0x02C5 + 320: 87 95 ror r24 + 322: 88 27 eor r24, r24 + 324: 87 95 ror r24 + 326: f0 90 c6 02 lds r15, 0x02C6 + 32a: ff 0c add r15, r15 + 32c: ff 0c add r15, r15 + 32e: ff 0c add r15, r15 + 330: f8 2a or r15, r24 + 332: 80 91 c7 02 lds r24, 0x02C7 + 336: f8 2a or r15, r24 + 338: 80 91 c9 02 lds r24, 0x02C9 + 33c: 82 95 swap r24 + 33e: 88 0f add r24, r24 + 340: 80 7e andi r24, 0xE0 ; 224 + 342: 00 91 ca 02 lds r16, 0x02CA + 346: 00 0f add r16, r16 + 348: 00 0f add r16, r16 + 34a: 00 0f add r16, r16 + 34c: 08 2b or r16, r24 + 34e: 80 91 c8 02 lds r24, 0x02C8 + 352: 08 2b or r16, r24 + 354: 90 91 cb 02 lds r25, 0x02CB + 358: 97 95 ror r25 + 35a: 99 27 eor r25, r25 + 35c: 97 95 ror r25 + 35e: 80 91 cf 02 lds r24, 0x02CF + 362: 82 95 swap r24 + 364: 80 7f andi r24, 0xF0 ; 240 + 366: 89 2b or r24, r25 + 368: 90 91 d1 02 lds r25, 0x02D1 + 36c: 89 2b or r24, r25 + 36e: 90 91 d3 02 lds r25, 0x02D3 + 372: 99 0f add r25, r25 + 374: 99 0f add r25, r25 + 376: 99 0f add r25, r25 + 378: 98 2b or r25, r24 + 37a: e0 90 ce 02 lds r14, 0x02CE + 37e: ee 0c add r14, r14 + 380: e9 2a or r14, r25 + 382: 90 91 cc 02 lds r25, 0x02CC + 386: 97 95 ror r25 + 388: 99 27 eor r25, r25 + 38a: 97 95 ror r25 + 38c: 80 91 cd 02 lds r24, 0x02CD + 390: 82 95 swap r24 + 392: 88 0f add r24, r24 + 394: 88 0f add r24, r24 + 396: 80 7c andi r24, 0xC0 ; 192 + 398: 89 2b or r24, r25 + 39a: 90 91 d2 02 lds r25, 0x02D2 + 39e: 89 2b or r24, r25 + 3a0: 10 91 d0 02 lds r17, 0x02D0 + 3a4: 11 0f add r17, r17 + 3a6: 11 0f add r17, r17 + 3a8: 18 2b or r17, r24 + 3aa: 0e 94 81 01 call 0x302 ; 0x302 <_Z10startWritev> + 3ae: 0e 94 dc 00 call 0x1b8 ; 0x1b8 <_Z13writeStartBitv> + 3b2: 88 ec ldi r24, 0xC8 ; 200 + 3b4: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3b8: 8f 2d mov r24, r15 + 3ba: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3be: 80 2f mov r24, r16 + 3c0: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3c4: 8e 2d mov r24, r14 + 3c6: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3ca: 81 2f mov r24, r17 + 3cc: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3d0: 0e 94 f9 00 call 0x1f2 ; 0x1f2 <_Z12writeStopBitv> + 3d4: 1f 91 pop r17 + 3d6: 0f 91 pop r16 + 3d8: ff 90 pop r15 + 3da: ef 90 pop r14 + 3dc: 08 95 ret + +000003de <main>: + 3de: 8f 92 push r8 + 3e0: 9f 92 push r9 + 3e2: af 92 push r10 + 3e4: bf 92 push r11 + 3e6: cf 92 push r12 + 3e8: df 92 push r13 + 3ea: ef 92 push r14 + 3ec: ff 92 push r15 + 3ee: 0f 93 push r16 + 3f0: 1f 93 push r17 + 3f2: df 93 push r29 + 3f4: cf 93 push r28 + 3f6: cd b7 in r28, 0x3d ; 61 + 3f8: de b7 in r29, 0x3e ; 62 + 3fa: 27 97 sbiw r28, 0x07 ; 7 + 3fc: 0f b6 in r0, 0x3f ; 63 + 3fe: f8 94 cli + 400: de bf out 0x3e, r29 ; 62 + 402: 0f be out 0x3f, r0 ; 63 + 404: cd bf out 0x3d, r28 ; 61 + 406: 0e 94 5c 14 call 0x28b8 ; 0x28b8 <init> + 40a: 85 e0 ldi r24, 0x05 ; 5 + 40c: 61 e0 ldi r22, 0x01 ; 1 + 40e: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 412: 85 e0 ldi r24, 0x05 ; 5 + 414: 60 e0 ldi r22, 0x00 ; 0 + 416: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 41a: 0e 94 a8 00 call 0x150 ; 0x150 <_Z14setupBlueToothv> + 41e: 82 e0 ldi r24, 0x02 ; 2 + 420: 60 e0 ldi r22, 0x00 ; 0 + 422: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 426: 83 e0 ldi r24, 0x03 ; 3 + 428: 61 e0 ldi r22, 0x01 ; 1 + 42a: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 42e: 86 e0 ldi r24, 0x06 ; 6 + 430: 60 e0 ldi r22, 0x00 ; 0 + 432: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 436: 8c e0 ldi r24, 0x0C ; 12 + 438: 61 e0 ldi r22, 0x01 ; 1 + 43a: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 43e: 8d e0 ldi r24, 0x0D ; 13 + 440: 61 e0 ldi r22, 0x01 ; 1 + 442: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 446: 8d e0 ldi r24, 0x0D ; 13 + 448: 61 e0 ldi r22, 0x01 ; 1 + 44a: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 44e: 85 e0 ldi r24, 0x05 ; 5 + 450: 61 e0 ldi r22, 0x01 ; 1 + 452: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 456: 6a ef ldi r22, 0xFA ; 250 + 458: 70 e0 ldi r23, 0x00 ; 0 + 45a: 80 e0 ldi r24, 0x00 ; 0 + 45c: 90 e0 ldi r25, 0x00 ; 0 + 45e: 0e 94 2c 14 call 0x2858 ; 0x2858 <delay> + 462: 0e 94 8a 01 call 0x314 ; 0x314 <_Z8writeDMMv> + 466: aa ef ldi r26, 0xFA ; 250 + 468: ea 2e mov r14, r26 + 46a: f1 2c mov r15, r1 + 46c: 4e 01 movw r8, r28 + 46e: 08 94 sec + 470: 81 1c adc r8, r1 + 472: 91 1c adc r9, r1 + 474: f4 e0 ldi r31, 0x04 ; 4 + 476: af 2e mov r10, r31 + 478: b1 2c mov r11, r1 + 47a: ac 0e add r10, r28 + 47c: bd 1e adc r11, r29 + 47e: e2 e0 ldi r30, 0x02 ; 2 + 480: ce 2e mov r12, r30 + 482: d1 2c mov r13, r1 + 484: cc 0e add r12, r28 + 486: dd 1e adc r13, r29 + 488: 82 e0 ldi r24, 0x02 ; 2 + 48a: 0e 94 a4 15 call 0x2b48 ; 0x2b48 <digitalRead> + 48e: 01 97 sbiw r24, 0x01 ; 1 + 490: 09 f0 breq .+2 ; 0x494 <main+0xb6> + 492: bc c0 rjmp .+376 ; 0x60c <main+0x22e> + 494: 8c e0 ldi r24, 0x0C ; 12 + 496: 61 e0 ldi r22, 0x01 ; 1 + 498: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 49c: 8d e0 ldi r24, 0x0D ; 13 + 49e: 60 e0 ldi r22, 0x00 ; 0 + 4a0: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 4a4: 0e 94 81 01 call 0x302 ; 0x302 <_Z10startWritev> + 4a8: 0e 94 dc 00 call 0x1b8 ; 0x1b8 <_Z13writeStartBitv> + 4ac: 89 ec ldi r24, 0xC9 ; 201 + 4ae: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 4b2: 82 e0 ldi r24, 0x02 ; 2 + 4b4: 0e 94 a4 15 call 0x2b48 ; 0x2b48 <digitalRead> + 4b8: 89 2b or r24, r25 + 4ba: 09 f0 breq .+2 ; 0x4be <main+0xe0> + 4bc: a7 c0 rjmp .+334 ; 0x60c <main+0x22e> + 4be: 8d e0 ldi r24, 0x0D ; 13 + 4c0: 61 e0 ldi r22, 0x01 ; 1 + 4c2: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 4c6: 0e 94 78 01 call 0x2f0 ; 0x2f0 <_Z9startReadv> + 4ca: 0b eb ldi r16, 0xBB ; 187 + 4cc: 12 e0 ldi r17, 0x02 ; 2 + 4ce: 0e 94 23 01 call 0x246 ; 0x246 <_Z8readBytev> + 4d2: f8 01 movw r30, r16 + 4d4: 81 93 st Z+, r24 + 4d6: 8f 01 movw r16, r30 + 4d8: f2 e0 ldi r31, 0x02 ; 2 + 4da: 05 3c cpi r16, 0xC5 ; 197 + 4dc: 1f 07 cpc r17, r31 + 4de: b9 f7 brne .-18 ; 0x4ce <main+0xf0> + 4e0: 0e 94 81 01 call 0x302 ; 0x302 <_Z10startWritev> + 4e4: 0e 94 f9 00 call 0x1f2 ; 0x1f2 <_Z12writeStopBitv> + 4e8: 80 91 bb 02 lds r24, 0x02BB + 4ec: 89 83 std Y+1, r24 ; 0x01 + 4ee: 20 91 bd 02 lds r18, 0x02BD + 4f2: 30 e0 ldi r19, 0x00 ; 0 + 4f4: 40 e0 ldi r20, 0x00 ; 0 + 4f6: 50 e0 ldi r21, 0x00 ; 0 + 4f8: 54 2f mov r21, r20 + 4fa: 43 2f mov r20, r19 + 4fc: 32 2f mov r19, r18 + 4fe: 22 27 eor r18, r18 + 500: 80 91 be 02 lds r24, 0x02BE + 504: 90 e0 ldi r25, 0x00 ; 0 + 506: a0 e0 ldi r26, 0x00 ; 0 + 508: b0 e0 ldi r27, 0x00 ; 0 + 50a: 28 2b or r18, r24 + 50c: 39 2b or r19, r25 + 50e: 4a 2b or r20, r26 + 510: 5b 2b or r21, r27 + 512: 80 91 bc 02 lds r24, 0x02BC + 516: 90 e0 ldi r25, 0x00 ; 0 + 518: a0 e0 ldi r26, 0x00 ; 0 + 51a: b0 e0 ldi r27, 0x00 ; 0 + 51c: 87 70 andi r24, 0x07 ; 7 + 51e: 90 70 andi r25, 0x00 ; 0 + 520: a0 70 andi r26, 0x00 ; 0 + 522: b0 70 andi r27, 0x00 ; 0 + 524: dc 01 movw r26, r24 + 526: 99 27 eor r25, r25 + 528: 88 27 eor r24, r24 + 52a: 28 2b or r18, r24 + 52c: 39 2b or r19, r25 + 52e: 4a 2b or r20, r26 + 530: 5b 2b or r21, r27 + 532: 2c 83 std Y+4, r18 ; 0x04 + 534: 3d 83 std Y+5, r19 ; 0x05 + 536: 4e 83 std Y+6, r20 ; 0x06 + 538: 5f 83 std Y+7, r21 ; 0x07 + 53a: 20 91 c0 02 lds r18, 0x02C0 + 53e: 22 95 swap r18 + 540: 26 95 lsr r18 + 542: 26 95 lsr r18 + 544: 23 70 andi r18, 0x03 ; 3 + 546: 30 e0 ldi r19, 0x00 ; 0 + 548: 80 91 bf 02 lds r24, 0x02BF + 54c: 90 e0 ldi r25, 0x00 ; 0 + 54e: 88 0f add r24, r24 + 550: 99 1f adc r25, r25 + 552: 88 0f add r24, r24 + 554: 99 1f adc r25, r25 + 556: 28 2b or r18, r24 + 558: 39 2b or r19, r25 + 55a: 3b 83 std Y+3, r19 ; 0x03 + 55c: 2a 83 std Y+2, r18 ; 0x02 + 55e: 17 c0 rjmp .+46 ; 0x58e <main+0x1b0> + 560: 88 e5 ldi r24, 0x58 ; 88 + 562: 93 e0 ldi r25, 0x03 ; 3 + 564: 0e 94 5e 04 call 0x8bc ; 0x8bc <_ZN14HardwareSerial4readEv> + 568: 82 30 cpi r24, 0x02 ; 2 + 56a: 29 f0 breq .+10 ; 0x576 <main+0x198> + 56c: 83 30 cpi r24, 0x03 ; 3 + 56e: 61 f0 breq .+24 ; 0x588 <main+0x1aa> + 570: 81 30 cpi r24, 0x01 ; 1 + 572: 69 f4 brne .+26 ; 0x58e <main+0x1b0> + 574: 04 c0 rjmp .+8 ; 0x57e <main+0x1a0> + 576: 2a ef ldi r18, 0xFA ; 250 + 578: e2 2e mov r14, r18 + 57a: f1 2c mov r15, r1 + 57c: 08 c0 rjmp .+16 ; 0x58e <main+0x1b0> + 57e: 98 ee ldi r25, 0xE8 ; 232 + 580: e9 2e mov r14, r25 + 582: 93 e0 ldi r25, 0x03 ; 3 + 584: f9 2e mov r15, r25 + 586: 03 c0 rjmp .+6 ; 0x58e <main+0x1b0> + 588: 82 e3 ldi r24, 0x32 ; 50 + 58a: e8 2e mov r14, r24 + 58c: f1 2c mov r15, r1 + 58e: 88 e5 ldi r24, 0x58 ; 88 + 590: 93 e0 ldi r25, 0x03 ; 3 + 592: 0e 94 33 04 call 0x866 ; 0x866 <_ZN14HardwareSerial9availableEv> + 596: 18 16 cp r1, r24 + 598: 19 06 cpc r1, r25 + 59a: 14 f3 brlt .-60 ; 0x560 <main+0x182> + 59c: 86 e0 ldi r24, 0x06 ; 6 + 59e: 0e 94 a4 15 call 0x2b48 ; 0x2b48 <digitalRead> + 5a2: 20 91 ba 02 lds r18, 0x02BA + 5a6: 89 2b or r24, r25 + 5a8: 59 f1 breq .+86 ; 0x600 <main+0x222> + 5aa: 22 23 and r18, r18 + 5ac: 19 f4 brne .+6 ; 0x5b4 <main+0x1d6> + 5ae: 81 e0 ldi r24, 0x01 ; 1 + 5b0: 80 93 ba 02 sts 0x02BA, r24 + 5b4: 88 e5 ldi r24, 0x58 ; 88 + 5b6: 93 e0 ldi r25, 0x03 ; 3 + 5b8: 63 e7 ldi r22, 0x73 ; 115 + 5ba: 71 e0 ldi r23, 0x01 ; 1 + 5bc: 42 e0 ldi r20, 0x02 ; 2 + 5be: 50 e0 ldi r21, 0x00 ; 0 + 5c0: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5c4: 88 e5 ldi r24, 0x58 ; 88 + 5c6: 93 e0 ldi r25, 0x03 ; 3 + 5c8: 62 e7 ldi r22, 0x72 ; 114 + 5ca: 71 e0 ldi r23, 0x01 ; 1 + 5cc: 41 e0 ldi r20, 0x01 ; 1 + 5ce: 50 e0 ldi r21, 0x00 ; 0 + 5d0: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5d4: 88 e5 ldi r24, 0x58 ; 88 + 5d6: 93 e0 ldi r25, 0x03 ; 3 + 5d8: b4 01 movw r22, r8 + 5da: 41 e0 ldi r20, 0x01 ; 1 + 5dc: 50 e0 ldi r21, 0x00 ; 0 + 5de: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5e2: 88 e5 ldi r24, 0x58 ; 88 + 5e4: 93 e0 ldi r25, 0x03 ; 3 + 5e6: b5 01 movw r22, r10 + 5e8: 44 e0 ldi r20, 0x04 ; 4 + 5ea: 50 e0 ldi r21, 0x00 ; 0 + 5ec: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5f0: 88 e5 ldi r24, 0x58 ; 88 + 5f2: 93 e0 ldi r25, 0x03 ; 3 + 5f4: b6 01 movw r22, r12 + 5f6: 42 e0 ldi r20, 0x02 ; 2 + 5f8: 50 e0 ldi r21, 0x00 ; 0 + 5fa: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5fe: 06 c0 rjmp .+12 ; 0x60c <main+0x22e> + 600: 22 23 and r18, r18 + 602: 21 f0 breq .+8 ; 0x60c <main+0x22e> + 604: 0e 94 8d 00 call 0x11a ; 0x11a <_Z9advertisev> + 608: 10 92 ba 02 sts 0x02BA, r1 + 60c: b7 01 movw r22, r14 + 60e: 80 e0 ldi r24, 0x00 ; 0 + 610: 90 e0 ldi r25, 0x00 ; 0 + 612: 0e 94 2c 14 call 0x2858 ; 0x2858 <delay> + 616: 8c e0 ldi r24, 0x0C ; 12 + 618: 60 e0 ldi r22, 0x00 ; 0 + 61a: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 61e: 8d e0 ldi r24, 0x0D ; 13 + 620: 60 e0 ldi r22, 0x00 ; 0 + 622: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 626: 30 cf rjmp .-416 ; 0x488 <main+0xaa> + +00000628 <__vector_18>: + 628: 1f 92 push r1 + 62a: 0f 92 push r0 + 62c: 0f b6 in r0, 0x3f ; 63 + 62e: 0f 92 push r0 + 630: 11 24 eor r1, r1 + 632: 2f 93 push r18 + 634: 3f 93 push r19 + 636: 4f 93 push r20 + 638: 8f 93 push r24 + 63a: 9f 93 push r25 + 63c: ef 93 push r30 + 63e: ff 93 push r31 + 640: 40 91 c6 00 lds r20, 0x00C6 + 644: e0 91 54 03 lds r30, 0x0354 + 648: f0 91 55 03 lds r31, 0x0355 + 64c: 31 96 adiw r30, 0x01 ; 1 + 64e: 9f 01 movw r18, r30 + 650: 2f 77 andi r18, 0x7F ; 127 + 652: 30 70 andi r19, 0x00 ; 0 + 654: 31 97 sbiw r30, 0x01 ; 1 + 656: 80 91 56 03 lds r24, 0x0356 + 65a: 90 91 57 03 lds r25, 0x0357 + 65e: 28 17 cp r18, r24 + 660: 39 07 cpc r19, r25 + 662: 39 f0 breq .+14 ; 0x672 <__vector_18+0x4a> + 664: ec 52 subi r30, 0x2C ; 44 + 666: fd 4f sbci r31, 0xFD ; 253 + 668: 40 83 st Z, r20 + 66a: 30 93 55 03 sts 0x0355, r19 + 66e: 20 93 54 03 sts 0x0354, r18 + 672: ff 91 pop r31 + 674: ef 91 pop r30 + 676: 9f 91 pop r25 + 678: 8f 91 pop r24 + 67a: 4f 91 pop r20 + 67c: 3f 91 pop r19 + 67e: 2f 91 pop r18 + 680: 0f 90 pop r0 + 682: 0f be out 0x3f, r0 ; 63 + 684: 0f 90 pop r0 + 686: 1f 90 pop r1 + 688: 18 95 reti + +0000068a <_ZN14HardwareSerialC2EP11ring_bufferPVhS3_S3_S3_S3_hhhhh>: + 68a: 8f 92 push r8 + 68c: af 92 push r10 + 68e: cf 92 push r12 + 690: df 92 push r13 + 692: ef 92 push r14 + 694: ff 92 push r15 + 696: 0f 93 push r16 + 698: 1f 93 push r17 + 69a: df 93 push r29 + 69c: cf 93 push r28 + 69e: cd b7 in r28, 0x3d ; 61 + 6a0: de b7 in r29, 0x3e ; 62 + 6a2: fc 01 movw r30, r24 + 6a4: 89 e7 ldi r24, 0x79 ; 121 + 6a6: 91 e0 ldi r25, 0x01 ; 1 + 6a8: 91 83 std Z+1, r25 ; 0x01 + 6aa: 80 83 st Z, r24 + 6ac: 73 83 std Z+3, r23 ; 0x03 + 6ae: 62 83 std Z+2, r22 ; 0x02 + 6b0: 55 83 std Z+5, r21 ; 0x05 + 6b2: 44 83 std Z+4, r20 ; 0x04 + 6b4: 37 83 std Z+7, r19 ; 0x07 + 6b6: 26 83 std Z+6, r18 ; 0x06 + 6b8: 11 87 std Z+9, r17 ; 0x09 + 6ba: 00 87 std Z+8, r16 ; 0x08 + 6bc: f3 86 std Z+11, r15 ; 0x0b + 6be: e2 86 std Z+10, r14 ; 0x0a + 6c0: d5 86 std Z+13, r13 ; 0x0d + 6c2: c4 86 std Z+12, r12 ; 0x0c + 6c4: a6 86 std Z+14, r10 ; 0x0e + 6c6: 87 86 std Z+15, r8 ; 0x0f + 6c8: 8d 85 ldd r24, Y+13 ; 0x0d + 6ca: 80 8b std Z+16, r24 ; 0x10 + 6cc: 8e 85 ldd r24, Y+14 ; 0x0e + 6ce: 81 8b std Z+17, r24 ; 0x11 + 6d0: 8f 85 ldd r24, Y+15 ; 0x0f + 6d2: 82 8b std Z+18, r24 ; 0x12 + 6d4: cf 91 pop r28 + 6d6: df 91 pop r29 + 6d8: 1f 91 pop r17 + 6da: 0f 91 pop r16 + 6dc: ff 90 pop r15 + 6de: ef 90 pop r14 + 6e0: df 90 pop r13 + 6e2: cf 90 pop r12 + 6e4: af 90 pop r10 + 6e6: 8f 90 pop r8 + 6e8: 08 95 ret + +000006ea <_ZN14HardwareSerialC1EP11ring_bufferPVhS3_S3_S3_S3_hhhhh>: + 6ea: 8f 92 push r8 + 6ec: af 92 push r10 + 6ee: cf 92 push r12 + 6f0: df 92 push r13 + 6f2: ef 92 push r14 + 6f4: ff 92 push r15 + 6f6: 0f 93 push r16 + 6f8: 1f 93 push r17 + 6fa: df 93 push r29 + 6fc: cf 93 push r28 + 6fe: cd b7 in r28, 0x3d ; 61 + 700: de b7 in r29, 0x3e ; 62 + 702: fc 01 movw r30, r24 + 704: 89 e7 ldi r24, 0x79 ; 121 + 706: 91 e0 ldi r25, 0x01 ; 1 + 708: 91 83 std Z+1, r25 ; 0x01 + 70a: 80 83 st Z, r24 + 70c: 73 83 std Z+3, r23 ; 0x03 + 70e: 62 83 std Z+2, r22 ; 0x02 + 710: 55 83 std Z+5, r21 ; 0x05 + 712: 44 83 std Z+4, r20 ; 0x04 + 714: 37 83 std Z+7, r19 ; 0x07 + 716: 26 83 std Z+6, r18 ; 0x06 + 718: 11 87 std Z+9, r17 ; 0x09 + 71a: 00 87 std Z+8, r16 ; 0x08 + 71c: f3 86 std Z+11, r15 ; 0x0b + 71e: e2 86 std Z+10, r14 ; 0x0a + 720: d5 86 std Z+13, r13 ; 0x0d + 722: c4 86 std Z+12, r12 ; 0x0c + 724: a6 86 std Z+14, r10 ; 0x0e + 726: 87 86 std Z+15, r8 ; 0x0f + 728: 8d 85 ldd r24, Y+13 ; 0x0d + 72a: 80 8b std Z+16, r24 ; 0x10 + 72c: 8e 85 ldd r24, Y+14 ; 0x0e + 72e: 81 8b std Z+17, r24 ; 0x11 + 730: 8f 85 ldd r24, Y+15 ; 0x0f + 732: 82 8b std Z+18, r24 ; 0x12 + 734: cf 91 pop r28 + 736: df 91 pop r29 + 738: 1f 91 pop r17 + 73a: 0f 91 pop r16 + 73c: ff 90 pop r15 + 73e: ef 90 pop r14 + 740: df 90 pop r13 + 742: cf 90 pop r12 + 744: af 90 pop r10 + 746: 8f 90 pop r8 + 748: 08 95 ret + +0000074a <_ZN14HardwareSerial5beginEl>: + 74a: ef 92 push r14 + 74c: ff 92 push r15 + 74e: 0f 93 push r16 + 750: 1f 93 push r17 + 752: 8c 01 movw r16, r24 + 754: 9a 01 movw r18, r20 + 756: ab 01 movw r20, r22 + 758: dc 01 movw r26, r24 + 75a: 18 96 adiw r26, 0x08 ; 8 + 75c: ed 91 ld r30, X+ + 75e: fc 91 ld r31, X + 760: 19 97 sbiw r26, 0x09 ; 9 + 762: 91 e0 ldi r25, 0x01 ; 1 + 764: e9 2e mov r14, r25 + 766: f1 2c mov r15, r1 + 768: c7 01 movw r24, r14 + 76a: 52 96 adiw r26, 0x12 ; 18 + 76c: 0c 90 ld r0, X + 76e: 02 c0 rjmp .+4 ; 0x774 <_ZN14HardwareSerial5beginEl+0x2a> + 770: 88 0f add r24, r24 + 772: 99 1f adc r25, r25 + 774: 0a 94 dec r0 + 776: e2 f7 brpl .-8 ; 0x770 <_ZN14HardwareSerial5beginEl+0x26> + 778: 80 83 st Z, r24 + 77a: 60 e8 ldi r22, 0x80 ; 128 + 77c: 74 e8 ldi r23, 0x84 ; 132 + 77e: 8e e1 ldi r24, 0x1E ; 30 + 780: 90 e0 ldi r25, 0x00 ; 0 + 782: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 786: 21 50 subi r18, 0x01 ; 1 + 788: 30 40 sbci r19, 0x00 ; 0 + 78a: 40 40 sbci r20, 0x00 ; 0 + 78c: 50 40 sbci r21, 0x00 ; 0 + 78e: 56 95 lsr r21 + 790: 47 95 ror r20 + 792: 37 95 ror r19 + 794: 27 95 ror r18 + 796: d8 01 movw r26, r16 + 798: 14 96 adiw r26, 0x04 ; 4 + 79a: ed 91 ld r30, X+ + 79c: fc 91 ld r31, X + 79e: 15 97 sbiw r26, 0x05 ; 5 + 7a0: 30 83 st Z, r19 + 7a2: 16 96 adiw r26, 0x06 ; 6 + 7a4: ed 91 ld r30, X+ + 7a6: fc 91 ld r31, X + 7a8: 17 97 sbiw r26, 0x07 ; 7 + 7aa: 20 83 st Z, r18 + 7ac: 1a 96 adiw r26, 0x0a ; 10 + 7ae: ed 91 ld r30, X+ + 7b0: fc 91 ld r31, X + 7b2: 1b 97 sbiw r26, 0x0b ; 11 + 7b4: 20 81 ld r18, Z + 7b6: c7 01 movw r24, r14 + 7b8: 1e 96 adiw r26, 0x0e ; 14 + 7ba: 0c 90 ld r0, X + 7bc: 1e 97 sbiw r26, 0x0e ; 14 + 7be: 02 c0 rjmp .+4 ; 0x7c4 <_ZN14HardwareSerial5beginEl+0x7a> + 7c0: 88 0f add r24, r24 + 7c2: 99 1f adc r25, r25 + 7c4: 0a 94 dec r0 + 7c6: e2 f7 brpl .-8 ; 0x7c0 <_ZN14HardwareSerial5beginEl+0x76> + 7c8: 28 2b or r18, r24 + 7ca: 20 83 st Z, r18 + 7cc: 1a 96 adiw r26, 0x0a ; 10 + 7ce: ed 91 ld r30, X+ + 7d0: fc 91 ld r31, X + 7d2: 1b 97 sbiw r26, 0x0b ; 11 + 7d4: 20 81 ld r18, Z + 7d6: c7 01 movw r24, r14 + 7d8: 1f 96 adiw r26, 0x0f ; 15 + 7da: 0c 90 ld r0, X + 7dc: 1f 97 sbiw r26, 0x0f ; 15 + 7de: 02 c0 rjmp .+4 ; 0x7e4 <_ZN14HardwareSerial5beginEl+0x9a> + 7e0: 88 0f add r24, r24 + 7e2: 99 1f adc r25, r25 + 7e4: 0a 94 dec r0 + 7e6: e2 f7 brpl .-8 ; 0x7e0 <_ZN14HardwareSerial5beginEl+0x96> + 7e8: 28 2b or r18, r24 + 7ea: 20 83 st Z, r18 + 7ec: 1a 96 adiw r26, 0x0a ; 10 + 7ee: ed 91 ld r30, X+ + 7f0: fc 91 ld r31, X + 7f2: 1b 97 sbiw r26, 0x0b ; 11 + 7f4: 80 81 ld r24, Z + 7f6: 50 96 adiw r26, 0x10 ; 16 + 7f8: 0c 90 ld r0, X + 7fa: 02 c0 rjmp .+4 ; 0x800 <_ZN14HardwareSerial5beginEl+0xb6> + 7fc: ee 0c add r14, r14 + 7fe: ff 1c adc r15, r15 + 800: 0a 94 dec r0 + 802: e2 f7 brpl .-8 ; 0x7fc <_ZN14HardwareSerial5beginEl+0xb2> + 804: 8e 29 or r24, r14 + 806: 80 83 st Z, r24 + 808: 1f 91 pop r17 + 80a: 0f 91 pop r16 + 80c: ff 90 pop r15 + 80e: ef 90 pop r14 + 810: 08 95 ret + +00000812 <_ZN14HardwareSerial3endEv>: + 812: fc 01 movw r30, r24 + 814: a2 85 ldd r26, Z+10 ; 0x0a + 816: b3 85 ldd r27, Z+11 ; 0x0b + 818: 4c 91 ld r20, X + 81a: 21 e0 ldi r18, 0x01 ; 1 + 81c: 30 e0 ldi r19, 0x00 ; 0 + 81e: c9 01 movw r24, r18 + 820: 06 84 ldd r0, Z+14 ; 0x0e + 822: 02 c0 rjmp .+4 ; 0x828 <_ZN14HardwareSerial3endEv+0x16> + 824: 88 0f add r24, r24 + 826: 99 1f adc r25, r25 + 828: 0a 94 dec r0 + 82a: e2 f7 brpl .-8 ; 0x824 <_ZN14HardwareSerial3endEv+0x12> + 82c: 80 95 com r24 + 82e: 84 23 and r24, r20 + 830: 8c 93 st X, r24 + 832: a2 85 ldd r26, Z+10 ; 0x0a + 834: b3 85 ldd r27, Z+11 ; 0x0b + 836: 4c 91 ld r20, X + 838: c9 01 movw r24, r18 + 83a: 07 84 ldd r0, Z+15 ; 0x0f + 83c: 02 c0 rjmp .+4 ; 0x842 <_ZN14HardwareSerial3endEv+0x30> + 83e: 88 0f add r24, r24 + 840: 99 1f adc r25, r25 + 842: 0a 94 dec r0 + 844: e2 f7 brpl .-8 ; 0x83e <_ZN14HardwareSerial3endEv+0x2c> + 846: 80 95 com r24 + 848: 84 23 and r24, r20 + 84a: 8c 93 st X, r24 + 84c: a2 85 ldd r26, Z+10 ; 0x0a + 84e: b3 85 ldd r27, Z+11 ; 0x0b + 850: 8c 91 ld r24, X + 852: 00 88 ldd r0, Z+16 ; 0x10 + 854: 02 c0 rjmp .+4 ; 0x85a <_ZN14HardwareSerial3endEv+0x48> + 856: 22 0f add r18, r18 + 858: 33 1f adc r19, r19 + 85a: 0a 94 dec r0 + 85c: e2 f7 brpl .-8 ; 0x856 <_ZN14HardwareSerial3endEv+0x44> + 85e: 20 95 com r18 + 860: 28 23 and r18, r24 + 862: 2c 93 st X, r18 + 864: 08 95 ret + +00000866 <_ZN14HardwareSerial9availableEv>: + 866: dc 01 movw r26, r24 + 868: 12 96 adiw r26, 0x02 ; 2 + 86a: ed 91 ld r30, X+ + 86c: fc 91 ld r31, X + 86e: 13 97 sbiw r26, 0x03 ; 3 + 870: e0 58 subi r30, 0x80 ; 128 + 872: ff 4f sbci r31, 0xFF ; 255 + 874: 21 91 ld r18, Z+ + 876: 31 91 ld r19, Z+ + 878: 80 81 ld r24, Z + 87a: 91 81 ldd r25, Z+1 ; 0x01 + 87c: 28 1b sub r18, r24 + 87e: 39 0b sbc r19, r25 + 880: 2f 77 andi r18, 0x7F ; 127 + 882: 30 70 andi r19, 0x00 ; 0 + 884: c9 01 movw r24, r18 + 886: 08 95 ret + +00000888 <_ZN14HardwareSerial4peekEv>: + 888: dc 01 movw r26, r24 + 88a: 12 96 adiw r26, 0x02 ; 2 + 88c: ed 91 ld r30, X+ + 88e: fc 91 ld r31, X + 890: 13 97 sbiw r26, 0x03 ; 3 + 892: ee 57 subi r30, 0x7E ; 126 + 894: ff 4f sbci r31, 0xFF ; 255 + 896: 20 81 ld r18, Z + 898: 31 81 ldd r19, Z+1 ; 0x01 + 89a: 92 91 ld r25, -Z + 89c: 82 91 ld r24, -Z + 89e: e0 58 subi r30, 0x80 ; 128 + 8a0: f0 40 sbci r31, 0x00 ; 0 + 8a2: 82 17 cp r24, r18 + 8a4: 93 07 cpc r25, r19 + 8a6: 19 f4 brne .+6 ; 0x8ae <_ZN14HardwareSerial4peekEv+0x26> + 8a8: 2f ef ldi r18, 0xFF ; 255 + 8aa: 3f ef ldi r19, 0xFF ; 255 + 8ac: 05 c0 rjmp .+10 ; 0x8b8 <_ZN14HardwareSerial4peekEv+0x30> + 8ae: e2 0f add r30, r18 + 8b0: f3 1f adc r31, r19 + 8b2: 80 81 ld r24, Z + 8b4: 28 2f mov r18, r24 + 8b6: 30 e0 ldi r19, 0x00 ; 0 + 8b8: c9 01 movw r24, r18 + 8ba: 08 95 ret + +000008bc <_ZN14HardwareSerial4readEv>: + 8bc: dc 01 movw r26, r24 + 8be: 12 96 adiw r26, 0x02 ; 2 + 8c0: ed 91 ld r30, X+ + 8c2: fc 91 ld r31, X + 8c4: 13 97 sbiw r26, 0x03 ; 3 + 8c6: df 01 movw r26, r30 + 8c8: ae 57 subi r26, 0x7E ; 126 + 8ca: bf 4f sbci r27, 0xFF ; 255 + 8cc: 2d 91 ld r18, X+ + 8ce: 3c 91 ld r19, X + 8d0: 11 97 sbiw r26, 0x01 ; 1 + 8d2: e0 58 subi r30, 0x80 ; 128 + 8d4: ff 4f sbci r31, 0xFF ; 255 + 8d6: 80 81 ld r24, Z + 8d8: 91 81 ldd r25, Z+1 ; 0x01 + 8da: e0 58 subi r30, 0x80 ; 128 + 8dc: f0 40 sbci r31, 0x00 ; 0 + 8de: 82 17 cp r24, r18 + 8e0: 93 07 cpc r25, r19 + 8e2: 19 f4 brne .+6 ; 0x8ea <_ZN14HardwareSerial4readEv+0x2e> + 8e4: 2f ef ldi r18, 0xFF ; 255 + 8e6: 3f ef ldi r19, 0xFF ; 255 + 8e8: 0b c0 rjmp .+22 ; 0x900 <__stack+0x1> + 8ea: e2 0f add r30, r18 + 8ec: f3 1f adc r31, r19 + 8ee: 80 81 ld r24, Z + 8f0: 2f 5f subi r18, 0xFF ; 255 + 8f2: 3f 4f sbci r19, 0xFF ; 255 + 8f4: 2f 77 andi r18, 0x7F ; 127 + 8f6: 30 70 andi r19, 0x00 ; 0 + 8f8: 2d 93 st X+, r18 + 8fa: 3c 93 st X, r19 + 8fc: 28 2f mov r18, r24 + 8fe: 30 e0 ldi r19, 0x00 ; 0 + 900: c9 01 movw r24, r18 + 902: 08 95 ret + +00000904 <_ZN14HardwareSerial5flushEv>: + 904: dc 01 movw r26, r24 + 906: 12 96 adiw r26, 0x02 ; 2 + 908: ed 91 ld r30, X+ + 90a: fc 91 ld r31, X + 90c: 13 97 sbiw r26, 0x03 ; 3 + 90e: ee 57 subi r30, 0x7E ; 126 + 910: ff 4f sbci r31, 0xFF ; 255 + 912: 80 81 ld r24, Z + 914: 91 81 ldd r25, Z+1 ; 0x01 + 916: 92 93 st -Z, r25 + 918: 82 93 st -Z, r24 + 91a: 08 95 ret + +0000091c <_ZN14HardwareSerial5writeEh>: + 91c: fc 01 movw r30, r24 + 91e: a0 85 ldd r26, Z+8 ; 0x08 + 920: b1 85 ldd r27, Z+9 ; 0x09 + 922: 21 89 ldd r18, Z+17 ; 0x11 + 924: 8c 91 ld r24, X + 926: 90 e0 ldi r25, 0x00 ; 0 + 928: 02 2e mov r0, r18 + 92a: 02 c0 rjmp .+4 ; 0x930 <_ZN14HardwareSerial5writeEh+0x14> + 92c: 95 95 asr r25 + 92e: 87 95 ror r24 + 930: 0a 94 dec r0 + 932: e2 f7 brpl .-8 ; 0x92c <_ZN14HardwareSerial5writeEh+0x10> + 934: 80 ff sbrs r24, 0 + 936: f6 cf rjmp .-20 ; 0x924 <_ZN14HardwareSerial5writeEh+0x8> + 938: 04 84 ldd r0, Z+12 ; 0x0c + 93a: f5 85 ldd r31, Z+13 ; 0x0d + 93c: e0 2d mov r30, r0 + 93e: 60 83 st Z, r22 + 940: 08 95 ret + +00000942 <_GLOBAL__I_rx_buffer>: + 942: 89 e7 ldi r24, 0x79 ; 121 + 944: 91 e0 ldi r25, 0x01 ; 1 + 946: 90 93 59 03 sts 0x0359, r25 + 94a: 80 93 58 03 sts 0x0358, r24 + 94e: 84 ed ldi r24, 0xD4 ; 212 + 950: 92 e0 ldi r25, 0x02 ; 2 + 952: 90 93 5b 03 sts 0x035B, r25 + 956: 80 93 5a 03 sts 0x035A, r24 + 95a: 85 ec ldi r24, 0xC5 ; 197 + 95c: 90 e0 ldi r25, 0x00 ; 0 + 95e: 90 93 5d 03 sts 0x035D, r25 + 962: 80 93 5c 03 sts 0x035C, r24 + 966: 84 ec ldi r24, 0xC4 ; 196 + 968: 90 e0 ldi r25, 0x00 ; 0 + 96a: 90 93 5f 03 sts 0x035F, r25 + 96e: 80 93 5e 03 sts 0x035E, r24 + 972: 80 ec ldi r24, 0xC0 ; 192 + 974: 90 e0 ldi r25, 0x00 ; 0 + 976: 90 93 61 03 sts 0x0361, r25 + 97a: 80 93 60 03 sts 0x0360, r24 + 97e: 81 ec ldi r24, 0xC1 ; 193 + 980: 90 e0 ldi r25, 0x00 ; 0 + 982: 90 93 63 03 sts 0x0363, r25 + 986: 80 93 62 03 sts 0x0362, r24 + 98a: 86 ec ldi r24, 0xC6 ; 198 + 98c: 90 e0 ldi r25, 0x00 ; 0 + 98e: 90 93 65 03 sts 0x0365, r25 + 992: 80 93 64 03 sts 0x0364, r24 + 996: 84 e0 ldi r24, 0x04 ; 4 + 998: 80 93 66 03 sts 0x0366, r24 + 99c: 83 e0 ldi r24, 0x03 ; 3 + 99e: 80 93 67 03 sts 0x0367, r24 + 9a2: 87 e0 ldi r24, 0x07 ; 7 + 9a4: 80 93 68 03 sts 0x0368, r24 + 9a8: 85 e0 ldi r24, 0x05 ; 5 + 9aa: 80 93 69 03 sts 0x0369, r24 + 9ae: 81 e0 ldi r24, 0x01 ; 1 + 9b0: 80 93 6a 03 sts 0x036A, r24 + 9b4: 08 95 ret + +000009b6 <_ZN5Print5writeEPKc>: + 9b6: 0f 93 push r16 + 9b8: 1f 93 push r17 + 9ba: cf 93 push r28 + 9bc: df 93 push r29 + 9be: 8c 01 movw r16, r24 + 9c0: eb 01 movw r28, r22 + 9c2: 09 c0 rjmp .+18 ; 0x9d6 <_ZN5Print5writeEPKc+0x20> + 9c4: 21 96 adiw r28, 0x01 ; 1 + 9c6: d8 01 movw r26, r16 + 9c8: ed 91 ld r30, X+ + 9ca: fc 91 ld r31, X + 9cc: 01 90 ld r0, Z+ + 9ce: f0 81 ld r31, Z + 9d0: e0 2d mov r30, r0 + 9d2: c8 01 movw r24, r16 + 9d4: 09 95 icall + 9d6: 68 81 ld r22, Y + 9d8: 66 23 and r22, r22 + 9da: a1 f7 brne .-24 ; 0x9c4 <_ZN5Print5writeEPKc+0xe> + 9dc: df 91 pop r29 + 9de: cf 91 pop r28 + 9e0: 1f 91 pop r17 + 9e2: 0f 91 pop r16 + 9e4: 08 95 ret + +000009e6 <_ZN5Print5writeEPKhj>: + 9e6: ef 92 push r14 + 9e8: ff 92 push r15 + 9ea: 0f 93 push r16 + 9ec: 1f 93 push r17 + 9ee: cf 93 push r28 + 9f0: df 93 push r29 + 9f2: 8c 01 movw r16, r24 + 9f4: 7b 01 movw r14, r22 + 9f6: ea 01 movw r28, r20 + 9f8: 0c c0 rjmp .+24 ; 0xa12 <_ZN5Print5writeEPKhj+0x2c> + 9fa: d7 01 movw r26, r14 + 9fc: 6d 91 ld r22, X+ + 9fe: 7d 01 movw r14, r26 + a00: d8 01 movw r26, r16 + a02: ed 91 ld r30, X+ + a04: fc 91 ld r31, X + a06: 01 90 ld r0, Z+ + a08: f0 81 ld r31, Z + a0a: e0 2d mov r30, r0 + a0c: c8 01 movw r24, r16 + a0e: 09 95 icall + a10: 21 97 sbiw r28, 0x01 ; 1 + a12: 20 97 sbiw r28, 0x00 ; 0 + a14: 91 f7 brne .-28 ; 0x9fa <_ZN5Print5writeEPKhj+0x14> + a16: df 91 pop r29 + a18: cf 91 pop r28 + a1a: 1f 91 pop r17 + a1c: 0f 91 pop r16 + a1e: ff 90 pop r15 + a20: ef 90 pop r14 + a22: 08 95 ret + +00000a24 <_ZN5Print5printEPKc>: + a24: dc 01 movw r26, r24 + a26: ed 91 ld r30, X+ + a28: fc 91 ld r31, X + a2a: 02 80 ldd r0, Z+2 ; 0x02 + a2c: f3 81 ldd r31, Z+3 ; 0x03 + a2e: e0 2d mov r30, r0 + a30: 09 95 icall + a32: 08 95 ret + +00000a34 <_ZN5Print5printERK6String>: + a34: cf 92 push r12 + a36: df 92 push r13 + a38: ef 92 push r14 + a3a: ff 92 push r15 + a3c: 0f 93 push r16 + a3e: 1f 93 push r17 + a40: cf 93 push r28 + a42: df 93 push r29 + a44: 6c 01 movw r12, r24 + a46: 7b 01 movw r14, r22 + a48: c0 e0 ldi r28, 0x00 ; 0 + a4a: d0 e0 ldi r29, 0x00 ; 0 + a4c: 0e c0 rjmp .+28 ; 0xa6a <_ZN5Print5printERK6String+0x36> + a4e: d6 01 movw r26, r12 + a50: ed 91 ld r30, X+ + a52: fc 91 ld r31, X + a54: 00 81 ld r16, Z + a56: 11 81 ldd r17, Z+1 ; 0x01 + a58: c7 01 movw r24, r14 + a5a: be 01 movw r22, r28 + a5c: 0e 94 b4 0b call 0x1768 ; 0x1768 <_ZNK6StringixEj> + a60: 68 2f mov r22, r24 + a62: c6 01 movw r24, r12 + a64: f8 01 movw r30, r16 + a66: 09 95 icall + a68: 21 96 adiw r28, 0x01 ; 1 + a6a: f7 01 movw r30, r14 + a6c: 84 81 ldd r24, Z+4 ; 0x04 + a6e: 95 81 ldd r25, Z+5 ; 0x05 + a70: c8 17 cp r28, r24 + a72: d9 07 cpc r29, r25 + a74: 60 f3 brcs .-40 ; 0xa4e <_ZN5Print5printERK6String+0x1a> + a76: df 91 pop r29 + a78: cf 91 pop r28 + a7a: 1f 91 pop r17 + a7c: 0f 91 pop r16 + a7e: ff 90 pop r15 + a80: ef 90 pop r14 + a82: df 90 pop r13 + a84: cf 90 pop r12 + a86: 08 95 ret + +00000a88 <_ZN5Print11printNumberEmh>: + a88: 2f 92 push r2 + a8a: 3f 92 push r3 + a8c: 4f 92 push r4 + a8e: 5f 92 push r5 + a90: 6f 92 push r6 + a92: 7f 92 push r7 + a94: 8f 92 push r8 + a96: 9f 92 push r9 + a98: af 92 push r10 + a9a: bf 92 push r11 + a9c: cf 92 push r12 + a9e: df 92 push r13 + aa0: ef 92 push r14 + aa2: ff 92 push r15 + aa4: 0f 93 push r16 + aa6: 1f 93 push r17 + aa8: df 93 push r29 + aaa: cf 93 push r28 + aac: cd b7 in r28, 0x3d ; 61 + aae: de b7 in r29, 0x3e ; 62 + ab0: a0 97 sbiw r28, 0x20 ; 32 + ab2: 0f b6 in r0, 0x3f ; 63 + ab4: f8 94 cli + ab6: de bf out 0x3e, r29 ; 62 + ab8: 0f be out 0x3f, r0 ; 63 + aba: cd bf out 0x3d, r28 ; 61 + abc: 1c 01 movw r2, r24 + abe: 6a 01 movw r12, r20 + ac0: 7b 01 movw r14, r22 + ac2: 41 15 cp r20, r1 + ac4: 51 05 cpc r21, r1 + ac6: 61 05 cpc r22, r1 + ac8: 71 05 cpc r23, r1 + aca: 49 f4 brne .+18 ; 0xade <_ZN5Print11printNumberEmh+0x56> + acc: 40 e3 ldi r20, 0x30 ; 48 + ace: 50 e0 ldi r21, 0x00 ; 0 + ad0: 60 e0 ldi r22, 0x00 ; 0 + ad2: 70 e0 ldi r23, 0x00 ; 0 + ad4: 20 e0 ldi r18, 0x00 ; 0 + ad6: 30 e0 ldi r19, 0x00 ; 0 + ad8: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + adc: 56 c0 rjmp .+172 ; 0xb8a <_ZN5Print11printNumberEmh+0x102> + ade: 88 24 eor r8, r8 + ae0: 99 24 eor r9, r9 + ae2: 54 01 movw r10, r8 + ae4: 42 2e mov r4, r18 + ae6: 55 24 eor r5, r5 + ae8: 66 24 eor r6, r6 + aea: 77 24 eor r7, r7 + aec: 01 e0 ldi r16, 0x01 ; 1 + aee: 10 e0 ldi r17, 0x00 ; 0 + af0: 0c 0f add r16, r28 + af2: 1d 1f adc r17, r29 + af4: 08 0d add r16, r8 + af6: 19 1d adc r17, r9 + af8: c7 01 movw r24, r14 + afa: b6 01 movw r22, r12 + afc: a3 01 movw r20, r6 + afe: 92 01 movw r18, r4 + b00: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + b04: f8 01 movw r30, r16 + b06: 60 83 st Z, r22 + b08: 08 94 sec + b0a: 81 1c adc r8, r1 + b0c: 91 1c adc r9, r1 + b0e: a1 1c adc r10, r1 + b10: b1 1c adc r11, r1 + b12: c7 01 movw r24, r14 + b14: b6 01 movw r22, r12 + b16: a3 01 movw r20, r6 + b18: 92 01 movw r18, r4 + b1a: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + b1e: c9 01 movw r24, r18 + b20: da 01 movw r26, r20 + b22: 6c 01 movw r12, r24 + b24: 7d 01 movw r14, r26 + b26: c1 14 cp r12, r1 + b28: d1 04 cpc r13, r1 + b2a: e1 04 cpc r14, r1 + b2c: f1 04 cpc r15, r1 + b2e: f1 f6 brne .-68 ; 0xaec <_ZN5Print11printNumberEmh+0x64> + b30: 81 e0 ldi r24, 0x01 ; 1 + b32: e8 2e mov r14, r24 + b34: f1 2c mov r15, r1 + b36: ec 0e add r14, r28 + b38: fd 1e adc r15, r29 + b3a: e8 0c add r14, r8 + b3c: f9 1c adc r15, r9 + b3e: 3e 01 movw r6, r28 + b40: 08 94 sec + b42: 61 1c adc r6, r1 + b44: 71 1c adc r7, r1 + b46: d5 01 movw r26, r10 + b48: c4 01 movw r24, r8 + b4a: 01 97 sbiw r24, 0x01 ; 1 + b4c: a1 09 sbc r26, r1 + b4e: b1 09 sbc r27, r1 + b50: 6c 01 movw r12, r24 + b52: c8 18 sub r12, r8 + b54: d9 08 sbc r13, r9 + b56: 16 c0 rjmp .+44 ; 0xb84 <_ZN5Print11printNumberEmh+0xfc> + b58: f6 01 movw r30, r12 + b5a: ee 0d add r30, r14 + b5c: ff 1d adc r31, r15 + b5e: 40 81 ld r20, Z + b60: 4a 30 cpi r20, 0x0A ; 10 + b62: 10 f4 brcc .+4 ; 0xb68 <_ZN5Print11printNumberEmh+0xe0> + b64: 40 5d subi r20, 0xD0 ; 208 + b66: 01 c0 rjmp .+2 ; 0xb6a <_ZN5Print11printNumberEmh+0xe2> + b68: 49 5c subi r20, 0xC9 ; 201 + b6a: 55 27 eor r21, r21 + b6c: 47 fd sbrc r20, 7 + b6e: 50 95 com r21 + b70: 65 2f mov r22, r21 + b72: 75 2f mov r23, r21 + b74: c1 01 movw r24, r2 + b76: 20 e0 ldi r18, 0x00 ; 0 + b78: 30 e0 ldi r19, 0x00 ; 0 + b7a: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + b7e: 08 94 sec + b80: e1 08 sbc r14, r1 + b82: f1 08 sbc r15, r1 + b84: 6e 14 cp r6, r14 + b86: 7f 04 cpc r7, r15 + b88: 39 f7 brne .-50 ; 0xb58 <_ZN5Print11printNumberEmh+0xd0> + b8a: a0 96 adiw r28, 0x20 ; 32 + b8c: 0f b6 in r0, 0x3f ; 63 + b8e: f8 94 cli + b90: de bf out 0x3e, r29 ; 62 + b92: 0f be out 0x3f, r0 ; 63 + b94: cd bf out 0x3d, r28 ; 61 + b96: cf 91 pop r28 + b98: df 91 pop r29 + b9a: 1f 91 pop r17 + b9c: 0f 91 pop r16 + b9e: ff 90 pop r15 + ba0: ef 90 pop r14 + ba2: df 90 pop r13 + ba4: cf 90 pop r12 + ba6: bf 90 pop r11 + ba8: af 90 pop r10 + baa: 9f 90 pop r9 + bac: 8f 90 pop r8 + bae: 7f 90 pop r7 + bb0: 6f 90 pop r6 + bb2: 5f 90 pop r5 + bb4: 4f 90 pop r4 + bb6: 3f 90 pop r3 + bb8: 2f 90 pop r2 + bba: 08 95 ret + +00000bbc <_ZN5Print5printEmi>: + bbc: dc 01 movw r26, r24 + bbe: 21 15 cp r18, r1 + bc0: 31 05 cpc r19, r1 + bc2: 41 f4 brne .+16 ; 0xbd4 <_ZN5Print5printEmi+0x18> + bc4: ed 91 ld r30, X+ + bc6: fc 91 ld r31, X + bc8: 01 90 ld r0, Z+ + bca: f0 81 ld r31, Z + bcc: e0 2d mov r30, r0 + bce: 64 2f mov r22, r20 + bd0: 09 95 icall + bd2: 08 95 ret + bd4: 0e 94 44 05 call 0xa88 ; 0xa88 <_ZN5Print11printNumberEmh> + bd8: 08 95 ret + +00000bda <_ZN5Print5printEji>: + bda: ef 92 push r14 + bdc: ff 92 push r15 + bde: 0f 93 push r16 + be0: 1f 93 push r17 + be2: 9a 01 movw r18, r20 + be4: 7b 01 movw r14, r22 + be6: 00 e0 ldi r16, 0x00 ; 0 + be8: 10 e0 ldi r17, 0x00 ; 0 + bea: b8 01 movw r22, r16 + bec: a7 01 movw r20, r14 + bee: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + bf2: 1f 91 pop r17 + bf4: 0f 91 pop r16 + bf6: ff 90 pop r15 + bf8: ef 90 pop r14 + bfa: 08 95 ret + +00000bfc <_ZN5Print5printEhi>: + bfc: ef 92 push r14 + bfe: ff 92 push r15 + c00: 0f 93 push r16 + c02: 1f 93 push r17 + c04: 9a 01 movw r18, r20 + c06: e6 2e mov r14, r22 + c08: ff 24 eor r15, r15 + c0a: 00 e0 ldi r16, 0x00 ; 0 + c0c: 10 e0 ldi r17, 0x00 ; 0 + c0e: b8 01 movw r22, r16 + c10: a7 01 movw r20, r14 + c12: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + c16: 1f 91 pop r17 + c18: 0f 91 pop r16 + c1a: ff 90 pop r15 + c1c: ef 90 pop r14 + c1e: 08 95 ret + +00000c20 <_ZN5Print5printEli>: + c20: ef 92 push r14 + c22: ff 92 push r15 + c24: 0f 93 push r16 + c26: 1f 93 push r17 + c28: cf 93 push r28 + c2a: df 93 push r29 + c2c: ec 01 movw r28, r24 + c2e: 7a 01 movw r14, r20 + c30: 8b 01 movw r16, r22 + c32: 21 15 cp r18, r1 + c34: 31 05 cpc r19, r1 + c36: 41 f4 brne .+16 ; 0xc48 <_ZN5Print5printEli+0x28> + c38: e8 81 ld r30, Y + c3a: f9 81 ldd r31, Y+1 ; 0x01 + c3c: 01 90 ld r0, Z+ + c3e: f0 81 ld r31, Z + c40: e0 2d mov r30, r0 + c42: 64 2f mov r22, r20 + c44: 09 95 icall + c46: 1b c0 rjmp .+54 ; 0xc7e <_ZN5Print5printEli+0x5e> + c48: 2a 30 cpi r18, 0x0A ; 10 + c4a: 31 05 cpc r19, r1 + c4c: b1 f4 brne .+44 ; 0xc7a <_ZN5Print5printEli+0x5a> + c4e: 77 ff sbrs r23, 7 + c50: 10 c0 rjmp .+32 ; 0xc72 <_ZN5Print5printEli+0x52> + c52: 4d e2 ldi r20, 0x2D ; 45 + c54: 50 e0 ldi r21, 0x00 ; 0 + c56: 60 e0 ldi r22, 0x00 ; 0 + c58: 70 e0 ldi r23, 0x00 ; 0 + c5a: 20 e0 ldi r18, 0x00 ; 0 + c5c: 30 e0 ldi r19, 0x00 ; 0 + c5e: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + c62: 10 95 com r17 + c64: 00 95 com r16 + c66: f0 94 com r15 + c68: e0 94 com r14 + c6a: e1 1c adc r14, r1 + c6c: f1 1c adc r15, r1 + c6e: 01 1d adc r16, r1 + c70: 11 1d adc r17, r1 + c72: ce 01 movw r24, r28 + c74: b8 01 movw r22, r16 + c76: a7 01 movw r20, r14 + c78: 2a e0 ldi r18, 0x0A ; 10 + c7a: 0e 94 44 05 call 0xa88 ; 0xa88 <_ZN5Print11printNumberEmh> + c7e: df 91 pop r29 + c80: cf 91 pop r28 + c82: 1f 91 pop r17 + c84: 0f 91 pop r16 + c86: ff 90 pop r15 + c88: ef 90 pop r14 + c8a: 08 95 ret + +00000c8c <_ZN5Print5printEii>: + c8c: ef 92 push r14 + c8e: ff 92 push r15 + c90: 0f 93 push r16 + c92: 1f 93 push r17 + c94: 7b 01 movw r14, r22 + c96: 9a 01 movw r18, r20 + c98: 00 27 eor r16, r16 + c9a: f7 fc sbrc r15, 7 + c9c: 00 95 com r16 + c9e: 10 2f mov r17, r16 + ca0: b8 01 movw r22, r16 + ca2: a7 01 movw r20, r14 + ca4: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + ca8: 1f 91 pop r17 + caa: 0f 91 pop r16 + cac: ff 90 pop r15 + cae: ef 90 pop r14 + cb0: 08 95 ret + +00000cb2 <_ZN5Print5printEci>: + cb2: ef 92 push r14 + cb4: ff 92 push r15 + cb6: 0f 93 push r16 + cb8: 1f 93 push r17 + cba: e6 2e mov r14, r22 + cbc: 9a 01 movw r18, r20 + cbe: ff 24 eor r15, r15 + cc0: e7 fc sbrc r14, 7 + cc2: f0 94 com r15 + cc4: 0f 2d mov r16, r15 + cc6: 1f 2d mov r17, r15 + cc8: b8 01 movw r22, r16 + cca: a7 01 movw r20, r14 + ccc: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + cd0: 1f 91 pop r17 + cd2: 0f 91 pop r16 + cd4: ff 90 pop r15 + cd6: ef 90 pop r14 + cd8: 08 95 ret + +00000cda <_ZN5Print7printlnEv>: + cda: 0f 93 push r16 + cdc: 1f 93 push r17 + cde: 8c 01 movw r16, r24 + ce0: 4d e0 ldi r20, 0x0D ; 13 + ce2: 50 e0 ldi r21, 0x00 ; 0 + ce4: 60 e0 ldi r22, 0x00 ; 0 + ce6: 70 e0 ldi r23, 0x00 ; 0 + ce8: 20 e0 ldi r18, 0x00 ; 0 + cea: 30 e0 ldi r19, 0x00 ; 0 + cec: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + cf0: c8 01 movw r24, r16 + cf2: 4a e0 ldi r20, 0x0A ; 10 + cf4: 50 e0 ldi r21, 0x00 ; 0 + cf6: 60 e0 ldi r22, 0x00 ; 0 + cf8: 70 e0 ldi r23, 0x00 ; 0 + cfa: 20 e0 ldi r18, 0x00 ; 0 + cfc: 30 e0 ldi r19, 0x00 ; 0 + cfe: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + d02: 1f 91 pop r17 + d04: 0f 91 pop r16 + d06: 08 95 ret + +00000d08 <_ZN5Print7printlnEmi>: + d08: 0f 93 push r16 + d0a: 1f 93 push r17 + d0c: 8c 01 movw r16, r24 + d0e: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + d12: c8 01 movw r24, r16 + d14: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d18: 1f 91 pop r17 + d1a: 0f 91 pop r16 + d1c: 08 95 ret + +00000d1e <_ZN5Print7printlnEji>: + d1e: cf 92 push r12 + d20: df 92 push r13 + d22: ef 92 push r14 + d24: ff 92 push r15 + d26: 0f 93 push r16 + d28: 1f 93 push r17 + d2a: 8c 01 movw r16, r24 + d2c: 9a 01 movw r18, r20 + d2e: 6b 01 movw r12, r22 + d30: ee 24 eor r14, r14 + d32: ff 24 eor r15, r15 + d34: b7 01 movw r22, r14 + d36: a6 01 movw r20, r12 + d38: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + d3c: c8 01 movw r24, r16 + d3e: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d42: 1f 91 pop r17 + d44: 0f 91 pop r16 + d46: ff 90 pop r15 + d48: ef 90 pop r14 + d4a: df 90 pop r13 + d4c: cf 90 pop r12 + d4e: 08 95 ret + +00000d50 <_ZN5Print7printlnEhi>: + d50: cf 92 push r12 + d52: df 92 push r13 + d54: ef 92 push r14 + d56: ff 92 push r15 + d58: 0f 93 push r16 + d5a: 1f 93 push r17 + d5c: 8c 01 movw r16, r24 + d5e: 9a 01 movw r18, r20 + d60: c6 2e mov r12, r22 + d62: dd 24 eor r13, r13 + d64: ee 24 eor r14, r14 + d66: ff 24 eor r15, r15 + d68: b7 01 movw r22, r14 + d6a: a6 01 movw r20, r12 + d6c: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + d70: c8 01 movw r24, r16 + d72: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d76: 1f 91 pop r17 + d78: 0f 91 pop r16 + d7a: ff 90 pop r15 + d7c: ef 90 pop r14 + d7e: df 90 pop r13 + d80: cf 90 pop r12 + d82: 08 95 ret + +00000d84 <_ZN5Print7printlnEPKc>: + d84: 0f 93 push r16 + d86: 1f 93 push r17 + d88: 8c 01 movw r16, r24 + d8a: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + d8e: c8 01 movw r24, r16 + d90: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d94: 1f 91 pop r17 + d96: 0f 91 pop r16 + d98: 08 95 ret + +00000d9a <_ZN5Print7printlnERK6String>: + d9a: 0f 93 push r16 + d9c: 1f 93 push r17 + d9e: 8c 01 movw r16, r24 + da0: 0e 94 1a 05 call 0xa34 ; 0xa34 <_ZN5Print5printERK6String> + da4: c8 01 movw r24, r16 + da6: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + daa: 1f 91 pop r17 + dac: 0f 91 pop r16 + dae: 08 95 ret + +00000db0 <_ZN5Print7printlnEli>: + db0: 0f 93 push r16 + db2: 1f 93 push r17 + db4: 8c 01 movw r16, r24 + db6: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + dba: c8 01 movw r24, r16 + dbc: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + dc0: 1f 91 pop r17 + dc2: 0f 91 pop r16 + dc4: 08 95 ret + +00000dc6 <_ZN5Print7printlnEii>: + dc6: cf 92 push r12 + dc8: df 92 push r13 + dca: ef 92 push r14 + dcc: ff 92 push r15 + dce: 0f 93 push r16 + dd0: 1f 93 push r17 + dd2: 8c 01 movw r16, r24 + dd4: 6b 01 movw r12, r22 + dd6: 9a 01 movw r18, r20 + dd8: ee 24 eor r14, r14 + dda: d7 fc sbrc r13, 7 + ddc: e0 94 com r14 + dde: fe 2c mov r15, r14 + de0: b7 01 movw r22, r14 + de2: a6 01 movw r20, r12 + de4: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + de8: c8 01 movw r24, r16 + dea: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + dee: 1f 91 pop r17 + df0: 0f 91 pop r16 + df2: ff 90 pop r15 + df4: ef 90 pop r14 + df6: df 90 pop r13 + df8: cf 90 pop r12 + dfa: 08 95 ret + +00000dfc <_ZN5Print7printlnEci>: + dfc: cf 92 push r12 + dfe: df 92 push r13 + e00: ef 92 push r14 + e02: ff 92 push r15 + e04: 0f 93 push r16 + e06: 1f 93 push r17 + e08: 8c 01 movw r16, r24 + e0a: c6 2e mov r12, r22 + e0c: 9a 01 movw r18, r20 + e0e: dd 24 eor r13, r13 + e10: c7 fc sbrc r12, 7 + e12: d0 94 com r13 + e14: ed 2c mov r14, r13 + e16: fd 2c mov r15, r13 + e18: b7 01 movw r22, r14 + e1a: a6 01 movw r20, r12 + e1c: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + e20: c8 01 movw r24, r16 + e22: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + e26: 1f 91 pop r17 + e28: 0f 91 pop r16 + e2a: ff 90 pop r15 + e2c: ef 90 pop r14 + e2e: df 90 pop r13 + e30: cf 90 pop r12 + e32: 08 95 ret + +00000e34 <_ZN5Print10printFloatEdh>: + e34: 9f 92 push r9 + e36: af 92 push r10 + e38: bf 92 push r11 + e3a: cf 92 push r12 + e3c: df 92 push r13 + e3e: ef 92 push r14 + e40: ff 92 push r15 + e42: 0f 93 push r16 + e44: 1f 93 push r17 + e46: cf 93 push r28 + e48: df 93 push r29 + e4a: ec 01 movw r28, r24 + e4c: 7a 01 movw r14, r20 + e4e: 8b 01 movw r16, r22 + e50: 92 2e mov r9, r18 + e52: cb 01 movw r24, r22 + e54: ba 01 movw r22, r20 + e56: 20 e0 ldi r18, 0x00 ; 0 + e58: 30 e0 ldi r19, 0x00 ; 0 + e5a: 40 e0 ldi r20, 0x00 ; 0 + e5c: 50 e0 ldi r21, 0x00 ; 0 + e5e: 0e 94 a3 1a call 0x3546 ; 0x3546 <__ltsf2> + e62: 88 23 and r24, r24 + e64: 6c f4 brge .+26 ; 0xe80 <_ZN5Print10printFloatEdh+0x4c> + e66: ce 01 movw r24, r28 + e68: 4d e2 ldi r20, 0x2D ; 45 + e6a: 50 e0 ldi r21, 0x00 ; 0 + e6c: 60 e0 ldi r22, 0x00 ; 0 + e6e: 70 e0 ldi r23, 0x00 ; 0 + e70: 20 e0 ldi r18, 0x00 ; 0 + e72: 30 e0 ldi r19, 0x00 ; 0 + e74: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + e78: 17 fb bst r17, 7 + e7a: 10 95 com r17 + e7c: 17 f9 bld r17, 7 + e7e: 10 95 com r17 + e80: 20 e0 ldi r18, 0x00 ; 0 + e82: 30 e0 ldi r19, 0x00 ; 0 + e84: 40 e0 ldi r20, 0x00 ; 0 + e86: 5f e3 ldi r21, 0x3F ; 63 + e88: aa 24 eor r10, r10 + e8a: 0b c0 rjmp .+22 ; 0xea2 <_ZN5Print10printFloatEdh+0x6e> + e8c: ca 01 movw r24, r20 + e8e: b9 01 movw r22, r18 + e90: 20 e0 ldi r18, 0x00 ; 0 + e92: 30 e0 ldi r19, 0x00 ; 0 + e94: 40 e2 ldi r20, 0x20 ; 32 + e96: 51 e4 ldi r21, 0x41 ; 65 + e98: 0e 94 c7 19 call 0x338e ; 0x338e <__divsf3> + e9c: 9b 01 movw r18, r22 + e9e: ac 01 movw r20, r24 + ea0: a3 94 inc r10 + ea2: a9 14 cp r10, r9 + ea4: 98 f3 brcs .-26 ; 0xe8c <_ZN5Print10printFloatEdh+0x58> + ea6: c8 01 movw r24, r16 + ea8: b7 01 movw r22, r14 + eaa: 0e 94 a0 18 call 0x3140 ; 0x3140 <__addsf3> + eae: 5b 01 movw r10, r22 + eb0: 6c 01 movw r12, r24 + eb2: 0e 94 f7 16 call 0x2dee ; 0x2dee <__fixunssfsi> + eb6: 7b 01 movw r14, r22 + eb8: 8c 01 movw r16, r24 + eba: ce 01 movw r24, r28 + ebc: b8 01 movw r22, r16 + ebe: a7 01 movw r20, r14 + ec0: 2a e0 ldi r18, 0x0A ; 10 + ec2: 30 e0 ldi r19, 0x00 ; 0 + ec4: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + ec8: 99 20 and r9, r9 + eca: 29 f0 breq .+10 ; 0xed6 <_ZN5Print10printFloatEdh+0xa2> + ecc: ce 01 movw r24, r28 + ece: 69 e9 ldi r22, 0x99 ; 153 + ed0: 71 e0 ldi r23, 0x01 ; 1 + ed2: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + ed6: c8 01 movw r24, r16 + ed8: b7 01 movw r22, r14 + eda: 0e 94 85 1b call 0x370a ; 0x370a <__floatunsisf> + ede: 9b 01 movw r18, r22 + ee0: ac 01 movw r20, r24 + ee2: c6 01 movw r24, r12 + ee4: b5 01 movw r22, r10 + ee6: 0e 94 6f 18 call 0x30de ; 0x30de <__subsf3> + eea: 22 c0 rjmp .+68 ; 0xf30 <_ZN5Print10printFloatEdh+0xfc> + eec: 20 e0 ldi r18, 0x00 ; 0 + eee: 30 e0 ldi r19, 0x00 ; 0 + ef0: 40 e2 ldi r20, 0x20 ; 32 + ef2: 51 e4 ldi r21, 0x41 ; 65 + ef4: 0e 94 cd 18 call 0x319a ; 0x319a <__mulsf3> + ef8: 7b 01 movw r14, r22 + efa: 8c 01 movw r16, r24 + efc: 0e 94 31 1b call 0x3662 ; 0x3662 <__fixsfsi> + f00: 5b 01 movw r10, r22 + f02: 6c 01 movw r12, r24 + f04: cc 24 eor r12, r12 + f06: b7 fc sbrc r11, 7 + f08: c0 94 com r12 + f0a: dc 2c mov r13, r12 + f0c: ce 01 movw r24, r28 + f0e: b6 01 movw r22, r12 + f10: a5 01 movw r20, r10 + f12: 2a e0 ldi r18, 0x0A ; 10 + f14: 30 e0 ldi r19, 0x00 ; 0 + f16: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + f1a: c6 01 movw r24, r12 + f1c: b5 01 movw r22, r10 + f1e: 0e 94 d3 1a call 0x35a6 ; 0x35a6 <__floatsisf> + f22: 9b 01 movw r18, r22 + f24: ac 01 movw r20, r24 + f26: c8 01 movw r24, r16 + f28: b7 01 movw r22, r14 + f2a: 0e 94 6f 18 call 0x30de ; 0x30de <__subsf3> + f2e: 9a 94 dec r9 + f30: 99 20 and r9, r9 + f32: e1 f6 brne .-72 ; 0xeec <_ZN5Print10printFloatEdh+0xb8> + f34: df 91 pop r29 + f36: cf 91 pop r28 + f38: 1f 91 pop r17 + f3a: 0f 91 pop r16 + f3c: ff 90 pop r15 + f3e: ef 90 pop r14 + f40: df 90 pop r13 + f42: cf 90 pop r12 + f44: bf 90 pop r11 + f46: af 90 pop r10 + f48: 9f 90 pop r9 + f4a: 08 95 ret + +00000f4c <_ZN5Print5printEdi>: + f4c: 0e 94 1a 07 call 0xe34 ; 0xe34 <_ZN5Print10printFloatEdh> + f50: 08 95 ret + +00000f52 <_ZN5Print7printlnEdi>: + f52: 0f 93 push r16 + f54: 1f 93 push r17 + f56: 8c 01 movw r16, r24 + f58: 0e 94 1a 07 call 0xe34 ; 0xe34 <_ZN5Print10printFloatEdh> + f5c: c8 01 movw r24, r16 + f5e: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + f62: 1f 91 pop r17 + f64: 0f 91 pop r16 + f66: 08 95 ret + +00000f68 <_Z12disableTimerh>: + f68: 81 30 cpi r24, 0x01 ; 1 + f6a: 41 f0 breq .+16 ; 0xf7c <_Z12disableTimerh+0x14> + f6c: 81 30 cpi r24, 0x01 ; 1 + f6e: 18 f0 brcs .+6 ; 0xf76 <_Z12disableTimerh+0xe> + f70: 82 30 cpi r24, 0x02 ; 2 + f72: d1 f4 brne .+52 ; 0xfa8 <_Z12disableTimerh+0x40> + f74: 09 c0 rjmp .+18 ; 0xf88 <_Z12disableTimerh+0x20> + f76: 10 92 6e 00 sts 0x006E, r1 + f7a: 08 95 ret + f7c: 80 91 6f 00 lds r24, 0x006F + f80: 8d 7f andi r24, 0xFD ; 253 + f82: 80 93 6f 00 sts 0x006F, r24 + f86: 08 95 ret + f88: 80 91 70 00 lds r24, 0x0070 + f8c: 8d 7f andi r24, 0xFD ; 253 + f8e: 80 93 70 00 sts 0x0070, r24 + f92: 81 e0 ldi r24, 0x01 ; 1 + f94: 80 93 b0 00 sts 0x00B0, r24 + f98: 80 91 b1 00 lds r24, 0x00B1 + f9c: 88 7f andi r24, 0xF8 ; 248 + f9e: 84 60 ori r24, 0x04 ; 4 + fa0: 80 93 b1 00 sts 0x00B1, r24 + fa4: 10 92 b3 00 sts 0x00B3, r1 + fa8: 08 95 ret + +00000faa <_Z6noToneh>: + faa: 1f 93 push r17 + fac: 18 2f mov r17, r24 + fae: 80 91 a5 01 lds r24, 0x01A5 + fb2: 81 17 cp r24, r17 + fb4: 11 f0 breq .+4 ; 0xfba <_Z6noToneh+0x10> + fb6: 9f ef ldi r25, 0xFF ; 255 + fb8: 06 c0 rjmp .+12 ; 0xfc6 <_Z6noToneh+0x1c> + fba: e8 e6 ldi r30, 0x68 ; 104 + fbc: f0 e0 ldi r31, 0x00 ; 0 + fbe: 94 91 lpm r25, Z+ + fc0: 8f ef ldi r24, 0xFF ; 255 + fc2: 80 93 a5 01 sts 0x01A5, r24 + fc6: 89 2f mov r24, r25 + fc8: 0e 94 b4 07 call 0xf68 ; 0xf68 <_Z12disableTimerh> + fcc: 81 2f mov r24, r17 + fce: 60 e0 ldi r22, 0x00 ; 0 + fd0: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + fd4: 1f 91 pop r17 + fd6: 08 95 ret + +00000fd8 <__vector_7>: + fd8: 1f 92 push r1 + fda: 0f 92 push r0 + fdc: 0f b6 in r0, 0x3f ; 63 + fde: 0f 92 push r0 + fe0: 11 24 eor r1, r1 + fe2: 2f 93 push r18 + fe4: 3f 93 push r19 + fe6: 4f 93 push r20 + fe8: 5f 93 push r21 + fea: 6f 93 push r22 + fec: 7f 93 push r23 + fee: 8f 93 push r24 + ff0: 9f 93 push r25 + ff2: af 93 push r26 + ff4: bf 93 push r27 + ff6: ef 93 push r30 + ff8: ff 93 push r31 + ffa: 80 91 79 03 lds r24, 0x0379 + ffe: 90 91 7a 03 lds r25, 0x037A + 1002: a0 91 7b 03 lds r26, 0x037B + 1006: b0 91 7c 03 lds r27, 0x037C + 100a: 00 97 sbiw r24, 0x00 ; 0 + 100c: a1 05 cpc r26, r1 + 100e: b1 05 cpc r27, r1 + 1010: 51 f1 breq .+84 ; 0x1066 <__vector_7+0x8e> + 1012: e0 91 7d 03 lds r30, 0x037D + 1016: f0 91 7e 03 lds r31, 0x037E + 101a: 80 81 ld r24, Z + 101c: 90 91 7f 03 lds r25, 0x037F + 1020: 89 27 eor r24, r25 + 1022: 80 83 st Z, r24 + 1024: 80 91 79 03 lds r24, 0x0379 + 1028: 90 91 7a 03 lds r25, 0x037A + 102c: a0 91 7b 03 lds r26, 0x037B + 1030: b0 91 7c 03 lds r27, 0x037C + 1034: 18 16 cp r1, r24 + 1036: 19 06 cpc r1, r25 + 1038: 1a 06 cpc r1, r26 + 103a: 1b 06 cpc r1, r27 + 103c: c4 f4 brge .+48 ; 0x106e <__vector_7+0x96> + 103e: 80 91 79 03 lds r24, 0x0379 + 1042: 90 91 7a 03 lds r25, 0x037A + 1046: a0 91 7b 03 lds r26, 0x037B + 104a: b0 91 7c 03 lds r27, 0x037C + 104e: 01 97 sbiw r24, 0x01 ; 1 + 1050: a1 09 sbc r26, r1 + 1052: b1 09 sbc r27, r1 + 1054: 80 93 79 03 sts 0x0379, r24 + 1058: 90 93 7a 03 sts 0x037A, r25 + 105c: a0 93 7b 03 sts 0x037B, r26 + 1060: b0 93 7c 03 sts 0x037C, r27 + 1064: 04 c0 rjmp .+8 ; 0x106e <__vector_7+0x96> + 1066: 80 91 a5 01 lds r24, 0x01A5 + 106a: 0e 94 d5 07 call 0xfaa ; 0xfaa <_Z6noToneh> + 106e: ff 91 pop r31 + 1070: ef 91 pop r30 + 1072: bf 91 pop r27 + 1074: af 91 pop r26 + 1076: 9f 91 pop r25 + 1078: 8f 91 pop r24 + 107a: 7f 91 pop r23 + 107c: 6f 91 pop r22 + 107e: 5f 91 pop r21 + 1080: 4f 91 pop r20 + 1082: 3f 91 pop r19 + 1084: 2f 91 pop r18 + 1086: 0f 90 pop r0 + 1088: 0f be out 0x3f, r0 ; 63 + 108a: 0f 90 pop r0 + 108c: 1f 90 pop r1 + 108e: 18 95 reti + +00001090 <_Z4tonehjm>: + 1090: 2f 92 push r2 + 1092: 3f 92 push r3 + 1094: 5f 92 push r5 + 1096: 6f 92 push r6 + 1098: 7f 92 push r7 + 109a: 8f 92 push r8 + 109c: 9f 92 push r9 + 109e: af 92 push r10 + 10a0: bf 92 push r11 + 10a2: cf 92 push r12 + 10a4: df 92 push r13 + 10a6: ef 92 push r14 + 10a8: ff 92 push r15 + 10aa: 0f 93 push r16 + 10ac: 1f 93 push r17 + 10ae: df 93 push r29 + 10b0: cf 93 push r28 + 10b2: 00 d0 rcall .+0 ; 0x10b4 <_Z4tonehjm+0x24> + 10b4: 00 d0 rcall .+0 ; 0x10b6 <_Z4tonehjm+0x26> + 10b6: cd b7 in r28, 0x3d ; 61 + 10b8: de b7 in r29, 0x3e ; 62 + 10ba: a8 2f mov r26, r24 + 10bc: 1b 01 movw r2, r22 + 10be: 29 83 std Y+1, r18 ; 0x01 + 10c0: 3a 83 std Y+2, r19 ; 0x02 + 10c2: 4b 83 std Y+3, r20 ; 0x03 + 10c4: 5c 83 std Y+4, r21 ; 0x04 + 10c6: 80 91 a5 01 lds r24, 0x01A5 + 10ca: 8a 17 cp r24, r26 + 10cc: 21 f4 brne .+8 ; 0x10d6 <_Z4tonehjm+0x46> + 10ce: e8 e6 ldi r30, 0x68 ; 104 + 10d0: f0 e0 ldi r31, 0x00 ; 0 + 10d2: 54 90 lpm r5, Z+ + 10d4: 82 c0 rjmp .+260 ; 0x11da <_Z4tonehjm+0x14a> + 10d6: 8f 3f cpi r24, 0xFF ; 255 + 10d8: 09 f0 breq .+2 ; 0x10dc <_Z4tonehjm+0x4c> + 10da: d9 c1 rjmp .+946 ; 0x148e <_Z4tonehjm+0x3fe> + 10dc: a0 93 a5 01 sts 0x01A5, r26 + 10e0: e8 e6 ldi r30, 0x68 ; 104 + 10e2: f0 e0 ldi r31, 0x00 ; 0 + 10e4: 54 90 lpm r5, Z+ + 10e6: 2f ef ldi r18, 0xFF ; 255 + 10e8: 52 16 cp r5, r18 + 10ea: 09 f4 brne .+2 ; 0x10ee <_Z4tonehjm+0x5e> + 10ec: d0 c1 rjmp .+928 ; 0x148e <_Z4tonehjm+0x3fe> + 10ee: 81 e0 ldi r24, 0x01 ; 1 + 10f0: 58 16 cp r5, r24 + 10f2: 39 f1 breq .+78 ; 0x1142 <_Z4tonehjm+0xb2> + 10f4: 92 e0 ldi r25, 0x02 ; 2 + 10f6: 59 16 cp r5, r25 + 10f8: 09 f4 brne .+2 ; 0x10fc <_Z4tonehjm+0x6c> + 10fa: 49 c0 rjmp .+146 ; 0x118e <_Z4tonehjm+0xfe> + 10fc: 55 20 and r5, r5 + 10fe: 09 f0 breq .+2 ; 0x1102 <_Z4tonehjm+0x72> + 1100: 6c c0 rjmp .+216 ; 0x11da <_Z4tonehjm+0x14a> + 1102: 14 bc out 0x24, r1 ; 36 + 1104: 15 bc out 0x25, r1 ; 37 + 1106: 84 b5 in r24, 0x24 ; 36 + 1108: 82 60 ori r24, 0x02 ; 2 + 110a: 84 bd out 0x24, r24 ; 36 + 110c: 85 b5 in r24, 0x25 ; 37 + 110e: 81 60 ori r24, 0x01 ; 1 + 1110: 85 bd out 0x25, r24 ; 37 + 1112: 2a 2f mov r18, r26 + 1114: 30 e0 ldi r19, 0x00 ; 0 + 1116: f9 01 movw r30, r18 + 1118: e9 57 subi r30, 0x79 ; 121 + 111a: ff 4f sbci r31, 0xFF ; 255 + 111c: e4 91 lpm r30, Z+ + 111e: f0 e0 ldi r31, 0x00 ; 0 + 1120: ee 0f add r30, r30 + 1122: ff 1f adc r31, r31 + 1124: ed 58 subi r30, 0x8D ; 141 + 1126: ff 4f sbci r31, 0xFF ; 255 + 1128: 85 91 lpm r24, Z+ + 112a: 94 91 lpm r25, Z+ + 112c: 90 93 70 03 sts 0x0370, r25 + 1130: 80 93 6f 03 sts 0x036F, r24 + 1134: 25 56 subi r18, 0x65 ; 101 + 1136: 3f 4f sbci r19, 0xFF ; 255 + 1138: f9 01 movw r30, r18 + 113a: 84 91 lpm r24, Z+ + 113c: 80 93 71 03 sts 0x0371, r24 + 1140: 4e c0 rjmp .+156 ; 0x11de <_Z4tonehjm+0x14e> + 1142: 10 92 80 00 sts 0x0080, r1 + 1146: 10 92 81 00 sts 0x0081, r1 + 114a: 80 91 81 00 lds r24, 0x0081 + 114e: 88 60 ori r24, 0x08 ; 8 + 1150: 80 93 81 00 sts 0x0081, r24 + 1154: 80 91 81 00 lds r24, 0x0081 + 1158: 81 60 ori r24, 0x01 ; 1 + 115a: 80 93 81 00 sts 0x0081, r24 + 115e: 2a 2f mov r18, r26 + 1160: 30 e0 ldi r19, 0x00 ; 0 + 1162: f9 01 movw r30, r18 + 1164: e9 57 subi r30, 0x79 ; 121 + 1166: ff 4f sbci r31, 0xFF ; 255 + 1168: e4 91 lpm r30, Z+ + 116a: f0 e0 ldi r31, 0x00 ; 0 + 116c: ee 0f add r30, r30 + 116e: ff 1f adc r31, r31 + 1170: ed 58 subi r30, 0x8D ; 141 + 1172: ff 4f sbci r31, 0xFF ; 255 + 1174: 85 91 lpm r24, Z+ + 1176: 94 91 lpm r25, Z+ + 1178: 90 93 77 03 sts 0x0377, r25 + 117c: 80 93 76 03 sts 0x0376, r24 + 1180: 25 56 subi r18, 0x65 ; 101 + 1182: 3f 4f sbci r19, 0xFF ; 255 + 1184: f9 01 movw r30, r18 + 1186: 84 91 lpm r24, Z+ + 1188: 80 93 78 03 sts 0x0378, r24 + 118c: 28 c0 rjmp .+80 ; 0x11de <_Z4tonehjm+0x14e> + 118e: 10 92 b0 00 sts 0x00B0, r1 + 1192: 10 92 b1 00 sts 0x00B1, r1 + 1196: 80 91 b0 00 lds r24, 0x00B0 + 119a: 82 60 ori r24, 0x02 ; 2 + 119c: 80 93 b0 00 sts 0x00B0, r24 + 11a0: 80 91 b1 00 lds r24, 0x00B1 + 11a4: 81 60 ori r24, 0x01 ; 1 + 11a6: 80 93 b1 00 sts 0x00B1, r24 + 11aa: 2a 2f mov r18, r26 + 11ac: 30 e0 ldi r19, 0x00 ; 0 + 11ae: f9 01 movw r30, r18 + 11b0: e9 57 subi r30, 0x79 ; 121 + 11b2: ff 4f sbci r31, 0xFF ; 255 + 11b4: e4 91 lpm r30, Z+ + 11b6: f0 e0 ldi r31, 0x00 ; 0 + 11b8: ee 0f add r30, r30 + 11ba: ff 1f adc r31, r31 + 11bc: ed 58 subi r30, 0x8D ; 141 + 11be: ff 4f sbci r31, 0xFF ; 255 + 11c0: 85 91 lpm r24, Z+ + 11c2: 94 91 lpm r25, Z+ + 11c4: 90 93 7e 03 sts 0x037E, r25 + 11c8: 80 93 7d 03 sts 0x037D, r24 + 11cc: 25 56 subi r18, 0x65 ; 101 + 11ce: 3f 4f sbci r19, 0xFF ; 255 + 11d0: f9 01 movw r30, r18 + 11d2: 84 91 lpm r24, Z+ + 11d4: 80 93 7f 03 sts 0x037F, r24 + 11d8: 02 c0 rjmp .+4 ; 0x11de <_Z4tonehjm+0x14e> + 11da: 57 fc sbrc r5, 7 + 11dc: 58 c1 rjmp .+688 ; 0x148e <_Z4tonehjm+0x3fe> + 11de: 8a 2f mov r24, r26 + 11e0: 61 e0 ldi r22, 0x01 ; 1 + 11e2: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 11e6: 55 20 and r5, r5 + 11e8: 21 f0 breq .+8 ; 0x11f2 <_Z4tonehjm+0x162> + 11ea: f2 e0 ldi r31, 0x02 ; 2 + 11ec: 5f 16 cp r5, r31 + 11ee: 09 f0 breq .+2 ; 0x11f2 <_Z4tonehjm+0x162> + 11f0: bd c0 rjmp .+378 ; 0x136c <_Z4tonehjm+0x2dc> + 11f2: 31 01 movw r6, r2 + 11f4: 88 24 eor r8, r8 + 11f6: 99 24 eor r9, r9 + 11f8: 60 e0 ldi r22, 0x00 ; 0 + 11fa: 79 e0 ldi r23, 0x09 ; 9 + 11fc: 8d e3 ldi r24, 0x3D ; 61 + 11fe: 90 e0 ldi r25, 0x00 ; 0 + 1200: a4 01 movw r20, r8 + 1202: 93 01 movw r18, r6 + 1204: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 1208: 59 01 movw r10, r18 + 120a: 6a 01 movw r12, r20 + 120c: 86 01 movw r16, r12 + 120e: 75 01 movw r14, r10 + 1210: 08 94 sec + 1212: e1 08 sbc r14, r1 + 1214: f1 08 sbc r15, r1 + 1216: 01 09 sbc r16, r1 + 1218: 11 09 sbc r17, r1 + 121a: 2f ef ldi r18, 0xFF ; 255 + 121c: e2 16 cp r14, r18 + 121e: f1 04 cpc r15, r1 + 1220: 01 05 cpc r16, r1 + 1222: 11 05 cpc r17, r1 + 1224: 09 f0 breq .+2 ; 0x1228 <_Z4tonehjm+0x198> + 1226: 08 f4 brcc .+2 ; 0x122a <_Z4tonehjm+0x19a> + 1228: 98 c0 rjmp .+304 ; 0x135a <_Z4tonehjm+0x2ca> + 122a: 60 e2 ldi r22, 0x20 ; 32 + 122c: 71 ea ldi r23, 0xA1 ; 161 + 122e: 87 e0 ldi r24, 0x07 ; 7 + 1230: 90 e0 ldi r25, 0x00 ; 0 + 1232: a4 01 movw r20, r8 + 1234: 93 01 movw r18, r6 + 1236: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 123a: 79 01 movw r14, r18 + 123c: 8a 01 movw r16, r20 + 123e: 08 94 sec + 1240: e1 08 sbc r14, r1 + 1242: f1 08 sbc r15, r1 + 1244: 01 09 sbc r16, r1 + 1246: 11 09 sbc r17, r1 + 1248: 82 e0 ldi r24, 0x02 ; 2 + 124a: 58 16 cp r5, r24 + 124c: c1 f4 brne .+48 ; 0x127e <_Z4tonehjm+0x1ee> + 124e: 9f ef ldi r25, 0xFF ; 255 + 1250: e9 16 cp r14, r25 + 1252: f1 04 cpc r15, r1 + 1254: 01 05 cpc r16, r1 + 1256: 11 05 cpc r17, r1 + 1258: 09 f0 breq .+2 ; 0x125c <_Z4tonehjm+0x1cc> + 125a: 08 f4 brcc .+2 ; 0x125e <_Z4tonehjm+0x1ce> + 125c: 83 c0 rjmp .+262 ; 0x1364 <_Z4tonehjm+0x2d4> + 125e: 68 e4 ldi r22, 0x48 ; 72 + 1260: 78 ee ldi r23, 0xE8 ; 232 + 1262: 81 e0 ldi r24, 0x01 ; 1 + 1264: 90 e0 ldi r25, 0x00 ; 0 + 1266: a4 01 movw r20, r8 + 1268: 93 01 movw r18, r6 + 126a: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 126e: 79 01 movw r14, r18 + 1270: 8a 01 movw r16, r20 + 1272: 08 94 sec + 1274: e1 08 sbc r14, r1 + 1276: f1 08 sbc r15, r1 + 1278: 01 09 sbc r16, r1 + 127a: 11 09 sbc r17, r1 + 127c: 83 e0 ldi r24, 0x03 ; 3 + 127e: af ef ldi r26, 0xFF ; 255 + 1280: ea 16 cp r14, r26 + 1282: f1 04 cpc r15, r1 + 1284: 01 05 cpc r16, r1 + 1286: 11 05 cpc r17, r1 + 1288: 09 f0 breq .+2 ; 0x128c <_Z4tonehjm+0x1fc> + 128a: 08 f4 brcc .+2 ; 0x128e <_Z4tonehjm+0x1fe> + 128c: 67 c0 rjmp .+206 ; 0x135c <_Z4tonehjm+0x2cc> + 128e: 64 e2 ldi r22, 0x24 ; 36 + 1290: 74 ef ldi r23, 0xF4 ; 244 + 1292: 80 e0 ldi r24, 0x00 ; 0 + 1294: 90 e0 ldi r25, 0x00 ; 0 + 1296: a4 01 movw r20, r8 + 1298: 93 01 movw r18, r6 + 129a: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 129e: 79 01 movw r14, r18 + 12a0: 8a 01 movw r16, r20 + 12a2: 08 94 sec + 12a4: e1 08 sbc r14, r1 + 12a6: f1 08 sbc r15, r1 + 12a8: 01 09 sbc r16, r1 + 12aa: 11 09 sbc r17, r1 + 12ac: 55 20 and r5, r5 + 12ae: 11 f4 brne .+4 ; 0x12b4 <_Z4tonehjm+0x224> + 12b0: 83 e0 ldi r24, 0x03 ; 3 + 12b2: 1d c0 rjmp .+58 ; 0x12ee <_Z4tonehjm+0x25e> + 12b4: b2 e0 ldi r27, 0x02 ; 2 + 12b6: 5b 16 cp r5, r27 + 12b8: 11 f0 breq .+4 ; 0x12be <_Z4tonehjm+0x22e> + 12ba: 84 e0 ldi r24, 0x04 ; 4 + 12bc: 18 c0 rjmp .+48 ; 0x12ee <_Z4tonehjm+0x25e> + 12be: ef ef ldi r30, 0xFF ; 255 + 12c0: ee 16 cp r14, r30 + 12c2: f1 04 cpc r15, r1 + 12c4: 01 05 cpc r16, r1 + 12c6: 11 05 cpc r17, r1 + 12c8: 09 f0 breq .+2 ; 0x12cc <_Z4tonehjm+0x23c> + 12ca: 08 f4 brcc .+2 ; 0x12ce <_Z4tonehjm+0x23e> + 12cc: de c0 rjmp .+444 ; 0x148a <_Z4tonehjm+0x3fa> + 12ce: 62 e1 ldi r22, 0x12 ; 18 + 12d0: 7a e7 ldi r23, 0x7A ; 122 + 12d2: 80 e0 ldi r24, 0x00 ; 0 + 12d4: 90 e0 ldi r25, 0x00 ; 0 + 12d6: a4 01 movw r20, r8 + 12d8: 93 01 movw r18, r6 + 12da: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 12de: 79 01 movw r14, r18 + 12e0: 8a 01 movw r16, r20 + 12e2: 08 94 sec + 12e4: e1 08 sbc r14, r1 + 12e6: f1 08 sbc r15, r1 + 12e8: 01 09 sbc r16, r1 + 12ea: 11 09 sbc r17, r1 + 12ec: 85 e0 ldi r24, 0x05 ; 5 + 12ee: ff ef ldi r31, 0xFF ; 255 + 12f0: ef 16 cp r14, r31 + 12f2: f1 04 cpc r15, r1 + 12f4: 01 05 cpc r16, r1 + 12f6: 11 05 cpc r17, r1 + 12f8: 89 f1 breq .+98 ; 0x135c <_Z4tonehjm+0x2cc> + 12fa: 80 f1 brcs .+96 ; 0x135c <_Z4tonehjm+0x2cc> + 12fc: 69 e0 ldi r22, 0x09 ; 9 + 12fe: 7d e3 ldi r23, 0x3D ; 61 + 1300: 80 e0 ldi r24, 0x00 ; 0 + 1302: 90 e0 ldi r25, 0x00 ; 0 + 1304: a4 01 movw r20, r8 + 1306: 93 01 movw r18, r6 + 1308: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 130c: 79 01 movw r14, r18 + 130e: 8a 01 movw r16, r20 + 1310: 08 94 sec + 1312: e1 08 sbc r14, r1 + 1314: f1 08 sbc r15, r1 + 1316: 01 09 sbc r16, r1 + 1318: 11 09 sbc r17, r1 + 131a: 55 20 and r5, r5 + 131c: 11 f0 breq .+4 ; 0x1322 <_Z4tonehjm+0x292> + 131e: 86 e0 ldi r24, 0x06 ; 6 + 1320: 01 c0 rjmp .+2 ; 0x1324 <_Z4tonehjm+0x294> + 1322: 84 e0 ldi r24, 0x04 ; 4 + 1324: 2f ef ldi r18, 0xFF ; 255 + 1326: e2 16 cp r14, r18 + 1328: f1 04 cpc r15, r1 + 132a: 01 05 cpc r16, r1 + 132c: 11 05 cpc r17, r1 + 132e: b1 f0 breq .+44 ; 0x135c <_Z4tonehjm+0x2cc> + 1330: a8 f0 brcs .+42 ; 0x135c <_Z4tonehjm+0x2cc> + 1332: 86 01 movw r16, r12 + 1334: 75 01 movw r14, r10 + 1336: 9a e0 ldi r25, 0x0A ; 10 + 1338: 16 95 lsr r17 + 133a: 07 95 ror r16 + 133c: f7 94 ror r15 + 133e: e7 94 ror r14 + 1340: 9a 95 dec r25 + 1342: d1 f7 brne .-12 ; 0x1338 <_Z4tonehjm+0x2a8> + 1344: 08 94 sec + 1346: e1 08 sbc r14, r1 + 1348: f1 08 sbc r15, r1 + 134a: 01 09 sbc r16, r1 + 134c: 11 09 sbc r17, r1 + 134e: 55 20 and r5, r5 + 1350: 11 f0 breq .+4 ; 0x1356 <_Z4tonehjm+0x2c6> + 1352: 87 e0 ldi r24, 0x07 ; 7 + 1354: 08 c0 rjmp .+16 ; 0x1366 <_Z4tonehjm+0x2d6> + 1356: 85 e0 ldi r24, 0x05 ; 5 + 1358: 03 c0 rjmp .+6 ; 0x1360 <_Z4tonehjm+0x2d0> + 135a: 81 e0 ldi r24, 0x01 ; 1 + 135c: 55 20 and r5, r5 + 135e: 19 f4 brne .+6 ; 0x1366 <_Z4tonehjm+0x2d6> + 1360: 85 bd out 0x25, r24 ; 37 + 1362: 3a c0 rjmp .+116 ; 0x13d8 <_Z4tonehjm+0x348> + 1364: 82 e0 ldi r24, 0x02 ; 2 + 1366: 80 93 b1 00 sts 0x00B1, r24 + 136a: 36 c0 rjmp .+108 ; 0x13d8 <_Z4tonehjm+0x348> + 136c: 51 01 movw r10, r2 + 136e: cc 24 eor r12, r12 + 1370: dd 24 eor r13, r13 + 1372: 60 e0 ldi r22, 0x00 ; 0 + 1374: 79 e0 ldi r23, 0x09 ; 9 + 1376: 8d e3 ldi r24, 0x3D ; 61 + 1378: 90 e0 ldi r25, 0x00 ; 0 + 137a: a6 01 movw r20, r12 + 137c: 95 01 movw r18, r10 + 137e: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 1382: 79 01 movw r14, r18 + 1384: 8a 01 movw r16, r20 + 1386: 08 94 sec + 1388: e1 08 sbc r14, r1 + 138a: f1 08 sbc r15, r1 + 138c: 01 09 sbc r16, r1 + 138e: 11 09 sbc r17, r1 + 1390: 80 e0 ldi r24, 0x00 ; 0 + 1392: e8 16 cp r14, r24 + 1394: 80 e0 ldi r24, 0x00 ; 0 + 1396: f8 06 cpc r15, r24 + 1398: 81 e0 ldi r24, 0x01 ; 1 + 139a: 08 07 cpc r16, r24 + 139c: 80 e0 ldi r24, 0x00 ; 0 + 139e: 18 07 cpc r17, r24 + 13a0: 10 f4 brcc .+4 ; 0x13a6 <_Z4tonehjm+0x316> + 13a2: 91 e0 ldi r25, 0x01 ; 1 + 13a4: 10 c0 rjmp .+32 ; 0x13c6 <_Z4tonehjm+0x336> + 13a6: 64 e2 ldi r22, 0x24 ; 36 + 13a8: 74 ef ldi r23, 0xF4 ; 244 + 13aa: 80 e0 ldi r24, 0x00 ; 0 + 13ac: 90 e0 ldi r25, 0x00 ; 0 + 13ae: a6 01 movw r20, r12 + 13b0: 95 01 movw r18, r10 + 13b2: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 13b6: 79 01 movw r14, r18 + 13b8: 8a 01 movw r16, r20 + 13ba: 08 94 sec + 13bc: e1 08 sbc r14, r1 + 13be: f1 08 sbc r15, r1 + 13c0: 01 09 sbc r16, r1 + 13c2: 11 09 sbc r17, r1 + 13c4: 93 e0 ldi r25, 0x03 ; 3 + 13c6: a1 e0 ldi r26, 0x01 ; 1 + 13c8: 5a 16 cp r5, r26 + 13ca: 31 f4 brne .+12 ; 0x13d8 <_Z4tonehjm+0x348> + 13cc: 80 91 81 00 lds r24, 0x0081 + 13d0: 88 7f andi r24, 0xF8 ; 248 + 13d2: 98 2b or r25, r24 + 13d4: 90 93 81 00 sts 0x0081, r25 + 13d8: 89 81 ldd r24, Y+1 ; 0x01 + 13da: 9a 81 ldd r25, Y+2 ; 0x02 + 13dc: ab 81 ldd r26, Y+3 ; 0x03 + 13de: bc 81 ldd r27, Y+4 ; 0x04 + 13e0: 00 97 sbiw r24, 0x00 ; 0 + 13e2: a1 05 cpc r26, r1 + 13e4: b1 05 cpc r27, r1 + 13e6: 29 f4 brne .+10 ; 0x13f2 <_Z4tonehjm+0x362> + 13e8: 8f ef ldi r24, 0xFF ; 255 + 13ea: 9f ef ldi r25, 0xFF ; 255 + 13ec: af ef ldi r26, 0xFF ; 255 + 13ee: bf ef ldi r27, 0xFF ; 255 + 13f0: 13 c0 rjmp .+38 ; 0x1418 <_Z4tonehjm+0x388> + 13f2: 22 0c add r2, r2 + 13f4: 33 1c adc r3, r3 + 13f6: b1 01 movw r22, r2 + 13f8: 80 e0 ldi r24, 0x00 ; 0 + 13fa: 90 e0 ldi r25, 0x00 ; 0 + 13fc: 29 81 ldd r18, Y+1 ; 0x01 + 13fe: 3a 81 ldd r19, Y+2 ; 0x02 + 1400: 4b 81 ldd r20, Y+3 ; 0x03 + 1402: 5c 81 ldd r21, Y+4 ; 0x04 + 1404: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 1408: 28 ee ldi r18, 0xE8 ; 232 + 140a: 33 e0 ldi r19, 0x03 ; 3 + 140c: 40 e0 ldi r20, 0x00 ; 0 + 140e: 50 e0 ldi r21, 0x00 ; 0 + 1410: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 1414: c9 01 movw r24, r18 + 1416: da 01 movw r26, r20 + 1418: e1 e0 ldi r30, 0x01 ; 1 + 141a: 5e 16 cp r5, r30 + 141c: a1 f0 breq .+40 ; 0x1446 <_Z4tonehjm+0x3b6> + 141e: f2 e0 ldi r31, 0x02 ; 2 + 1420: 5f 16 cp r5, r31 + 1422: 19 f1 breq .+70 ; 0x146a <_Z4tonehjm+0x3da> + 1424: 55 20 and r5, r5 + 1426: 99 f5 brne .+102 ; 0x148e <_Z4tonehjm+0x3fe> + 1428: e7 bc out 0x27, r14 ; 39 + 142a: 80 93 6b 03 sts 0x036B, r24 + 142e: 90 93 6c 03 sts 0x036C, r25 + 1432: a0 93 6d 03 sts 0x036D, r26 + 1436: b0 93 6e 03 sts 0x036E, r27 + 143a: 80 91 6e 00 lds r24, 0x006E + 143e: 82 60 ori r24, 0x02 ; 2 + 1440: 80 93 6e 00 sts 0x006E, r24 + 1444: 24 c0 rjmp .+72 ; 0x148e <_Z4tonehjm+0x3fe> + 1446: f0 92 89 00 sts 0x0089, r15 + 144a: e0 92 88 00 sts 0x0088, r14 + 144e: 80 93 72 03 sts 0x0372, r24 + 1452: 90 93 73 03 sts 0x0373, r25 + 1456: a0 93 74 03 sts 0x0374, r26 + 145a: b0 93 75 03 sts 0x0375, r27 + 145e: 80 91 6f 00 lds r24, 0x006F + 1462: 82 60 ori r24, 0x02 ; 2 + 1464: 80 93 6f 00 sts 0x006F, r24 + 1468: 12 c0 rjmp .+36 ; 0x148e <_Z4tonehjm+0x3fe> + 146a: e0 92 b3 00 sts 0x00B3, r14 + 146e: 80 93 79 03 sts 0x0379, r24 + 1472: 90 93 7a 03 sts 0x037A, r25 + 1476: a0 93 7b 03 sts 0x037B, r26 + 147a: b0 93 7c 03 sts 0x037C, r27 + 147e: 80 91 70 00 lds r24, 0x0070 + 1482: 82 60 ori r24, 0x02 ; 2 + 1484: 80 93 70 00 sts 0x0070, r24 + 1488: 02 c0 rjmp .+4 ; 0x148e <_Z4tonehjm+0x3fe> + 148a: 84 e0 ldi r24, 0x04 ; 4 + 148c: 6c cf rjmp .-296 ; 0x1366 <_Z4tonehjm+0x2d6> + 148e: 0f 90 pop r0 + 1490: 0f 90 pop r0 + 1492: 0f 90 pop r0 + 1494: 0f 90 pop r0 + 1496: cf 91 pop r28 + 1498: df 91 pop r29 + 149a: 1f 91 pop r17 + 149c: 0f 91 pop r16 + 149e: ff 90 pop r15 + 14a0: ef 90 pop r14 + 14a2: df 90 pop r13 + 14a4: cf 90 pop r12 + 14a6: bf 90 pop r11 + 14a8: af 90 pop r10 + 14aa: 9f 90 pop r9 + 14ac: 8f 90 pop r8 + 14ae: 7f 90 pop r7 + 14b0: 6f 90 pop r6 + 14b2: 5f 90 pop r5 + 14b4: 3f 90 pop r3 + 14b6: 2f 90 pop r2 + 14b8: 08 95 ret + +000014ba <attachInterrupt>: + 14ba: 82 30 cpi r24, 0x02 ; 2 + 14bc: 00 f5 brcc .+64 ; 0x14fe <attachInterrupt+0x44> + 14be: e8 2f mov r30, r24 + 14c0: f0 e0 ldi r31, 0x00 ; 0 + 14c2: ee 0f add r30, r30 + 14c4: ff 1f adc r31, r31 + 14c6: e0 58 subi r30, 0x80 ; 128 + 14c8: fc 4f sbci r31, 0xFC ; 252 + 14ca: 71 83 std Z+1, r23 ; 0x01 + 14cc: 60 83 st Z, r22 + 14ce: 88 23 and r24, r24 + 14d0: 19 f0 breq .+6 ; 0x14d8 <attachInterrupt+0x1e> + 14d2: 81 30 cpi r24, 0x01 ; 1 + 14d4: a1 f4 brne .+40 ; 0x14fe <attachInterrupt+0x44> + 14d6: 08 c0 rjmp .+16 ; 0x14e8 <attachInterrupt+0x2e> + 14d8: 80 91 69 00 lds r24, 0x0069 + 14dc: 8c 7f andi r24, 0xFC ; 252 + 14de: 84 2b or r24, r20 + 14e0: 80 93 69 00 sts 0x0069, r24 + 14e4: e8 9a sbi 0x1d, 0 ; 29 + 14e6: 08 95 ret + 14e8: 80 91 69 00 lds r24, 0x0069 + 14ec: 44 0f add r20, r20 + 14ee: 55 1f adc r21, r21 + 14f0: 44 0f add r20, r20 + 14f2: 55 1f adc r21, r21 + 14f4: 83 7f andi r24, 0xF3 ; 243 + 14f6: 84 2b or r24, r20 + 14f8: 80 93 69 00 sts 0x0069, r24 + 14fc: e9 9a sbi 0x1d, 1 ; 29 + 14fe: 08 95 ret + +00001500 <detachInterrupt>: + 1500: 82 30 cpi r24, 0x02 ; 2 + 1502: 80 f4 brcc .+32 ; 0x1524 <detachInterrupt+0x24> + 1504: 88 23 and r24, r24 + 1506: 19 f0 breq .+6 ; 0x150e <detachInterrupt+0xe> + 1508: 81 30 cpi r24, 0x01 ; 1 + 150a: 21 f4 brne .+8 ; 0x1514 <detachInterrupt+0x14> + 150c: 02 c0 rjmp .+4 ; 0x1512 <detachInterrupt+0x12> + 150e: e8 98 cbi 0x1d, 0 ; 29 + 1510: 01 c0 rjmp .+2 ; 0x1514 <detachInterrupt+0x14> + 1512: e9 98 cbi 0x1d, 1 ; 29 + 1514: e8 2f mov r30, r24 + 1516: f0 e0 ldi r31, 0x00 ; 0 + 1518: ee 0f add r30, r30 + 151a: ff 1f adc r31, r31 + 151c: e0 58 subi r30, 0x80 ; 128 + 151e: fc 4f sbci r31, 0xFC ; 252 + 1520: 11 82 std Z+1, r1 ; 0x01 + 1522: 10 82 st Z, r1 + 1524: 08 95 ret + +00001526 <__vector_1>: + 1526: 1f 92 push r1 + 1528: 0f 92 push r0 + 152a: 0f b6 in r0, 0x3f ; 63 + 152c: 0f 92 push r0 + 152e: 11 24 eor r1, r1 + 1530: 2f 93 push r18 + 1532: 3f 93 push r19 + 1534: 4f 93 push r20 + 1536: 5f 93 push r21 + 1538: 6f 93 push r22 + 153a: 7f 93 push r23 + 153c: 8f 93 push r24 + 153e: 9f 93 push r25 + 1540: af 93 push r26 + 1542: bf 93 push r27 + 1544: ef 93 push r30 + 1546: ff 93 push r31 + 1548: 80 91 80 03 lds r24, 0x0380 + 154c: 90 91 81 03 lds r25, 0x0381 + 1550: 89 2b or r24, r25 + 1552: 29 f0 breq .+10 ; 0x155e <__vector_1+0x38> + 1554: e0 91 80 03 lds r30, 0x0380 + 1558: f0 91 81 03 lds r31, 0x0381 + 155c: 09 95 icall + 155e: ff 91 pop r31 + 1560: ef 91 pop r30 + 1562: bf 91 pop r27 + 1564: af 91 pop r26 + 1566: 9f 91 pop r25 + 1568: 8f 91 pop r24 + 156a: 7f 91 pop r23 + 156c: 6f 91 pop r22 + 156e: 5f 91 pop r21 + 1570: 4f 91 pop r20 + 1572: 3f 91 pop r19 + 1574: 2f 91 pop r18 + 1576: 0f 90 pop r0 + 1578: 0f be out 0x3f, r0 ; 63 + 157a: 0f 90 pop r0 + 157c: 1f 90 pop r1 + 157e: 18 95 reti + +00001580 <__vector_2>: + 1580: 1f 92 push r1 + 1582: 0f 92 push r0 + 1584: 0f b6 in r0, 0x3f ; 63 + 1586: 0f 92 push r0 + 1588: 11 24 eor r1, r1 + 158a: 2f 93 push r18 + 158c: 3f 93 push r19 + 158e: 4f 93 push r20 + 1590: 5f 93 push r21 + 1592: 6f 93 push r22 + 1594: 7f 93 push r23 + 1596: 8f 93 push r24 + 1598: 9f 93 push r25 + 159a: af 93 push r26 + 159c: bf 93 push r27 + 159e: ef 93 push r30 + 15a0: ff 93 push r31 + 15a2: 80 91 82 03 lds r24, 0x0382 + 15a6: 90 91 83 03 lds r25, 0x0383 + 15aa: 89 2b or r24, r25 + 15ac: 29 f0 breq .+10 ; 0x15b8 <__vector_2+0x38> + 15ae: e0 91 82 03 lds r30, 0x0382 + 15b2: f0 91 83 03 lds r31, 0x0383 + 15b6: 09 95 icall + 15b8: ff 91 pop r31 + 15ba: ef 91 pop r30 + 15bc: bf 91 pop r27 + 15be: af 91 pop r26 + 15c0: 9f 91 pop r25 + 15c2: 8f 91 pop r24 + 15c4: 7f 91 pop r23 + 15c6: 6f 91 pop r22 + 15c8: 5f 91 pop r21 + 15ca: 4f 91 pop r20 + 15cc: 3f 91 pop r19 + 15ce: 2f 91 pop r18 + 15d0: 0f 90 pop r0 + 15d2: 0f be out 0x3f, r0 ; 63 + 15d4: 0f 90 pop r0 + 15d6: 1f 90 pop r1 + 15d8: 18 95 reti + +000015da <_Z3maplllll>: + 15da: 2f 92 push r2 + 15dc: 3f 92 push r3 + 15de: 4f 92 push r4 + 15e0: 5f 92 push r5 + 15e2: 6f 92 push r6 + 15e4: 7f 92 push r7 + 15e6: 8f 92 push r8 + 15e8: 9f 92 push r9 + 15ea: af 92 push r10 + 15ec: bf 92 push r11 + 15ee: cf 92 push r12 + 15f0: df 92 push r13 + 15f2: ef 92 push r14 + 15f4: ff 92 push r15 + 15f6: 0f 93 push r16 + 15f8: 1f 93 push r17 + 15fa: df 93 push r29 + 15fc: cf 93 push r28 + 15fe: cd b7 in r28, 0x3d ; 61 + 1600: de b7 in r29, 0x3e ; 62 + 1602: 3b 01 movw r6, r22 + 1604: 4c 01 movw r8, r24 + 1606: 19 01 movw r2, r18 + 1608: 2a 01 movw r4, r20 + 160a: 6d 89 ldd r22, Y+21 ; 0x15 + 160c: 7e 89 ldd r23, Y+22 ; 0x16 + 160e: 8f 89 ldd r24, Y+23 ; 0x17 + 1610: 98 8d ldd r25, Y+24 ; 0x18 + 1612: 6a 19 sub r22, r10 + 1614: 7b 09 sbc r23, r11 + 1616: 8c 09 sbc r24, r12 + 1618: 9d 09 sbc r25, r13 + 161a: 62 1a sub r6, r18 + 161c: 73 0a sbc r7, r19 + 161e: 84 0a sbc r8, r20 + 1620: 95 0a sbc r9, r21 + 1622: a4 01 movw r20, r8 + 1624: 93 01 movw r18, r6 + 1626: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 162a: e2 18 sub r14, r2 + 162c: f3 08 sbc r15, r3 + 162e: 04 09 sbc r16, r4 + 1630: 15 09 sbc r17, r5 + 1632: a8 01 movw r20, r16 + 1634: 97 01 movw r18, r14 + 1636: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 163a: 2a 0d add r18, r10 + 163c: 3b 1d adc r19, r11 + 163e: 4c 1d adc r20, r12 + 1640: 5d 1d adc r21, r13 + 1642: b9 01 movw r22, r18 + 1644: ca 01 movw r24, r20 + 1646: cf 91 pop r28 + 1648: df 91 pop r29 + 164a: 1f 91 pop r17 + 164c: 0f 91 pop r16 + 164e: ff 90 pop r15 + 1650: ef 90 pop r14 + 1652: df 90 pop r13 + 1654: cf 90 pop r12 + 1656: bf 90 pop r11 + 1658: af 90 pop r10 + 165a: 9f 90 pop r9 + 165c: 8f 90 pop r8 + 165e: 7f 90 pop r7 + 1660: 6f 90 pop r6 + 1662: 5f 90 pop r5 + 1664: 4f 90 pop r4 + 1666: 3f 90 pop r3 + 1668: 2f 90 pop r2 + 166a: 08 95 ret + +0000166c <_Z8makeWordj>: + 166c: 08 95 ret + +0000166e <_Z8makeWordhh>: + 166e: 70 e0 ldi r23, 0x00 ; 0 + 1670: 38 2f mov r19, r24 + 1672: 20 e0 ldi r18, 0x00 ; 0 + 1674: 62 2b or r22, r18 + 1676: 73 2b or r23, r19 + 1678: cb 01 movw r24, r22 + 167a: 08 95 ret + +0000167c <_Z6randoml>: + 167c: ef 92 push r14 + 167e: ff 92 push r15 + 1680: 0f 93 push r16 + 1682: 1f 93 push r17 + 1684: 7b 01 movw r14, r22 + 1686: 8c 01 movw r16, r24 + 1688: 61 15 cp r22, r1 + 168a: 71 05 cpc r23, r1 + 168c: 81 05 cpc r24, r1 + 168e: 91 05 cpc r25, r1 + 1690: 29 f4 brne .+10 ; 0x169c <_Z6randoml+0x20> + 1692: 20 e0 ldi r18, 0x00 ; 0 + 1694: 30 e0 ldi r19, 0x00 ; 0 + 1696: 40 e0 ldi r20, 0x00 ; 0 + 1698: 50 e0 ldi r21, 0x00 ; 0 + 169a: 0b c0 rjmp .+22 ; 0x16b2 <_Z6randoml+0x36> + 169c: 0e 94 e4 1f call 0x3fc8 ; 0x3fc8 <random> + 16a0: a8 01 movw r20, r16 + 16a2: 97 01 movw r18, r14 + 16a4: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 16a8: ac 01 movw r20, r24 + 16aa: cb 01 movw r24, r22 + 16ac: da 01 movw r26, r20 + 16ae: 9c 01 movw r18, r24 + 16b0: ad 01 movw r20, r26 + 16b2: b9 01 movw r22, r18 + 16b4: ca 01 movw r24, r20 + 16b6: 1f 91 pop r17 + 16b8: 0f 91 pop r16 + 16ba: ff 90 pop r15 + 16bc: ef 90 pop r14 + 16be: 08 95 ret + +000016c0 <_Z6randomll>: + 16c0: ef 92 push r14 + 16c2: ff 92 push r15 + 16c4: 0f 93 push r16 + 16c6: 1f 93 push r17 + 16c8: 7b 01 movw r14, r22 + 16ca: 8c 01 movw r16, r24 + 16cc: 62 17 cp r22, r18 + 16ce: 73 07 cpc r23, r19 + 16d0: 84 07 cpc r24, r20 + 16d2: 95 07 cpc r25, r21 + 16d4: 64 f4 brge .+24 ; 0x16ee <_Z6randomll+0x2e> + 16d6: 26 1b sub r18, r22 + 16d8: 37 0b sbc r19, r23 + 16da: 48 0b sbc r20, r24 + 16dc: 59 0b sbc r21, r25 + 16de: ca 01 movw r24, r20 + 16e0: b9 01 movw r22, r18 + 16e2: 0e 94 3e 0b call 0x167c ; 0x167c <_Z6randoml> + 16e6: e6 0e add r14, r22 + 16e8: f7 1e adc r15, r23 + 16ea: 08 1f adc r16, r24 + 16ec: 19 1f adc r17, r25 + 16ee: b7 01 movw r22, r14 + 16f0: c8 01 movw r24, r16 + 16f2: 1f 91 pop r17 + 16f4: 0f 91 pop r16 + 16f6: ff 90 pop r15 + 16f8: ef 90 pop r14 + 16fa: 08 95 ret + +000016fc <_Z10randomSeedj>: + 16fc: 00 97 sbiw r24, 0x00 ; 0 + 16fe: 29 f0 breq .+10 ; 0x170a <_Z10randomSeedj+0xe> + 1700: bc 01 movw r22, r24 + 1702: 80 e0 ldi r24, 0x00 ; 0 + 1704: 90 e0 ldi r25, 0x00 ; 0 + 1706: 0e 94 e9 1f call 0x3fd2 ; 0x3fd2 <srandom> + 170a: 08 95 ret + +0000170c <_ZNK6String6charAtEj>: + 170c: fc 01 movw r30, r24 + 170e: 01 90 ld r0, Z+ + 1710: f0 81 ld r31, Z + 1712: e0 2d mov r30, r0 + 1714: e6 0f add r30, r22 + 1716: f7 1f adc r31, r23 + 1718: 80 81 ld r24, Z + 171a: 08 95 ret + +0000171c <_ZN6String9setCharAtEjc>: + 171c: dc 01 movw r26, r24 + 171e: ed 91 ld r30, X+ + 1720: fc 91 ld r31, X + 1722: 11 97 sbiw r26, 0x01 ; 1 + 1724: 30 97 sbiw r30, 0x00 ; 0 + 1726: 51 f0 breq .+20 ; 0x173c <_ZN6String9setCharAtEjc+0x20> + 1728: 14 96 adiw r26, 0x04 ; 4 + 172a: 8d 91 ld r24, X+ + 172c: 9c 91 ld r25, X + 172e: 15 97 sbiw r26, 0x05 ; 5 + 1730: 68 17 cp r22, r24 + 1732: 79 07 cpc r23, r25 + 1734: 18 f4 brcc .+6 ; 0x173c <_ZN6String9setCharAtEjc+0x20> + 1736: e6 0f add r30, r22 + 1738: f7 1f adc r31, r23 + 173a: 40 83 st Z, r20 + 173c: 08 95 ret + +0000173e <_ZN6StringixEj>: + 173e: fc 01 movw r30, r24 + 1740: 9b 01 movw r18, r22 + 1742: 84 81 ldd r24, Z+4 ; 0x04 + 1744: 95 81 ldd r25, Z+5 ; 0x05 + 1746: 68 17 cp r22, r24 + 1748: 79 07 cpc r23, r25 + 174a: 28 f4 brcc .+10 ; 0x1756 <_ZN6StringixEj+0x18> + 174c: 60 81 ld r22, Z + 174e: 71 81 ldd r23, Z+1 ; 0x01 + 1750: 61 15 cp r22, r1 + 1752: 71 05 cpc r23, r1 + 1754: 29 f4 brne .+10 ; 0x1760 <_ZN6StringixEj+0x22> + 1756: 10 92 84 03 sts 0x0384, r1 + 175a: 64 e8 ldi r22, 0x84 ; 132 + 175c: 73 e0 ldi r23, 0x03 ; 3 + 175e: 02 c0 rjmp .+4 ; 0x1764 <_ZN6StringixEj+0x26> + 1760: 62 0f add r22, r18 + 1762: 73 1f adc r23, r19 + 1764: cb 01 movw r24, r22 + 1766: 08 95 ret + +00001768 <_ZNK6StringixEj>: + 1768: fc 01 movw r30, r24 + 176a: 01 90 ld r0, Z+ + 176c: f0 81 ld r31, Z + 176e: e0 2d mov r30, r0 + 1770: e6 0f add r30, r22 + 1772: f7 1f adc r31, r23 + 1774: 80 81 ld r24, Z + 1776: 08 95 ret + +00001778 <_ZN6String5toIntEv>: + 1778: fc 01 movw r30, r24 + 177a: 80 81 ld r24, Z + 177c: 91 81 ldd r25, Z+1 ; 0x01 + 177e: 0e 94 c0 20 call 0x4180 ; 0x4180 <atol> + 1782: 08 95 ret + +00001784 <_ZN6String11toCharArrayEPcj>: + 1784: 0f 93 push r16 + 1786: 1f 93 push r17 + 1788: cf 93 push r28 + 178a: df 93 push r29 + 178c: fc 01 movw r30, r24 + 178e: 8b 01 movw r16, r22 + 1790: 41 15 cp r20, r1 + 1792: 51 05 cpc r21, r1 + 1794: a1 f0 breq .+40 ; 0x17be <_ZN6String11toCharArrayEPcj+0x3a> + 1796: 61 15 cp r22, r1 + 1798: 71 05 cpc r23, r1 + 179a: 89 f0 breq .+34 ; 0x17be <_ZN6String11toCharArrayEPcj+0x3a> + 179c: 84 81 ldd r24, Z+4 ; 0x04 + 179e: 95 81 ldd r25, Z+5 ; 0x05 + 17a0: ea 01 movw r28, r20 + 17a2: 21 97 sbiw r28, 0x01 ; 1 + 17a4: 8c 17 cp r24, r28 + 17a6: 9d 07 cpc r25, r29 + 17a8: 08 f4 brcc .+2 ; 0x17ac <_ZN6String11toCharArrayEPcj+0x28> + 17aa: ec 01 movw r28, r24 + 17ac: 60 81 ld r22, Z + 17ae: 71 81 ldd r23, Z+1 ; 0x01 + 17b0: c8 01 movw r24, r16 + 17b2: ae 01 movw r20, r28 + 17b4: 0e 94 3c 21 call 0x4278 ; 0x4278 <strncpy> + 17b8: c0 0f add r28, r16 + 17ba: d1 1f adc r29, r17 + 17bc: 18 82 st Y, r1 + 17be: df 91 pop r29 + 17c0: cf 91 pop r28 + 17c2: 1f 91 pop r17 + 17c4: 0f 91 pop r16 + 17c6: 08 95 ret + +000017c8 <_ZN6String8getBytesEPhj>: + 17c8: 0f 93 push r16 + 17ca: 1f 93 push r17 + 17cc: cf 93 push r28 + 17ce: df 93 push r29 + 17d0: fc 01 movw r30, r24 + 17d2: 8b 01 movw r16, r22 + 17d4: 41 15 cp r20, r1 + 17d6: 51 05 cpc r21, r1 + 17d8: a1 f0 breq .+40 ; 0x1802 <_ZN6String8getBytesEPhj+0x3a> + 17da: 61 15 cp r22, r1 + 17dc: 71 05 cpc r23, r1 + 17de: 89 f0 breq .+34 ; 0x1802 <_ZN6String8getBytesEPhj+0x3a> + 17e0: 84 81 ldd r24, Z+4 ; 0x04 + 17e2: 95 81 ldd r25, Z+5 ; 0x05 + 17e4: ea 01 movw r28, r20 + 17e6: 21 97 sbiw r28, 0x01 ; 1 + 17e8: 8c 17 cp r24, r28 + 17ea: 9d 07 cpc r25, r29 + 17ec: 08 f4 brcc .+2 ; 0x17f0 <_ZN6String8getBytesEPhj+0x28> + 17ee: ec 01 movw r28, r24 + 17f0: 60 81 ld r22, Z + 17f2: 71 81 ldd r23, Z+1 ; 0x01 + 17f4: c8 01 movw r24, r16 + 17f6: ae 01 movw r20, r28 + 17f8: 0e 94 3c 21 call 0x4278 ; 0x4278 <strncpy> + 17fc: c0 0f add r28, r16 + 17fe: d1 1f adc r29, r17 + 1800: 18 82 st Y, r1 + 1802: df 91 pop r29 + 1804: cf 91 pop r28 + 1806: 1f 91 pop r17 + 1808: 0f 91 pop r16 + 180a: 08 95 ret + +0000180c <_ZN6StringD1Ev>: + 180c: 0f 93 push r16 + 180e: 1f 93 push r17 + 1810: 8c 01 movw r16, r24 + 1812: fc 01 movw r30, r24 + 1814: 80 81 ld r24, Z + 1816: 91 81 ldd r25, Z+1 ; 0x01 + 1818: 0e 94 39 1f call 0x3e72 ; 0x3e72 <free> + 181c: f8 01 movw r30, r16 + 181e: 13 82 std Z+3, r1 ; 0x03 + 1820: 12 82 std Z+2, r1 ; 0x02 + 1822: 15 82 std Z+5, r1 ; 0x05 + 1824: 14 82 std Z+4, r1 ; 0x04 + 1826: 1f 91 pop r17 + 1828: 0f 91 pop r16 + 182a: 08 95 ret + +0000182c <_ZNK6String10startsWithERKS_j>: + 182c: fc 01 movw r30, r24 + 182e: db 01 movw r26, r22 + 1830: 14 96 adiw r26, 0x04 ; 4 + 1832: 2d 91 ld r18, X+ + 1834: 3c 91 ld r19, X + 1836: 15 97 sbiw r26, 0x05 ; 5 + 1838: 84 81 ldd r24, Z+4 ; 0x04 + 183a: 95 81 ldd r25, Z+5 ; 0x05 + 183c: 82 1b sub r24, r18 + 183e: 93 0b sbc r25, r19 + 1840: 84 17 cp r24, r20 + 1842: 95 07 cpc r25, r21 + 1844: 10 f4 brcc .+4 ; 0x184a <_ZNK6String10startsWithERKS_j+0x1e> + 1846: 80 e0 ldi r24, 0x00 ; 0 + 1848: 08 95 ret + 184a: 80 81 ld r24, Z + 184c: 91 81 ldd r25, Z+1 ; 0x01 + 184e: 6d 91 ld r22, X+ + 1850: 7c 91 ld r23, X + 1852: 84 0f add r24, r20 + 1854: 95 1f adc r25, r21 + 1856: a9 01 movw r20, r18 + 1858: 0e 94 2e 21 call 0x425c ; 0x425c <strncmp> + 185c: 9c 01 movw r18, r24 + 185e: 80 e0 ldi r24, 0x00 ; 0 + 1860: 23 2b or r18, r19 + 1862: 09 f4 brne .+2 ; 0x1866 <_ZNK6String10startsWithERKS_j+0x3a> + 1864: 81 e0 ldi r24, 0x01 ; 1 + 1866: 08 95 ret + +00001868 <_ZNK6String10startsWithERKS_>: + 1868: fc 01 movw r30, r24 + 186a: db 01 movw r26, r22 + 186c: 24 81 ldd r18, Z+4 ; 0x04 + 186e: 35 81 ldd r19, Z+5 ; 0x05 + 1870: 14 96 adiw r26, 0x04 ; 4 + 1872: 8d 91 ld r24, X+ + 1874: 9c 91 ld r25, X + 1876: 15 97 sbiw r26, 0x05 ; 5 + 1878: 28 17 cp r18, r24 + 187a: 39 07 cpc r19, r25 + 187c: 10 f4 brcc .+4 ; 0x1882 <_ZNK6String10startsWithERKS_+0x1a> + 187e: 80 e0 ldi r24, 0x00 ; 0 + 1880: 08 95 ret + 1882: cf 01 movw r24, r30 + 1884: 40 e0 ldi r20, 0x00 ; 0 + 1886: 50 e0 ldi r21, 0x00 ; 0 + 1888: 0e 94 16 0c call 0x182c ; 0x182c <_ZNK6String10startsWithERKS_j> + 188c: 08 95 ret + +0000188e <_ZNK6String11lastIndexOfEcj>: + 188e: df 92 push r13 + 1890: ef 92 push r14 + 1892: ff 92 push r15 + 1894: 0f 93 push r16 + 1896: 1f 93 push r17 + 1898: cf 93 push r28 + 189a: df 93 push r29 + 189c: ec 01 movw r28, r24 + 189e: 8c 81 ldd r24, Y+4 ; 0x04 + 18a0: 9d 81 ldd r25, Y+5 ; 0x05 + 18a2: 48 17 cp r20, r24 + 18a4: 59 07 cpc r21, r25 + 18a6: c8 f4 brcc .+50 ; 0x18da <_ZNK6String11lastIndexOfEcj+0x4c> + 18a8: 7a 01 movw r14, r20 + 18aa: 08 94 sec + 18ac: e1 1c adc r14, r1 + 18ae: f1 1c adc r15, r1 + 18b0: e8 81 ld r30, Y + 18b2: f9 81 ldd r31, Y+1 ; 0x01 + 18b4: ee 0d add r30, r14 + 18b6: ff 1d adc r31, r15 + 18b8: d0 80 ld r13, Z + 18ba: 10 82 st Z, r1 + 18bc: 08 81 ld r16, Y + 18be: 19 81 ldd r17, Y+1 ; 0x01 + 18c0: 77 27 eor r23, r23 + 18c2: 67 fd sbrc r22, 7 + 18c4: 70 95 com r23 + 18c6: c8 01 movw r24, r16 + 18c8: 0e 94 4b 21 call 0x4296 ; 0x4296 <strrchr> + 18cc: 9c 01 movw r18, r24 + 18ce: 0e 0d add r16, r14 + 18d0: 1f 1d adc r17, r15 + 18d2: f8 01 movw r30, r16 + 18d4: d0 82 st Z, r13 + 18d6: 00 97 sbiw r24, 0x00 ; 0 + 18d8: 19 f4 brne .+6 ; 0x18e0 <_ZNK6String11lastIndexOfEcj+0x52> + 18da: ef ef ldi r30, 0xFF ; 255 + 18dc: ff ef ldi r31, 0xFF ; 255 + 18de: 05 c0 rjmp .+10 ; 0x18ea <_ZNK6String11lastIndexOfEcj+0x5c> + 18e0: 88 81 ld r24, Y + 18e2: 99 81 ldd r25, Y+1 ; 0x01 + 18e4: f9 01 movw r30, r18 + 18e6: e8 1b sub r30, r24 + 18e8: f9 0b sbc r31, r25 + 18ea: cf 01 movw r24, r30 + 18ec: df 91 pop r29 + 18ee: cf 91 pop r28 + 18f0: 1f 91 pop r17 + 18f2: 0f 91 pop r16 + 18f4: ff 90 pop r15 + 18f6: ef 90 pop r14 + 18f8: df 90 pop r13 + 18fa: 08 95 ret + +000018fc <_ZNK6String11lastIndexOfEc>: + 18fc: fc 01 movw r30, r24 + 18fe: 44 81 ldd r20, Z+4 ; 0x04 + 1900: 55 81 ldd r21, Z+5 ; 0x05 + 1902: 41 50 subi r20, 0x01 ; 1 + 1904: 50 40 sbci r21, 0x00 ; 0 + 1906: 0e 94 47 0c call 0x188e ; 0x188e <_ZNK6String11lastIndexOfEcj> + 190a: 08 95 ret + +0000190c <_ZNK6String7indexOfERKS_j>: + 190c: cf 93 push r28 + 190e: df 93 push r29 + 1910: fc 01 movw r30, r24 + 1912: db 01 movw r26, r22 + 1914: 84 81 ldd r24, Z+4 ; 0x04 + 1916: 95 81 ldd r25, Z+5 ; 0x05 + 1918: 48 17 cp r20, r24 + 191a: 59 07 cpc r21, r25 + 191c: 60 f4 brcc .+24 ; 0x1936 <_ZNK6String7indexOfERKS_j+0x2a> + 191e: c0 81 ld r28, Z + 1920: d1 81 ldd r29, Z+1 ; 0x01 + 1922: 6d 91 ld r22, X+ + 1924: 7c 91 ld r23, X + 1926: ce 01 movw r24, r28 + 1928: 84 0f add r24, r20 + 192a: 95 1f adc r25, r21 + 192c: 0e 94 56 21 call 0x42ac ; 0x42ac <strstr> + 1930: 9c 01 movw r18, r24 + 1932: 00 97 sbiw r24, 0x00 ; 0 + 1934: 19 f4 brne .+6 ; 0x193c <_ZNK6String7indexOfERKS_j+0x30> + 1936: 2f ef ldi r18, 0xFF ; 255 + 1938: 3f ef ldi r19, 0xFF ; 255 + 193a: 02 c0 rjmp .+4 ; 0x1940 <_ZNK6String7indexOfERKS_j+0x34> + 193c: 2c 1b sub r18, r28 + 193e: 3d 0b sbc r19, r29 + 1940: c9 01 movw r24, r18 + 1942: df 91 pop r29 + 1944: cf 91 pop r28 + 1946: 08 95 ret + +00001948 <_ZNK6String7indexOfERKS_>: + 1948: 40 e0 ldi r20, 0x00 ; 0 + 194a: 50 e0 ldi r21, 0x00 ; 0 + 194c: 0e 94 86 0c call 0x190c ; 0x190c <_ZNK6String7indexOfERKS_j> + 1950: 08 95 ret + +00001952 <_ZNK6String7indexOfEcj>: + 1952: cf 93 push r28 + 1954: df 93 push r29 + 1956: fc 01 movw r30, r24 + 1958: 84 81 ldd r24, Z+4 ; 0x04 + 195a: 95 81 ldd r25, Z+5 ; 0x05 + 195c: 48 17 cp r20, r24 + 195e: 59 07 cpc r21, r25 + 1960: 68 f4 brcc .+26 ; 0x197c <_ZNK6String7indexOfEcj+0x2a> + 1962: c0 81 ld r28, Z + 1964: d1 81 ldd r29, Z+1 ; 0x01 + 1966: 77 27 eor r23, r23 + 1968: 67 fd sbrc r22, 7 + 196a: 70 95 com r23 + 196c: ce 01 movw r24, r28 + 196e: 84 0f add r24, r20 + 1970: 95 1f adc r25, r21 + 1972: 0e 94 13 21 call 0x4226 ; 0x4226 <strchr> + 1976: 9c 01 movw r18, r24 + 1978: 00 97 sbiw r24, 0x00 ; 0 + 197a: 19 f4 brne .+6 ; 0x1982 <_ZNK6String7indexOfEcj+0x30> + 197c: 2f ef ldi r18, 0xFF ; 255 + 197e: 3f ef ldi r19, 0xFF ; 255 + 1980: 02 c0 rjmp .+4 ; 0x1986 <_ZNK6String7indexOfEcj+0x34> + 1982: 2c 1b sub r18, r28 + 1984: 3d 0b sbc r19, r29 + 1986: c9 01 movw r24, r18 + 1988: df 91 pop r29 + 198a: cf 91 pop r28 + 198c: 08 95 ret + +0000198e <_ZNK6String7indexOfEc>: + 198e: 40 e0 ldi r20, 0x00 ; 0 + 1990: 50 e0 ldi r21, 0x00 ; 0 + 1992: 0e 94 a9 0c call 0x1952 ; 0x1952 <_ZNK6String7indexOfEcj> + 1996: 08 95 ret + +00001998 <_ZNK6String6equalsERKS_>: + 1998: dc 01 movw r26, r24 + 199a: fb 01 movw r30, r22 + 199c: 14 96 adiw r26, 0x04 ; 4 + 199e: 2d 91 ld r18, X+ + 19a0: 3c 91 ld r19, X + 19a2: 15 97 sbiw r26, 0x05 ; 5 + 19a4: 84 81 ldd r24, Z+4 ; 0x04 + 19a6: 95 81 ldd r25, Z+5 ; 0x05 + 19a8: 28 17 cp r18, r24 + 19aa: 39 07 cpc r19, r25 + 19ac: 11 f0 breq .+4 ; 0x19b2 <_ZNK6String6equalsERKS_+0x1a> + 19ae: 80 e0 ldi r24, 0x00 ; 0 + 19b0: 08 95 ret + 19b2: 60 81 ld r22, Z + 19b4: 71 81 ldd r23, Z+1 ; 0x01 + 19b6: 8d 91 ld r24, X+ + 19b8: 9c 91 ld r25, X + 19ba: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 19be: 9c 01 movw r18, r24 + 19c0: 80 e0 ldi r24, 0x00 ; 0 + 19c2: 23 2b or r18, r19 + 19c4: 09 f4 brne .+2 ; 0x19c8 <_ZNK6String6equalsERKS_+0x30> + 19c6: 81 e0 ldi r24, 0x01 ; 1 + 19c8: 08 95 ret + +000019ca <_ZNK6String8endsWithERKS_>: + 19ca: fc 01 movw r30, r24 + 19cc: db 01 movw r26, r22 + 19ce: 24 81 ldd r18, Z+4 ; 0x04 + 19d0: 35 81 ldd r19, Z+5 ; 0x05 + 19d2: 14 96 adiw r26, 0x04 ; 4 + 19d4: 8d 91 ld r24, X+ + 19d6: 9c 91 ld r25, X + 19d8: 15 97 sbiw r26, 0x05 ; 5 + 19da: 28 17 cp r18, r24 + 19dc: 39 07 cpc r19, r25 + 19de: 10 f4 brcc .+4 ; 0x19e4 <_ZNK6String8endsWithERKS_+0x1a> + 19e0: 80 e0 ldi r24, 0x00 ; 0 + 19e2: 08 95 ret + 19e4: 28 1b sub r18, r24 + 19e6: 39 0b sbc r19, r25 + 19e8: 80 81 ld r24, Z + 19ea: 91 81 ldd r25, Z+1 ; 0x01 + 19ec: 6d 91 ld r22, X+ + 19ee: 7c 91 ld r23, X + 19f0: 82 0f add r24, r18 + 19f2: 93 1f adc r25, r19 + 19f4: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 19f8: 9c 01 movw r18, r24 + 19fa: 80 e0 ldi r24, 0x00 ; 0 + 19fc: 23 2b or r18, r19 + 19fe: 09 f4 brne .+2 ; 0x1a02 <_ZNK6String8endsWithERKS_+0x38> + 1a00: 81 e0 ldi r24, 0x01 ; 1 + 1a02: 08 95 ret + +00001a04 <_ZNK6StringgeERKS_>: + 1a04: dc 01 movw r26, r24 + 1a06: fb 01 movw r30, r22 + 1a08: 60 81 ld r22, Z + 1a0a: 71 81 ldd r23, Z+1 ; 0x01 + 1a0c: 8d 91 ld r24, X+ + 1a0e: 9c 91 ld r25, X + 1a10: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 1a14: 29 2f mov r18, r25 + 1a16: 33 27 eor r19, r19 + 1a18: 27 fd sbrc r18, 7 + 1a1a: 30 95 com r19 + 1a1c: 20 95 com r18 + 1a1e: 30 95 com r19 + 1a20: 22 27 eor r18, r18 + 1a22: 33 0f add r19, r19 + 1a24: 22 1f adc r18, r18 + 1a26: 33 27 eor r19, r19 + 1a28: c9 01 movw r24, r18 + 1a2a: 08 95 ret + +00001a2c <_ZNK6StringleERKS_>: + 1a2c: dc 01 movw r26, r24 + 1a2e: fb 01 movw r30, r22 + 1a30: 60 81 ld r22, Z + 1a32: 71 81 ldd r23, Z+1 ; 0x01 + 1a34: 8d 91 ld r24, X+ + 1a36: 9c 91 ld r25, X + 1a38: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 1a3c: 40 e0 ldi r20, 0x00 ; 0 + 1a3e: 50 e0 ldi r21, 0x00 ; 0 + 1a40: 18 16 cp r1, r24 + 1a42: 19 06 cpc r1, r25 + 1a44: 14 f0 brlt .+4 ; 0x1a4a <_ZNK6StringleERKS_+0x1e> + 1a46: 41 e0 ldi r20, 0x01 ; 1 + 1a48: 50 e0 ldi r21, 0x00 ; 0 + 1a4a: ca 01 movw r24, r20 + 1a4c: 08 95 ret + +00001a4e <_ZNK6StringgtERKS_>: + 1a4e: dc 01 movw r26, r24 + 1a50: fb 01 movw r30, r22 + 1a52: 60 81 ld r22, Z + 1a54: 71 81 ldd r23, Z+1 ; 0x01 + 1a56: 8d 91 ld r24, X+ + 1a58: 9c 91 ld r25, X + 1a5a: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 1a5e: 40 e0 ldi r20, 0x00 ; 0 + 1a60: 50 e0 ldi r21, 0x00 ; 0 + 1a62: 18 16 cp r1, r24 + 1a64: 19 06 cpc r1, r25 + 1a66: 14 f4 brge .+4 ; 0x1a6c <_ZNK6StringgtERKS_+0x1e> + 1a68: 41 e0 ldi r20, 0x01 ; 1 + 1a6a: 50 e0 ldi r21, 0x00 ; 0 + 1a6c: ca 01 movw r24, r20 + 1a6e: 08 95 ret + +00001a70 <_ZNK6StringltERKS_>: + 1a70: dc 01 movw r26, r24 + 1a72: fb 01 movw r30, r22 + 1a74: 60 81 ld r22, Z + 1a76: 71 81 ldd r23, Z+1 ; 0x01 + 1a78: 8d 91 ld r24, X+ + 1a7a: 9c 91 ld r25, X + 1a7c: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 1a80: 29 2f mov r18, r25 + 1a82: 33 27 eor r19, r19 + 1a84: 27 fd sbrc r18, 7 + 1a86: 30 95 com r19 + 1a88: 22 27 eor r18, r18 + 1a8a: 33 0f add r19, r19 + 1a8c: 22 1f adc r18, r18 + 1a8e: 33 27 eor r19, r19 + 1a90: c9 01 movw r24, r18 + 1a92: 08 95 ret + +00001a94 <_ZNK6StringneERKS_>: + 1a94: dc 01 movw r26, r24 + 1a96: fb 01 movw r30, r22 + 1a98: 14 96 adiw r26, 0x04 ; 4 + 1a9a: 2d 91 ld r18, X+ + 1a9c: 3c 91 ld r19, X + 1a9e: 15 97 sbiw r26, 0x05 ; 5 + 1aa0: 84 81 ldd r24, Z+4 ; 0x04 + 1aa2: 95 81 ldd r25, Z+5 ; 0x05 + 1aa4: 28 17 cp r18, r24 + 1aa6: 39 07 cpc r19, r25 + 1aa8: 51 f4 brne .+20 ; 0x1abe <_ZNK6StringneERKS_+0x2a> + 1aaa: 60 81 ld r22, Z + 1aac: 71 81 ldd r23, Z+1 ; 0x01 + 1aae: 8d 91 ld r24, X+ + 1ab0: 9c 91 ld r25, X + 1ab2: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 1ab6: 9c 01 movw r18, r24 + 1ab8: 80 e0 ldi r24, 0x00 ; 0 + 1aba: 23 2b or r18, r19 + 1abc: 09 f0 breq .+2 ; 0x1ac0 <_ZNK6StringneERKS_+0x2c> + 1abe: 81 e0 ldi r24, 0x01 ; 1 + 1ac0: 90 e0 ldi r25, 0x00 ; 0 + 1ac2: 08 95 ret + +00001ac4 <_ZNK6StringeqERKS_>: + 1ac4: dc 01 movw r26, r24 + 1ac6: fb 01 movw r30, r22 + 1ac8: 14 96 adiw r26, 0x04 ; 4 + 1aca: 2d 91 ld r18, X+ + 1acc: 3c 91 ld r19, X + 1ace: 15 97 sbiw r26, 0x05 ; 5 + 1ad0: 84 81 ldd r24, Z+4 ; 0x04 + 1ad2: 95 81 ldd r25, Z+5 ; 0x05 + 1ad4: 28 17 cp r18, r24 + 1ad6: 39 07 cpc r19, r25 + 1ad8: 11 f0 breq .+4 ; 0x1ade <_ZNK6StringeqERKS_+0x1a> + 1ada: 80 e0 ldi r24, 0x00 ; 0 + 1adc: 0b c0 rjmp .+22 ; 0x1af4 <_ZNK6StringeqERKS_+0x30> + 1ade: 60 81 ld r22, Z + 1ae0: 71 81 ldd r23, Z+1 ; 0x01 + 1ae2: 8d 91 ld r24, X+ + 1ae4: 9c 91 ld r25, X + 1ae6: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 1aea: 9c 01 movw r18, r24 + 1aec: 80 e0 ldi r24, 0x00 ; 0 + 1aee: 23 2b or r18, r19 + 1af0: 09 f4 brne .+2 ; 0x1af4 <_ZNK6StringeqERKS_+0x30> + 1af2: 81 e0 ldi r24, 0x01 ; 1 + 1af4: 90 e0 ldi r25, 0x00 ; 0 + 1af6: 08 95 ret + +00001af8 <_ZNK6String9compareToERKS_>: + 1af8: fc 01 movw r30, r24 + 1afa: db 01 movw r26, r22 + 1afc: 6d 91 ld r22, X+ + 1afe: 7c 91 ld r23, X + 1b00: 80 81 ld r24, Z + 1b02: 91 81 ldd r25, Z+1 ; 0x01 + 1b04: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 1b08: 08 95 ret + +00001b0a <_ZN6StringpLERKS_>: + 1b0a: 0f 93 push r16 + 1b0c: 1f 93 push r17 + 1b0e: cf 93 push r28 + 1b10: df 93 push r29 + 1b12: ec 01 movw r28, r24 + 1b14: 8b 01 movw r16, r22 + 1b16: fb 01 movw r30, r22 + 1b18: 64 81 ldd r22, Z+4 ; 0x04 + 1b1a: 75 81 ldd r23, Z+5 ; 0x05 + 1b1c: 8c 81 ldd r24, Y+4 ; 0x04 + 1b1e: 9d 81 ldd r25, Y+5 ; 0x05 + 1b20: 68 0f add r22, r24 + 1b22: 79 1f adc r23, r25 + 1b24: 7d 83 std Y+5, r23 ; 0x05 + 1b26: 6c 83 std Y+4, r22 ; 0x04 + 1b28: 8a 81 ldd r24, Y+2 ; 0x02 + 1b2a: 9b 81 ldd r25, Y+3 ; 0x03 + 1b2c: 86 17 cp r24, r22 + 1b2e: 97 07 cpc r25, r23 + 1b30: b8 f4 brcc .+46 ; 0x1b60 <_ZN6StringpLERKS_+0x56> + 1b32: 6f 5f subi r22, 0xFF ; 255 + 1b34: 7f 4f sbci r23, 0xFF ; 255 + 1b36: 88 81 ld r24, Y + 1b38: 99 81 ldd r25, Y+1 ; 0x01 + 1b3a: 0e 94 f2 1f call 0x3fe4 ; 0x3fe4 <realloc> + 1b3e: 4c 81 ldd r20, Y+4 ; 0x04 + 1b40: 5d 81 ldd r21, Y+5 ; 0x05 + 1b42: 00 97 sbiw r24, 0x00 ; 0 + 1b44: 29 f0 breq .+10 ; 0x1b50 <_ZN6StringpLERKS_+0x46> + 1b46: 99 83 std Y+1, r25 ; 0x01 + 1b48: 88 83 st Y, r24 + 1b4a: 5b 83 std Y+3, r21 ; 0x03 + 1b4c: 4a 83 std Y+2, r20 ; 0x02 + 1b4e: 08 c0 rjmp .+16 ; 0x1b60 <_ZN6StringpLERKS_+0x56> + 1b50: f8 01 movw r30, r16 + 1b52: 84 81 ldd r24, Z+4 ; 0x04 + 1b54: 95 81 ldd r25, Z+5 ; 0x05 + 1b56: 48 1b sub r20, r24 + 1b58: 59 0b sbc r21, r25 + 1b5a: 5d 83 std Y+5, r21 ; 0x05 + 1b5c: 4c 83 std Y+4, r20 ; 0x04 + 1b5e: 07 c0 rjmp .+14 ; 0x1b6e <_ZN6StringpLERKS_+0x64> + 1b60: f8 01 movw r30, r16 + 1b62: 60 81 ld r22, Z + 1b64: 71 81 ldd r23, Z+1 ; 0x01 + 1b66: 88 81 ld r24, Y + 1b68: 99 81 ldd r25, Y+1 ; 0x01 + 1b6a: 0e 94 08 21 call 0x4210 ; 0x4210 <strcat> + 1b6e: ce 01 movw r24, r28 + 1b70: df 91 pop r29 + 1b72: cf 91 pop r28 + 1b74: 1f 91 pop r17 + 1b76: 0f 91 pop r16 + 1b78: 08 95 ret + +00001b7a <_ZN6String6concatERKS_>: + 1b7a: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 1b7e: 08 95 ret + +00001b80 <_ZN6String9getBufferEj>: + 1b80: cf 93 push r28 + 1b82: df 93 push r29 + 1b84: ec 01 movw r28, r24 + 1b86: cb 01 movw r24, r22 + 1b88: 7b 83 std Y+3, r23 ; 0x03 + 1b8a: 6a 83 std Y+2, r22 ; 0x02 + 1b8c: 01 96 adiw r24, 0x01 ; 1 + 1b8e: 0e 94 8c 1e call 0x3d18 ; 0x3d18 <malloc> + 1b92: 99 83 std Y+1, r25 ; 0x01 + 1b94: 88 83 st Y, r24 + 1b96: 00 97 sbiw r24, 0x00 ; 0 + 1b98: 21 f4 brne .+8 ; 0x1ba2 <_ZN6String9getBufferEj+0x22> + 1b9a: 1b 82 std Y+3, r1 ; 0x03 + 1b9c: 1a 82 std Y+2, r1 ; 0x02 + 1b9e: 1d 82 std Y+5, r1 ; 0x05 + 1ba0: 1c 82 std Y+4, r1 ; 0x04 + 1ba2: df 91 pop r29 + 1ba4: cf 91 pop r28 + 1ba6: 08 95 ret + +00001ba8 <_ZN6StringaSERKS_>: + 1ba8: 0f 93 push r16 + 1baa: 1f 93 push r17 + 1bac: cf 93 push r28 + 1bae: df 93 push r29 + 1bb0: ec 01 movw r28, r24 + 1bb2: 8b 01 movw r16, r22 + 1bb4: 86 17 cp r24, r22 + 1bb6: 97 07 cpc r25, r23 + 1bb8: 09 f1 breq .+66 ; 0x1bfc <_ZN6StringaSERKS_+0x54> + 1bba: fb 01 movw r30, r22 + 1bbc: 24 81 ldd r18, Z+4 ; 0x04 + 1bbe: 35 81 ldd r19, Z+5 ; 0x05 + 1bc0: 8c 81 ldd r24, Y+4 ; 0x04 + 1bc2: 9d 81 ldd r25, Y+5 ; 0x05 + 1bc4: 82 17 cp r24, r18 + 1bc6: 93 07 cpc r25, r19 + 1bc8: 50 f4 brcc .+20 ; 0x1bde <_ZN6StringaSERKS_+0x36> + 1bca: 88 81 ld r24, Y + 1bcc: 99 81 ldd r25, Y+1 ; 0x01 + 1bce: 0e 94 39 1f call 0x3e72 ; 0x3e72 <free> + 1bd2: f8 01 movw r30, r16 + 1bd4: 64 81 ldd r22, Z+4 ; 0x04 + 1bd6: 75 81 ldd r23, Z+5 ; 0x05 + 1bd8: ce 01 movw r24, r28 + 1bda: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1bde: 28 81 ld r18, Y + 1be0: 39 81 ldd r19, Y+1 ; 0x01 + 1be2: 21 15 cp r18, r1 + 1be4: 31 05 cpc r19, r1 + 1be6: 51 f0 breq .+20 ; 0x1bfc <_ZN6StringaSERKS_+0x54> + 1be8: f8 01 movw r30, r16 + 1bea: 84 81 ldd r24, Z+4 ; 0x04 + 1bec: 95 81 ldd r25, Z+5 ; 0x05 + 1bee: 9d 83 std Y+5, r25 ; 0x05 + 1bf0: 8c 83 std Y+4, r24 ; 0x04 + 1bf2: 60 81 ld r22, Z + 1bf4: 71 81 ldd r23, Z+1 ; 0x01 + 1bf6: c9 01 movw r24, r18 + 1bf8: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1bfc: ce 01 movw r24, r28 + 1bfe: df 91 pop r29 + 1c00: cf 91 pop r28 + 1c02: 1f 91 pop r17 + 1c04: 0f 91 pop r16 + 1c06: 08 95 ret + +00001c08 <_ZN6StringC1Eh>: + 1c08: 1f 93 push r17 + 1c0a: cf 93 push r28 + 1c0c: df 93 push r29 + 1c0e: ec 01 movw r28, r24 + 1c10: 16 2f mov r17, r22 + 1c12: 81 e0 ldi r24, 0x01 ; 1 + 1c14: 90 e0 ldi r25, 0x00 ; 0 + 1c16: 9d 83 std Y+5, r25 ; 0x05 + 1c18: 8c 83 std Y+4, r24 ; 0x04 + 1c1a: ce 01 movw r24, r28 + 1c1c: 61 e0 ldi r22, 0x01 ; 1 + 1c1e: 70 e0 ldi r23, 0x00 ; 0 + 1c20: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1c24: e8 81 ld r30, Y + 1c26: f9 81 ldd r31, Y+1 ; 0x01 + 1c28: 30 97 sbiw r30, 0x00 ; 0 + 1c2a: 21 f0 breq .+8 ; 0x1c34 <_ZN6StringC1Eh+0x2c> + 1c2c: 10 83 st Z, r17 + 1c2e: e8 81 ld r30, Y + 1c30: f9 81 ldd r31, Y+1 ; 0x01 + 1c32: 11 82 std Z+1, r1 ; 0x01 + 1c34: df 91 pop r29 + 1c36: cf 91 pop r28 + 1c38: 1f 91 pop r17 + 1c3a: 08 95 ret + +00001c3c <_ZN6StringC2Eh>: + 1c3c: 1f 93 push r17 + 1c3e: cf 93 push r28 + 1c40: df 93 push r29 + 1c42: ec 01 movw r28, r24 + 1c44: 16 2f mov r17, r22 + 1c46: 81 e0 ldi r24, 0x01 ; 1 + 1c48: 90 e0 ldi r25, 0x00 ; 0 + 1c4a: 9d 83 std Y+5, r25 ; 0x05 + 1c4c: 8c 83 std Y+4, r24 ; 0x04 + 1c4e: ce 01 movw r24, r28 + 1c50: 61 e0 ldi r22, 0x01 ; 1 + 1c52: 70 e0 ldi r23, 0x00 ; 0 + 1c54: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1c58: e8 81 ld r30, Y + 1c5a: f9 81 ldd r31, Y+1 ; 0x01 + 1c5c: 30 97 sbiw r30, 0x00 ; 0 + 1c5e: 21 f0 breq .+8 ; 0x1c68 <_ZN6StringC2Eh+0x2c> + 1c60: 10 83 st Z, r17 + 1c62: e8 81 ld r30, Y + 1c64: f9 81 ldd r31, Y+1 ; 0x01 + 1c66: 11 82 std Z+1, r1 ; 0x01 + 1c68: df 91 pop r29 + 1c6a: cf 91 pop r28 + 1c6c: 1f 91 pop r17 + 1c6e: 08 95 ret + +00001c70 <_ZN6StringC1Ec>: + 1c70: 1f 93 push r17 + 1c72: cf 93 push r28 + 1c74: df 93 push r29 + 1c76: ec 01 movw r28, r24 + 1c78: 16 2f mov r17, r22 + 1c7a: 81 e0 ldi r24, 0x01 ; 1 + 1c7c: 90 e0 ldi r25, 0x00 ; 0 + 1c7e: 9d 83 std Y+5, r25 ; 0x05 + 1c80: 8c 83 std Y+4, r24 ; 0x04 + 1c82: ce 01 movw r24, r28 + 1c84: 61 e0 ldi r22, 0x01 ; 1 + 1c86: 70 e0 ldi r23, 0x00 ; 0 + 1c88: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1c8c: e8 81 ld r30, Y + 1c8e: f9 81 ldd r31, Y+1 ; 0x01 + 1c90: 30 97 sbiw r30, 0x00 ; 0 + 1c92: 21 f0 breq .+8 ; 0x1c9c <_ZN6StringC1Ec+0x2c> + 1c94: 10 83 st Z, r17 + 1c96: e8 81 ld r30, Y + 1c98: f9 81 ldd r31, Y+1 ; 0x01 + 1c9a: 11 82 std Z+1, r1 ; 0x01 + 1c9c: df 91 pop r29 + 1c9e: cf 91 pop r28 + 1ca0: 1f 91 pop r17 + 1ca2: 08 95 ret + +00001ca4 <_ZN6StringC2Ec>: + 1ca4: 1f 93 push r17 + 1ca6: cf 93 push r28 + 1ca8: df 93 push r29 + 1caa: ec 01 movw r28, r24 + 1cac: 16 2f mov r17, r22 + 1cae: 81 e0 ldi r24, 0x01 ; 1 + 1cb0: 90 e0 ldi r25, 0x00 ; 0 + 1cb2: 9d 83 std Y+5, r25 ; 0x05 + 1cb4: 8c 83 std Y+4, r24 ; 0x04 + 1cb6: ce 01 movw r24, r28 + 1cb8: 61 e0 ldi r22, 0x01 ; 1 + 1cba: 70 e0 ldi r23, 0x00 ; 0 + 1cbc: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1cc0: e8 81 ld r30, Y + 1cc2: f9 81 ldd r31, Y+1 ; 0x01 + 1cc4: 30 97 sbiw r30, 0x00 ; 0 + 1cc6: 21 f0 breq .+8 ; 0x1cd0 <_ZN6StringC2Ec+0x2c> + 1cc8: 10 83 st Z, r17 + 1cca: e8 81 ld r30, Y + 1ccc: f9 81 ldd r31, Y+1 ; 0x01 + 1cce: 11 82 std Z+1, r1 ; 0x01 + 1cd0: df 91 pop r29 + 1cd2: cf 91 pop r28 + 1cd4: 1f 91 pop r17 + 1cd6: 08 95 ret + +00001cd8 <_ZN6StringC1ERKS_>: + 1cd8: 0f 93 push r16 + 1cda: 1f 93 push r17 + 1cdc: cf 93 push r28 + 1cde: df 93 push r29 + 1ce0: 8c 01 movw r16, r24 + 1ce2: eb 01 movw r28, r22 + 1ce4: 6c 81 ldd r22, Y+4 ; 0x04 + 1ce6: 7d 81 ldd r23, Y+5 ; 0x05 + 1ce8: fc 01 movw r30, r24 + 1cea: 75 83 std Z+5, r23 ; 0x05 + 1cec: 64 83 std Z+4, r22 ; 0x04 + 1cee: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1cf2: f8 01 movw r30, r16 + 1cf4: 80 81 ld r24, Z + 1cf6: 91 81 ldd r25, Z+1 ; 0x01 + 1cf8: 00 97 sbiw r24, 0x00 ; 0 + 1cfa: 21 f0 breq .+8 ; 0x1d04 <_ZN6StringC1ERKS_+0x2c> + 1cfc: 68 81 ld r22, Y + 1cfe: 79 81 ldd r23, Y+1 ; 0x01 + 1d00: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1d04: df 91 pop r29 + 1d06: cf 91 pop r28 + 1d08: 1f 91 pop r17 + 1d0a: 0f 91 pop r16 + 1d0c: 08 95 ret + +00001d0e <_ZN6StringC2ERKS_>: + 1d0e: 0f 93 push r16 + 1d10: 1f 93 push r17 + 1d12: cf 93 push r28 + 1d14: df 93 push r29 + 1d16: 8c 01 movw r16, r24 + 1d18: eb 01 movw r28, r22 + 1d1a: 6c 81 ldd r22, Y+4 ; 0x04 + 1d1c: 7d 81 ldd r23, Y+5 ; 0x05 + 1d1e: fc 01 movw r30, r24 + 1d20: 75 83 std Z+5, r23 ; 0x05 + 1d22: 64 83 std Z+4, r22 ; 0x04 + 1d24: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1d28: f8 01 movw r30, r16 + 1d2a: 80 81 ld r24, Z + 1d2c: 91 81 ldd r25, Z+1 ; 0x01 + 1d2e: 00 97 sbiw r24, 0x00 ; 0 + 1d30: 21 f0 breq .+8 ; 0x1d3a <_ZN6StringC2ERKS_+0x2c> + 1d32: 68 81 ld r22, Y + 1d34: 79 81 ldd r23, Y+1 ; 0x01 + 1d36: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1d3a: df 91 pop r29 + 1d3c: cf 91 pop r28 + 1d3e: 1f 91 pop r17 + 1d40: 0f 91 pop r16 + 1d42: 08 95 ret + +00001d44 <_ZN6StringC1Emi>: + 1d44: ef 92 push r14 + 1d46: ff 92 push r15 + 1d48: 0f 93 push r16 + 1d4a: 1f 93 push r17 + 1d4c: df 93 push r29 + 1d4e: cf 93 push r28 + 1d50: cd b7 in r28, 0x3d ; 61 + 1d52: de b7 in r29, 0x3e ; 62 + 1d54: a1 97 sbiw r28, 0x21 ; 33 + 1d56: 0f b6 in r0, 0x3f ; 63 + 1d58: f8 94 cli + 1d5a: de bf out 0x3e, r29 ; 62 + 1d5c: 0f be out 0x3f, r0 ; 63 + 1d5e: cd bf out 0x3d, r28 ; 61 + 1d60: 8c 01 movw r16, r24 + 1d62: cb 01 movw r24, r22 + 1d64: ba 01 movw r22, r20 + 1d66: 7e 01 movw r14, r28 + 1d68: 08 94 sec + 1d6a: e1 1c adc r14, r1 + 1d6c: f1 1c adc r15, r1 + 1d6e: a7 01 movw r20, r14 + 1d70: 2a e0 ldi r18, 0x0A ; 10 + 1d72: 30 e0 ldi r19, 0x00 ; 0 + 1d74: 0e 94 da 21 call 0x43b4 ; 0x43b4 <ultoa> + 1d78: f7 01 movw r30, r14 + 1d7a: 01 90 ld r0, Z+ + 1d7c: 00 20 and r0, r0 + 1d7e: e9 f7 brne .-6 ; 0x1d7a <_ZN6StringC1Emi+0x36> + 1d80: 31 97 sbiw r30, 0x01 ; 1 + 1d82: ee 19 sub r30, r14 + 1d84: ff 09 sbc r31, r15 + 1d86: d8 01 movw r26, r16 + 1d88: 15 96 adiw r26, 0x05 ; 5 + 1d8a: fc 93 st X, r31 + 1d8c: ee 93 st -X, r30 + 1d8e: 14 97 sbiw r26, 0x04 ; 4 + 1d90: c8 01 movw r24, r16 + 1d92: bf 01 movw r22, r30 + 1d94: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1d98: f8 01 movw r30, r16 + 1d9a: 80 81 ld r24, Z + 1d9c: 91 81 ldd r25, Z+1 ; 0x01 + 1d9e: 00 97 sbiw r24, 0x00 ; 0 + 1da0: 19 f0 breq .+6 ; 0x1da8 <_ZN6StringC1Emi+0x64> + 1da2: b7 01 movw r22, r14 + 1da4: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1da8: a1 96 adiw r28, 0x21 ; 33 + 1daa: 0f b6 in r0, 0x3f ; 63 + 1dac: f8 94 cli + 1dae: de bf out 0x3e, r29 ; 62 + 1db0: 0f be out 0x3f, r0 ; 63 + 1db2: cd bf out 0x3d, r28 ; 61 + 1db4: cf 91 pop r28 + 1db6: df 91 pop r29 + 1db8: 1f 91 pop r17 + 1dba: 0f 91 pop r16 + 1dbc: ff 90 pop r15 + 1dbe: ef 90 pop r14 + 1dc0: 08 95 ret + +00001dc2 <_ZN6StringC2Emi>: + 1dc2: ef 92 push r14 + 1dc4: ff 92 push r15 + 1dc6: 0f 93 push r16 + 1dc8: 1f 93 push r17 + 1dca: df 93 push r29 + 1dcc: cf 93 push r28 + 1dce: cd b7 in r28, 0x3d ; 61 + 1dd0: de b7 in r29, 0x3e ; 62 + 1dd2: a1 97 sbiw r28, 0x21 ; 33 + 1dd4: 0f b6 in r0, 0x3f ; 63 + 1dd6: f8 94 cli + 1dd8: de bf out 0x3e, r29 ; 62 + 1dda: 0f be out 0x3f, r0 ; 63 + 1ddc: cd bf out 0x3d, r28 ; 61 + 1dde: 8c 01 movw r16, r24 + 1de0: cb 01 movw r24, r22 + 1de2: ba 01 movw r22, r20 + 1de4: 7e 01 movw r14, r28 + 1de6: 08 94 sec + 1de8: e1 1c adc r14, r1 + 1dea: f1 1c adc r15, r1 + 1dec: a7 01 movw r20, r14 + 1dee: 2a e0 ldi r18, 0x0A ; 10 + 1df0: 30 e0 ldi r19, 0x00 ; 0 + 1df2: 0e 94 da 21 call 0x43b4 ; 0x43b4 <ultoa> + 1df6: f7 01 movw r30, r14 + 1df8: 01 90 ld r0, Z+ + 1dfa: 00 20 and r0, r0 + 1dfc: e9 f7 brne .-6 ; 0x1df8 <_ZN6StringC2Emi+0x36> + 1dfe: 31 97 sbiw r30, 0x01 ; 1 + 1e00: ee 19 sub r30, r14 + 1e02: ff 09 sbc r31, r15 + 1e04: d8 01 movw r26, r16 + 1e06: 15 96 adiw r26, 0x05 ; 5 + 1e08: fc 93 st X, r31 + 1e0a: ee 93 st -X, r30 + 1e0c: 14 97 sbiw r26, 0x04 ; 4 + 1e0e: c8 01 movw r24, r16 + 1e10: bf 01 movw r22, r30 + 1e12: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1e16: f8 01 movw r30, r16 + 1e18: 80 81 ld r24, Z + 1e1a: 91 81 ldd r25, Z+1 ; 0x01 + 1e1c: 00 97 sbiw r24, 0x00 ; 0 + 1e1e: 19 f0 breq .+6 ; 0x1e26 <_ZN6StringC2Emi+0x64> + 1e20: b7 01 movw r22, r14 + 1e22: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1e26: a1 96 adiw r28, 0x21 ; 33 + 1e28: 0f b6 in r0, 0x3f ; 63 + 1e2a: f8 94 cli + 1e2c: de bf out 0x3e, r29 ; 62 + 1e2e: 0f be out 0x3f, r0 ; 63 + 1e30: cd bf out 0x3d, r28 ; 61 + 1e32: cf 91 pop r28 + 1e34: df 91 pop r29 + 1e36: 1f 91 pop r17 + 1e38: 0f 91 pop r16 + 1e3a: ff 90 pop r15 + 1e3c: ef 90 pop r14 + 1e3e: 08 95 ret + +00001e40 <_ZN6StringC1Eji>: + 1e40: ef 92 push r14 + 1e42: ff 92 push r15 + 1e44: 0f 93 push r16 + 1e46: 1f 93 push r17 + 1e48: df 93 push r29 + 1e4a: cf 93 push r28 + 1e4c: cd b7 in r28, 0x3d ; 61 + 1e4e: de b7 in r29, 0x3e ; 62 + 1e50: a1 97 sbiw r28, 0x21 ; 33 + 1e52: 0f b6 in r0, 0x3f ; 63 + 1e54: f8 94 cli + 1e56: de bf out 0x3e, r29 ; 62 + 1e58: 0f be out 0x3f, r0 ; 63 + 1e5a: cd bf out 0x3d, r28 ; 61 + 1e5c: 8c 01 movw r16, r24 + 1e5e: 9a 01 movw r18, r20 + 1e60: 80 e0 ldi r24, 0x00 ; 0 + 1e62: 90 e0 ldi r25, 0x00 ; 0 + 1e64: 7e 01 movw r14, r28 + 1e66: 08 94 sec + 1e68: e1 1c adc r14, r1 + 1e6a: f1 1c adc r15, r1 + 1e6c: a7 01 movw r20, r14 + 1e6e: 0e 94 da 21 call 0x43b4 ; 0x43b4 <ultoa> + 1e72: f7 01 movw r30, r14 + 1e74: 01 90 ld r0, Z+ + 1e76: 00 20 and r0, r0 + 1e78: e9 f7 brne .-6 ; 0x1e74 <_ZN6StringC1Eji+0x34> + 1e7a: 31 97 sbiw r30, 0x01 ; 1 + 1e7c: ee 19 sub r30, r14 + 1e7e: ff 09 sbc r31, r15 + 1e80: d8 01 movw r26, r16 + 1e82: 15 96 adiw r26, 0x05 ; 5 + 1e84: fc 93 st X, r31 + 1e86: ee 93 st -X, r30 + 1e88: 14 97 sbiw r26, 0x04 ; 4 + 1e8a: c8 01 movw r24, r16 + 1e8c: bf 01 movw r22, r30 + 1e8e: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1e92: f8 01 movw r30, r16 + 1e94: 80 81 ld r24, Z + 1e96: 91 81 ldd r25, Z+1 ; 0x01 + 1e98: 00 97 sbiw r24, 0x00 ; 0 + 1e9a: 19 f0 breq .+6 ; 0x1ea2 <_ZN6StringC1Eji+0x62> + 1e9c: b7 01 movw r22, r14 + 1e9e: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1ea2: a1 96 adiw r28, 0x21 ; 33 + 1ea4: 0f b6 in r0, 0x3f ; 63 + 1ea6: f8 94 cli + 1ea8: de bf out 0x3e, r29 ; 62 + 1eaa: 0f be out 0x3f, r0 ; 63 + 1eac: cd bf out 0x3d, r28 ; 61 + 1eae: cf 91 pop r28 + 1eb0: df 91 pop r29 + 1eb2: 1f 91 pop r17 + 1eb4: 0f 91 pop r16 + 1eb6: ff 90 pop r15 + 1eb8: ef 90 pop r14 + 1eba: 08 95 ret + +00001ebc <_ZN6StringC2Eji>: + 1ebc: ef 92 push r14 + 1ebe: ff 92 push r15 + 1ec0: 0f 93 push r16 + 1ec2: 1f 93 push r17 + 1ec4: df 93 push r29 + 1ec6: cf 93 push r28 + 1ec8: cd b7 in r28, 0x3d ; 61 + 1eca: de b7 in r29, 0x3e ; 62 + 1ecc: a1 97 sbiw r28, 0x21 ; 33 + 1ece: 0f b6 in r0, 0x3f ; 63 + 1ed0: f8 94 cli + 1ed2: de bf out 0x3e, r29 ; 62 + 1ed4: 0f be out 0x3f, r0 ; 63 + 1ed6: cd bf out 0x3d, r28 ; 61 + 1ed8: 8c 01 movw r16, r24 + 1eda: 9a 01 movw r18, r20 + 1edc: 80 e0 ldi r24, 0x00 ; 0 + 1ede: 90 e0 ldi r25, 0x00 ; 0 + 1ee0: 7e 01 movw r14, r28 + 1ee2: 08 94 sec + 1ee4: e1 1c adc r14, r1 + 1ee6: f1 1c adc r15, r1 + 1ee8: a7 01 movw r20, r14 + 1eea: 0e 94 da 21 call 0x43b4 ; 0x43b4 <ultoa> + 1eee: f7 01 movw r30, r14 + 1ef0: 01 90 ld r0, Z+ + 1ef2: 00 20 and r0, r0 + 1ef4: e9 f7 brne .-6 ; 0x1ef0 <_ZN6StringC2Eji+0x34> + 1ef6: 31 97 sbiw r30, 0x01 ; 1 + 1ef8: ee 19 sub r30, r14 + 1efa: ff 09 sbc r31, r15 + 1efc: d8 01 movw r26, r16 + 1efe: 15 96 adiw r26, 0x05 ; 5 + 1f00: fc 93 st X, r31 + 1f02: ee 93 st -X, r30 + 1f04: 14 97 sbiw r26, 0x04 ; 4 + 1f06: c8 01 movw r24, r16 + 1f08: bf 01 movw r22, r30 + 1f0a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1f0e: f8 01 movw r30, r16 + 1f10: 80 81 ld r24, Z + 1f12: 91 81 ldd r25, Z+1 ; 0x01 + 1f14: 00 97 sbiw r24, 0x00 ; 0 + 1f16: 19 f0 breq .+6 ; 0x1f1e <_ZN6StringC2Eji+0x62> + 1f18: b7 01 movw r22, r14 + 1f1a: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1f1e: a1 96 adiw r28, 0x21 ; 33 + 1f20: 0f b6 in r0, 0x3f ; 63 + 1f22: f8 94 cli + 1f24: de bf out 0x3e, r29 ; 62 + 1f26: 0f be out 0x3f, r0 ; 63 + 1f28: cd bf out 0x3d, r28 ; 61 + 1f2a: cf 91 pop r28 + 1f2c: df 91 pop r29 + 1f2e: 1f 91 pop r17 + 1f30: 0f 91 pop r16 + 1f32: ff 90 pop r15 + 1f34: ef 90 pop r14 + 1f36: 08 95 ret + +00001f38 <_ZN6StringC1EPKc>: + 1f38: 0f 93 push r16 + 1f3a: 1f 93 push r17 + 1f3c: cf 93 push r28 + 1f3e: df 93 push r29 + 1f40: 8c 01 movw r16, r24 + 1f42: eb 01 movw r28, r22 + 1f44: 61 15 cp r22, r1 + 1f46: 71 05 cpc r23, r1 + 1f48: 11 f4 brne .+4 ; 0x1f4e <_ZN6StringC1EPKc+0x16> + 1f4a: c6 ea ldi r28, 0xA6 ; 166 + 1f4c: d1 e0 ldi r29, 0x01 ; 1 + 1f4e: fe 01 movw r30, r28 + 1f50: 01 90 ld r0, Z+ + 1f52: 00 20 and r0, r0 + 1f54: e9 f7 brne .-6 ; 0x1f50 <_ZN6StringC1EPKc+0x18> + 1f56: 31 97 sbiw r30, 0x01 ; 1 + 1f58: ec 1b sub r30, r28 + 1f5a: fd 0b sbc r31, r29 + 1f5c: d8 01 movw r26, r16 + 1f5e: 15 96 adiw r26, 0x05 ; 5 + 1f60: fc 93 st X, r31 + 1f62: ee 93 st -X, r30 + 1f64: 14 97 sbiw r26, 0x04 ; 4 + 1f66: c8 01 movw r24, r16 + 1f68: bf 01 movw r22, r30 + 1f6a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1f6e: f8 01 movw r30, r16 + 1f70: 80 81 ld r24, Z + 1f72: 91 81 ldd r25, Z+1 ; 0x01 + 1f74: 00 97 sbiw r24, 0x00 ; 0 + 1f76: 19 f0 breq .+6 ; 0x1f7e <_ZN6StringC1EPKc+0x46> + 1f78: be 01 movw r22, r28 + 1f7a: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 1f7e: df 91 pop r29 + 1f80: cf 91 pop r28 + 1f82: 1f 91 pop r17 + 1f84: 0f 91 pop r16 + 1f86: 08 95 ret + +00001f88 <_ZNK6String11toUpperCaseEv>: + 1f88: af 92 push r10 + 1f8a: bf 92 push r11 + 1f8c: cf 92 push r12 + 1f8e: df 92 push r13 + 1f90: ef 92 push r14 + 1f92: ff 92 push r15 + 1f94: 0f 93 push r16 + 1f96: 1f 93 push r17 + 1f98: cf 93 push r28 + 1f9a: df 93 push r29 + 1f9c: b8 2e mov r11, r24 + 1f9e: a9 2e mov r10, r25 + 1fa0: 6b 01 movw r12, r22 + 1fa2: c8 2f mov r28, r24 + 1fa4: d9 2f mov r29, r25 + 1fa6: fb 01 movw r30, r22 + 1fa8: 60 81 ld r22, Z + 1faa: 71 81 ldd r23, Z+1 ; 0x01 + 1fac: ce 01 movw r24, r28 + 1fae: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 1fb2: ee 24 eor r14, r14 + 1fb4: ff 24 eor r15, r15 + 1fb6: 10 c0 rjmp .+32 ; 0x1fd8 <_ZNK6String11toUpperCaseEv+0x50> + 1fb8: 08 81 ld r16, Y + 1fba: 19 81 ldd r17, Y+1 ; 0x01 + 1fbc: 0e 0d add r16, r14 + 1fbe: 1f 1d adc r17, r15 + 1fc0: f8 01 movw r30, r16 + 1fc2: 80 81 ld r24, Z + 1fc4: 99 27 eor r25, r25 + 1fc6: 87 fd sbrc r24, 7 + 1fc8: 90 95 com r25 + 1fca: 0e 94 f7 20 call 0x41ee ; 0x41ee <toupper> + 1fce: f8 01 movw r30, r16 + 1fd0: 80 83 st Z, r24 + 1fd2: 08 94 sec + 1fd4: e1 1c adc r14, r1 + 1fd6: f1 1c adc r15, r1 + 1fd8: f6 01 movw r30, r12 + 1fda: 84 81 ldd r24, Z+4 ; 0x04 + 1fdc: 95 81 ldd r25, Z+5 ; 0x05 + 1fde: e8 16 cp r14, r24 + 1fe0: f9 06 cpc r15, r25 + 1fe2: 50 f3 brcs .-44 ; 0x1fb8 <_ZNK6String11toUpperCaseEv+0x30> + 1fe4: 8b 2d mov r24, r11 + 1fe6: 9a 2d mov r25, r10 + 1fe8: df 91 pop r29 + 1fea: cf 91 pop r28 + 1fec: 1f 91 pop r17 + 1fee: 0f 91 pop r16 + 1ff0: ff 90 pop r15 + 1ff2: ef 90 pop r14 + 1ff4: df 90 pop r13 + 1ff6: cf 90 pop r12 + 1ff8: bf 90 pop r11 + 1ffa: af 90 pop r10 + 1ffc: 08 95 ret + +00001ffe <_ZNK6String11toLowerCaseEv>: + 1ffe: af 92 push r10 + 2000: bf 92 push r11 + 2002: cf 92 push r12 + 2004: df 92 push r13 + 2006: ef 92 push r14 + 2008: ff 92 push r15 + 200a: 0f 93 push r16 + 200c: 1f 93 push r17 + 200e: cf 93 push r28 + 2010: df 93 push r29 + 2012: b8 2e mov r11, r24 + 2014: a9 2e mov r10, r25 + 2016: 6b 01 movw r12, r22 + 2018: c8 2f mov r28, r24 + 201a: d9 2f mov r29, r25 + 201c: fb 01 movw r30, r22 + 201e: 60 81 ld r22, Z + 2020: 71 81 ldd r23, Z+1 ; 0x01 + 2022: ce 01 movw r24, r28 + 2024: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 2028: ee 24 eor r14, r14 + 202a: ff 24 eor r15, r15 + 202c: 10 c0 rjmp .+32 ; 0x204e <_ZNK6String11toLowerCaseEv+0x50> + 202e: 08 81 ld r16, Y + 2030: 19 81 ldd r17, Y+1 ; 0x01 + 2032: 0e 0d add r16, r14 + 2034: 1f 1d adc r17, r15 + 2036: f8 01 movw r30, r16 + 2038: 80 81 ld r24, Z + 203a: 99 27 eor r25, r25 + 203c: 87 fd sbrc r24, 7 + 203e: 90 95 com r25 + 2040: 0e 94 ef 20 call 0x41de ; 0x41de <tolower> + 2044: f8 01 movw r30, r16 + 2046: 80 83 st Z, r24 + 2048: 08 94 sec + 204a: e1 1c adc r14, r1 + 204c: f1 1c adc r15, r1 + 204e: f6 01 movw r30, r12 + 2050: 84 81 ldd r24, Z+4 ; 0x04 + 2052: 95 81 ldd r25, Z+5 ; 0x05 + 2054: e8 16 cp r14, r24 + 2056: f9 06 cpc r15, r25 + 2058: 50 f3 brcs .-44 ; 0x202e <_ZNK6String11toLowerCaseEv+0x30> + 205a: 8b 2d mov r24, r11 + 205c: 9a 2d mov r25, r10 + 205e: df 91 pop r29 + 2060: cf 91 pop r28 + 2062: 1f 91 pop r17 + 2064: 0f 91 pop r16 + 2066: ff 90 pop r15 + 2068: ef 90 pop r14 + 206a: df 90 pop r13 + 206c: cf 90 pop r12 + 206e: bf 90 pop r11 + 2070: af 90 pop r10 + 2072: 08 95 ret + +00002074 <_ZNK6String16equalsIgnoreCaseERKS_>: + 2074: ef 92 push r14 + 2076: ff 92 push r15 + 2078: 0f 93 push r16 + 207a: 1f 93 push r17 + 207c: df 93 push r29 + 207e: cf 93 push r28 + 2080: cd b7 in r28, 0x3d ; 61 + 2082: de b7 in r29, 0x3e ; 62 + 2084: 2c 97 sbiw r28, 0x0c ; 12 + 2086: 0f b6 in r0, 0x3f ; 63 + 2088: f8 94 cli + 208a: de bf out 0x3e, r29 ; 62 + 208c: 0f be out 0x3f, r0 ; 63 + 208e: cd bf out 0x3d, r28 ; 61 + 2090: fc 01 movw r30, r24 + 2092: 7b 01 movw r14, r22 + 2094: 86 17 cp r24, r22 + 2096: 97 07 cpc r25, r23 + 2098: 11 f4 brne .+4 ; 0x209e <_ZNK6String16equalsIgnoreCaseERKS_+0x2a> + 209a: 01 e0 ldi r16, 0x01 ; 1 + 209c: 29 c0 rjmp .+82 ; 0x20f0 <_ZNK6String16equalsIgnoreCaseERKS_+0x7c> + 209e: 24 81 ldd r18, Z+4 ; 0x04 + 20a0: 35 81 ldd r19, Z+5 ; 0x05 + 20a2: db 01 movw r26, r22 + 20a4: 14 96 adiw r26, 0x04 ; 4 + 20a6: 8d 91 ld r24, X+ + 20a8: 9c 91 ld r25, X + 20aa: 15 97 sbiw r26, 0x05 ; 5 + 20ac: 28 17 cp r18, r24 + 20ae: 39 07 cpc r19, r25 + 20b0: 11 f0 breq .+4 ; 0x20b6 <_ZNK6String16equalsIgnoreCaseERKS_+0x42> + 20b2: 00 e0 ldi r16, 0x00 ; 0 + 20b4: 1d c0 rjmp .+58 ; 0x20f0 <_ZNK6String16equalsIgnoreCaseERKS_+0x7c> + 20b6: ce 01 movw r24, r28 + 20b8: 01 96 adiw r24, 0x01 ; 1 + 20ba: bf 01 movw r22, r30 + 20bc: 0e 94 ff 0f call 0x1ffe ; 0x1ffe <_ZNK6String11toLowerCaseEv> + 20c0: 09 81 ldd r16, Y+1 ; 0x01 + 20c2: 1a 81 ldd r17, Y+2 ; 0x02 + 20c4: ce 01 movw r24, r28 + 20c6: 07 96 adiw r24, 0x07 ; 7 + 20c8: b7 01 movw r22, r14 + 20ca: 0e 94 ff 0f call 0x1ffe ; 0x1ffe <_ZNK6String11toLowerCaseEv> + 20ce: 6f 81 ldd r22, Y+7 ; 0x07 + 20d0: 78 85 ldd r23, Y+8 ; 0x08 + 20d2: c8 01 movw r24, r16 + 20d4: 0e 94 1e 21 call 0x423c ; 0x423c <strcmp> + 20d8: 00 e0 ldi r16, 0x00 ; 0 + 20da: 00 97 sbiw r24, 0x00 ; 0 + 20dc: 09 f4 brne .+2 ; 0x20e0 <_ZNK6String16equalsIgnoreCaseERKS_+0x6c> + 20de: 01 e0 ldi r16, 0x01 ; 1 + 20e0: ce 01 movw r24, r28 + 20e2: 07 96 adiw r24, 0x07 ; 7 + 20e4: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 20e8: ce 01 movw r24, r28 + 20ea: 01 96 adiw r24, 0x01 ; 1 + 20ec: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 20f0: 80 2f mov r24, r16 + 20f2: 2c 96 adiw r28, 0x0c ; 12 + 20f4: 0f b6 in r0, 0x3f ; 63 + 20f6: f8 94 cli + 20f8: de bf out 0x3e, r29 ; 62 + 20fa: 0f be out 0x3f, r0 ; 63 + 20fc: cd bf out 0x3d, r28 ; 61 + 20fe: cf 91 pop r28 + 2100: df 91 pop r29 + 2102: 1f 91 pop r17 + 2104: 0f 91 pop r16 + 2106: ff 90 pop r15 + 2108: ef 90 pop r14 + 210a: 08 95 ret + +0000210c <_ZNK6String9substringEjj>: + 210c: cf 92 push r12 + 210e: df 92 push r13 + 2110: ef 92 push r14 + 2112: ff 92 push r15 + 2114: 1f 93 push r17 + 2116: cf 93 push r28 + 2118: df 93 push r29 + 211a: 6c 01 movw r12, r24 + 211c: 7b 01 movw r14, r22 + 211e: b9 01 movw r22, r18 + 2120: 24 17 cp r18, r20 + 2122: 35 07 cpc r19, r21 + 2124: 10 f4 brcc .+4 ; 0x212a <_ZNK6String9substringEjj+0x1e> + 2126: ba 01 movw r22, r20 + 2128: a9 01 movw r20, r18 + 212a: d7 01 movw r26, r14 + 212c: 14 96 adiw r26, 0x04 ; 4 + 212e: 8d 91 ld r24, X+ + 2130: 9c 91 ld r25, X + 2132: 15 97 sbiw r26, 0x05 ; 5 + 2134: eb 01 movw r28, r22 + 2136: 86 17 cp r24, r22 + 2138: 97 07 cpc r25, r23 + 213a: 08 f4 brcc .+2 ; 0x213e <_ZNK6String9substringEjj+0x32> + 213c: ec 01 movw r28, r24 + 213e: d7 01 movw r26, r14 + 2140: ed 91 ld r30, X+ + 2142: fc 91 ld r31, X + 2144: 11 97 sbiw r26, 0x01 ; 1 + 2146: ec 0f add r30, r28 + 2148: fd 1f adc r31, r29 + 214a: 10 81 ld r17, Z + 214c: 10 82 st Z, r1 + 214e: 6d 91 ld r22, X+ + 2150: 7c 91 ld r23, X + 2152: 64 0f add r22, r20 + 2154: 75 1f adc r23, r21 + 2156: c6 01 movw r24, r12 + 2158: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 215c: d7 01 movw r26, r14 + 215e: ed 91 ld r30, X+ + 2160: fc 91 ld r31, X + 2162: ec 0f add r30, r28 + 2164: fd 1f adc r31, r29 + 2166: 10 83 st Z, r17 + 2168: c6 01 movw r24, r12 + 216a: df 91 pop r29 + 216c: cf 91 pop r28 + 216e: 1f 91 pop r17 + 2170: ff 90 pop r15 + 2172: ef 90 pop r14 + 2174: df 90 pop r13 + 2176: cf 90 pop r12 + 2178: 08 95 ret + +0000217a <_ZNK6String9substringEj>: + 217a: 0f 93 push r16 + 217c: 1f 93 push r17 + 217e: 8c 01 movw r16, r24 + 2180: fb 01 movw r30, r22 + 2182: 24 81 ldd r18, Z+4 ; 0x04 + 2184: 35 81 ldd r19, Z+5 ; 0x05 + 2186: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 218a: c8 01 movw r24, r16 + 218c: 1f 91 pop r17 + 218e: 0f 91 pop r16 + 2190: 08 95 ret + +00002192 <_ZNK6String11lastIndexOfERKS_j>: + 2192: 8f 92 push r8 + 2194: 9f 92 push r9 + 2196: af 92 push r10 + 2198: bf 92 push r11 + 219a: cf 92 push r12 + 219c: df 92 push r13 + 219e: ef 92 push r14 + 21a0: ff 92 push r15 + 21a2: 0f 93 push r16 + 21a4: 1f 93 push r17 + 21a6: df 93 push r29 + 21a8: cf 93 push r28 + 21aa: 00 d0 rcall .+0 ; 0x21ac <_ZNK6String11lastIndexOfERKS_j+0x1a> + 21ac: 00 d0 rcall .+0 ; 0x21ae <_ZNK6String11lastIndexOfERKS_j+0x1c> + 21ae: 00 d0 rcall .+0 ; 0x21b0 <_ZNK6String11lastIndexOfERKS_j+0x1e> + 21b0: cd b7 in r28, 0x3d ; 61 + 21b2: de b7 in r29, 0x3e ; 62 + 21b4: 5c 01 movw r10, r24 + 21b6: 6b 01 movw r12, r22 + 21b8: db 01 movw r26, r22 + 21ba: 14 96 adiw r26, 0x04 ; 4 + 21bc: 8d 91 ld r24, X+ + 21be: 9c 91 ld r25, X + 21c0: 15 97 sbiw r26, 0x05 ; 5 + 21c2: 00 97 sbiw r24, 0x00 ; 0 + 21c4: a1 f1 breq .+104 ; 0x222e <_ZNK6String11lastIndexOfERKS_j+0x9c> + 21c6: 01 97 sbiw r24, 0x01 ; 1 + 21c8: 48 17 cp r20, r24 + 21ca: 59 07 cpc r21, r25 + 21cc: 80 f1 brcs .+96 ; 0x222e <_ZNK6String11lastIndexOfERKS_j+0x9c> + 21ce: f5 01 movw r30, r10 + 21d0: 84 81 ldd r24, Z+4 ; 0x04 + 21d2: 95 81 ldd r25, Z+5 ; 0x05 + 21d4: 48 17 cp r20, r24 + 21d6: 59 07 cpc r21, r25 + 21d8: 50 f5 brcc .+84 ; 0x222e <_ZNK6String11lastIndexOfERKS_j+0x9c> + 21da: ed 91 ld r30, X+ + 21dc: fc 91 ld r31, X + 21de: 00 81 ld r16, Z + 21e0: 7a 01 movw r14, r20 + 21e2: 4e 01 movw r8, r28 + 21e4: 08 94 sec + 21e6: 81 1c adc r8, r1 + 21e8: 91 1c adc r9, r1 + 21ea: 1f c0 rjmp .+62 ; 0x222a <_ZNK6String11lastIndexOfERKS_j+0x98> + 21ec: d5 01 movw r26, r10 + 21ee: ed 91 ld r30, X+ + 21f0: fc 91 ld r31, X + 21f2: ee 0d add r30, r14 + 21f4: ff 1d adc r31, r15 + 21f6: 80 81 ld r24, Z + 21f8: 80 17 cp r24, r16 + 21fa: a1 f4 brne .+40 ; 0x2224 <_ZNK6String11lastIndexOfERKS_j+0x92> + 21fc: f6 01 movw r30, r12 + 21fe: 24 81 ldd r18, Z+4 ; 0x04 + 2200: 35 81 ldd r19, Z+5 ; 0x05 + 2202: 2e 0d add r18, r14 + 2204: 3f 1d adc r19, r15 + 2206: c4 01 movw r24, r8 + 2208: b5 01 movw r22, r10 + 220a: a7 01 movw r20, r14 + 220c: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 2210: c4 01 movw r24, r8 + 2212: b6 01 movw r22, r12 + 2214: 0e 94 cc 0c call 0x1998 ; 0x1998 <_ZNK6String6equalsERKS_> + 2218: 18 2f mov r17, r24 + 221a: c4 01 movw r24, r8 + 221c: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2220: 11 23 and r17, r17 + 2222: 41 f4 brne .+16 ; 0x2234 <_ZNK6String11lastIndexOfERKS_j+0xa2> + 2224: 08 94 sec + 2226: e1 08 sbc r14, r1 + 2228: f1 08 sbc r15, r1 + 222a: f7 fe sbrs r15, 7 + 222c: df cf rjmp .-66 ; 0x21ec <_ZNK6String11lastIndexOfERKS_j+0x5a> + 222e: ee 24 eor r14, r14 + 2230: ea 94 dec r14 + 2232: fe 2c mov r15, r14 + 2234: c7 01 movw r24, r14 + 2236: 26 96 adiw r28, 0x06 ; 6 + 2238: 0f b6 in r0, 0x3f ; 63 + 223a: f8 94 cli + 223c: de bf out 0x3e, r29 ; 62 + 223e: 0f be out 0x3f, r0 ; 63 + 2240: cd bf out 0x3d, r28 ; 61 + 2242: cf 91 pop r28 + 2244: df 91 pop r29 + 2246: 1f 91 pop r17 + 2248: 0f 91 pop r16 + 224a: ff 90 pop r15 + 224c: ef 90 pop r14 + 224e: df 90 pop r13 + 2250: cf 90 pop r12 + 2252: bf 90 pop r11 + 2254: af 90 pop r10 + 2256: 9f 90 pop r9 + 2258: 8f 90 pop r8 + 225a: 08 95 ret + +0000225c <_ZNK6String11lastIndexOfERKS_>: + 225c: fc 01 movw r30, r24 + 225e: db 01 movw r26, r22 + 2260: 44 81 ldd r20, Z+4 ; 0x04 + 2262: 55 81 ldd r21, Z+5 ; 0x05 + 2264: 14 96 adiw r26, 0x04 ; 4 + 2266: 8d 91 ld r24, X+ + 2268: 9c 91 ld r25, X + 226a: 15 97 sbiw r26, 0x05 ; 5 + 226c: 48 1b sub r20, r24 + 226e: 59 0b sbc r21, r25 + 2270: cf 01 movw r24, r30 + 2272: 0e 94 c9 10 call 0x2192 ; 0x2192 <_ZNK6String11lastIndexOfERKS_j> + 2276: 08 95 ret + +00002278 <_ZNK6String4trimEv>: + 2278: af 92 push r10 + 227a: bf 92 push r11 + 227c: cf 92 push r12 + 227e: df 92 push r13 + 2280: ef 92 push r14 + 2282: ff 92 push r15 + 2284: 0f 93 push r16 + 2286: 1f 93 push r17 + 2288: df 93 push r29 + 228a: cf 93 push r28 + 228c: 00 d0 rcall .+0 ; 0x228e <_ZNK6String4trimEv+0x16> + 228e: 00 d0 rcall .+0 ; 0x2290 <_ZNK6String4trimEv+0x18> + 2290: 00 d0 rcall .+0 ; 0x2292 <_ZNK6String4trimEv+0x1a> + 2292: cd b7 in r28, 0x3d ; 61 + 2294: de b7 in r29, 0x3e ; 62 + 2296: 5c 01 movw r10, r24 + 2298: 8b 01 movw r16, r22 + 229a: db 01 movw r26, r22 + 229c: 6d 91 ld r22, X+ + 229e: 7c 91 ld r23, X + 22a0: 61 15 cp r22, r1 + 22a2: 71 05 cpc r23, r1 + 22a4: 21 f4 brne .+8 ; 0x22ae <_ZNK6String4trimEv+0x36> + 22a6: b8 01 movw r22, r16 + 22a8: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 22ac: 42 c0 rjmp .+132 ; 0x2332 <_ZNK6String4trimEv+0xba> + 22ae: ce 01 movw r24, r28 + 22b0: 01 96 adiw r24, 0x01 ; 1 + 22b2: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 22b6: f8 01 movw r30, r16 + 22b8: e4 80 ldd r14, Z+4 ; 0x04 + 22ba: f5 80 ldd r15, Z+5 ; 0x05 + 22bc: cc 24 eor r12, r12 + 22be: dd 24 eor r13, r13 + 22c0: 10 c0 rjmp .+32 ; 0x22e2 <_ZNK6String4trimEv+0x6a> + 22c2: d8 01 movw r26, r16 + 22c4: ed 91 ld r30, X+ + 22c6: fc 91 ld r31, X + 22c8: ec 0d add r30, r12 + 22ca: fd 1d adc r31, r13 + 22cc: 80 81 ld r24, Z + 22ce: 99 27 eor r25, r25 + 22d0: 87 fd sbrc r24, 7 + 22d2: 90 95 com r25 + 22d4: 0e 94 e7 20 call 0x41ce ; 0x41ce <isspace> + 22d8: 89 2b or r24, r25 + 22da: 31 f0 breq .+12 ; 0x22e8 <_ZNK6String4trimEv+0x70> + 22dc: 08 94 sec + 22de: c1 1c adc r12, r1 + 22e0: d1 1c adc r13, r1 + 22e2: ce 14 cp r12, r14 + 22e4: df 04 cpc r13, r15 + 22e6: 68 f3 brcs .-38 ; 0x22c2 <_ZNK6String4trimEv+0x4a> + 22e8: ed 80 ldd r14, Y+5 ; 0x05 + 22ea: fe 80 ldd r15, Y+6 ; 0x06 + 22ec: 0d c0 rjmp .+26 ; 0x2308 <_ZNK6String4trimEv+0x90> + 22ee: d8 01 movw r26, r16 + 22f0: ed 91 ld r30, X+ + 22f2: fc 91 ld r31, X + 22f4: ee 0d add r30, r14 + 22f6: ff 1d adc r31, r15 + 22f8: 80 81 ld r24, Z + 22fa: 99 27 eor r25, r25 + 22fc: 87 fd sbrc r24, 7 + 22fe: 90 95 com r25 + 2300: 0e 94 e7 20 call 0x41ce ; 0x41ce <isspace> + 2304: 89 2b or r24, r25 + 2306: 31 f0 breq .+12 ; 0x2314 <_ZNK6String4trimEv+0x9c> + 2308: 08 94 sec + 230a: e1 08 sbc r14, r1 + 230c: f1 08 sbc r15, r1 + 230e: ce 14 cp r12, r14 + 2310: df 04 cpc r13, r15 + 2312: 68 f3 brcs .-38 ; 0x22ee <_ZNK6String4trimEv+0x76> + 2314: 08 94 sec + 2316: e1 1c adc r14, r1 + 2318: f1 1c adc r15, r1 + 231a: c5 01 movw r24, r10 + 231c: 8e 01 movw r16, r28 + 231e: 0f 5f subi r16, 0xFF ; 255 + 2320: 1f 4f sbci r17, 0xFF ; 255 + 2322: b8 01 movw r22, r16 + 2324: a6 01 movw r20, r12 + 2326: 97 01 movw r18, r14 + 2328: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 232c: c8 01 movw r24, r16 + 232e: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2332: c5 01 movw r24, r10 + 2334: 26 96 adiw r28, 0x06 ; 6 + 2336: 0f b6 in r0, 0x3f ; 63 + 2338: f8 94 cli + 233a: de bf out 0x3e, r29 ; 62 + 233c: 0f be out 0x3f, r0 ; 63 + 233e: cd bf out 0x3d, r28 ; 61 + 2340: cf 91 pop r28 + 2342: df 91 pop r29 + 2344: 1f 91 pop r17 + 2346: 0f 91 pop r16 + 2348: ff 90 pop r15 + 234a: ef 90 pop r14 + 234c: df 90 pop r13 + 234e: cf 90 pop r12 + 2350: bf 90 pop r11 + 2352: af 90 pop r10 + 2354: 08 95 ret + +00002356 <_ZN6String7replaceERKS_S1_>: + 2356: 2f 92 push r2 + 2358: 3f 92 push r3 + 235a: 4f 92 push r4 + 235c: 5f 92 push r5 + 235e: 6f 92 push r6 + 2360: 7f 92 push r7 + 2362: 8f 92 push r8 + 2364: 9f 92 push r9 + 2366: af 92 push r10 + 2368: bf 92 push r11 + 236a: cf 92 push r12 + 236c: df 92 push r13 + 236e: ef 92 push r14 + 2370: ff 92 push r15 + 2372: 0f 93 push r16 + 2374: 1f 93 push r17 + 2376: df 93 push r29 + 2378: cf 93 push r28 + 237a: cd b7 in r28, 0x3d ; 61 + 237c: de b7 in r29, 0x3e ; 62 + 237e: 68 97 sbiw r28, 0x18 ; 24 + 2380: 0f b6 in r0, 0x3f ; 63 + 2382: f8 94 cli + 2384: de bf out 0x3e, r29 ; 62 + 2386: 0f be out 0x3f, r0 ; 63 + 2388: cd bf out 0x3d, r28 ; 61 + 238a: 3c 01 movw r6, r24 + 238c: fb 01 movw r30, r22 + 238e: 2a 01 movw r4, r20 + 2390: 19 01 movw r2, r18 + 2392: 60 81 ld r22, Z + 2394: 71 81 ldd r23, Z+1 ; 0x01 + 2396: 61 15 cp r22, r1 + 2398: 71 05 cpc r23, r1 + 239a: 21 f4 brne .+8 ; 0x23a4 <_ZN6String7replaceERKS_S1_+0x4e> + 239c: bf 01 movw r22, r30 + 239e: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 23a2: 5a c0 rjmp .+180 ; 0x2458 <_ZN6String7replaceERKS_S1_+0x102> + 23a4: 7e 01 movw r14, r28 + 23a6: 08 94 sec + 23a8: e1 1c adc r14, r1 + 23aa: f1 1c adc r15, r1 + 23ac: c7 01 movw r24, r14 + 23ae: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 23b2: 8e 01 movw r16, r28 + 23b4: 09 5f subi r16, 0xF9 ; 249 + 23b6: 1f 4f sbci r17, 0xFF ; 255 + 23b8: c8 01 movw r24, r16 + 23ba: 66 ea ldi r22, 0xA6 ; 166 + 23bc: 71 e0 ldi r23, 0x01 ; 1 + 23be: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 23c2: d0 2e mov r13, r16 + 23c4: c1 2e mov r12, r17 + 23c6: 3d e0 ldi r19, 0x0D ; 13 + 23c8: 83 2e mov r8, r19 + 23ca: 91 2c mov r9, r1 + 23cc: 8c 0e add r8, r28 + 23ce: 9d 1e adc r9, r29 + 23d0: 23 e1 ldi r18, 0x13 ; 19 + 23d2: a2 2e mov r10, r18 + 23d4: b1 2c mov r11, r1 + 23d6: ac 0e add r10, r28 + 23d8: bd 1e adc r11, r29 + 23da: 24 c0 rjmp .+72 ; 0x2424 <_ZN6String7replaceERKS_S1_+0xce> + 23dc: c4 01 movw r24, r8 + 23de: b7 01 movw r22, r14 + 23e0: 40 e0 ldi r20, 0x00 ; 0 + 23e2: 50 e0 ldi r21, 0x00 ; 0 + 23e4: 98 01 movw r18, r16 + 23e6: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 23ea: 8d 2d mov r24, r13 + 23ec: 9c 2d mov r25, r12 + 23ee: b4 01 movw r22, r8 + 23f0: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 23f4: c4 01 movw r24, r8 + 23f6: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 23fa: 8d 2d mov r24, r13 + 23fc: 9c 2d mov r25, r12 + 23fe: b1 01 movw r22, r2 + 2400: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 2404: f2 01 movw r30, r4 + 2406: 44 81 ldd r20, Z+4 ; 0x04 + 2408: 55 81 ldd r21, Z+5 ; 0x05 + 240a: 40 0f add r20, r16 + 240c: 51 1f adc r21, r17 + 240e: c5 01 movw r24, r10 + 2410: b7 01 movw r22, r14 + 2412: 0e 94 bd 10 call 0x217a ; 0x217a <_ZNK6String9substringEj> + 2416: c7 01 movw r24, r14 + 2418: b5 01 movw r22, r10 + 241a: 0e 94 d4 0d call 0x1ba8 ; 0x1ba8 <_ZN6StringaSERKS_> + 241e: c5 01 movw r24, r10 + 2420: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2424: c7 01 movw r24, r14 + 2426: b2 01 movw r22, r4 + 2428: 0e 94 a4 0c call 0x1948 ; 0x1948 <_ZNK6String7indexOfERKS_> + 242c: 8c 01 movw r16, r24 + 242e: ff ef ldi r31, 0xFF ; 255 + 2430: 8f 3f cpi r24, 0xFF ; 255 + 2432: 9f 07 cpc r25, r31 + 2434: 99 f6 brne .-90 ; 0x23dc <_ZN6String7replaceERKS_S1_+0x86> + 2436: 8d 2d mov r24, r13 + 2438: 9c 2d mov r25, r12 + 243a: b7 01 movw r22, r14 + 243c: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 2440: c3 01 movw r24, r6 + 2442: 6d 2d mov r22, r13 + 2444: 7c 2d mov r23, r12 + 2446: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 244a: 8d 2d mov r24, r13 + 244c: 9c 2d mov r25, r12 + 244e: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2452: c7 01 movw r24, r14 + 2454: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2458: c3 01 movw r24, r6 + 245a: 68 96 adiw r28, 0x18 ; 24 + 245c: 0f b6 in r0, 0x3f ; 63 + 245e: f8 94 cli + 2460: de bf out 0x3e, r29 ; 62 + 2462: 0f be out 0x3f, r0 ; 63 + 2464: cd bf out 0x3d, r28 ; 61 + 2466: cf 91 pop r28 + 2468: df 91 pop r29 + 246a: 1f 91 pop r17 + 246c: 0f 91 pop r16 + 246e: ff 90 pop r15 + 2470: ef 90 pop r14 + 2472: df 90 pop r13 + 2474: cf 90 pop r12 + 2476: bf 90 pop r11 + 2478: af 90 pop r10 + 247a: 9f 90 pop r9 + 247c: 8f 90 pop r8 + 247e: 7f 90 pop r7 + 2480: 6f 90 pop r6 + 2482: 5f 90 pop r5 + 2484: 4f 90 pop r4 + 2486: 3f 90 pop r3 + 2488: 2f 90 pop r2 + 248a: 08 95 ret + +0000248c <_ZN6String7replaceEcc>: + 248c: df 92 push r13 + 248e: ef 92 push r14 + 2490: ff 92 push r15 + 2492: 0f 93 push r16 + 2494: 1f 93 push r17 + 2496: df 93 push r29 + 2498: cf 93 push r28 + 249a: 00 d0 rcall .+0 ; 0x249c <_ZN6String7replaceEcc+0x10> + 249c: 00 d0 rcall .+0 ; 0x249e <_ZN6String7replaceEcc+0x12> + 249e: 00 d0 rcall .+0 ; 0x24a0 <_ZN6String7replaceEcc+0x14> + 24a0: cd b7 in r28, 0x3d ; 61 + 24a2: de b7 in r29, 0x3e ; 62 + 24a4: 7c 01 movw r14, r24 + 24a6: fb 01 movw r30, r22 + 24a8: 14 2f mov r17, r20 + 24aa: d2 2e mov r13, r18 + 24ac: 60 81 ld r22, Z + 24ae: 71 81 ldd r23, Z+1 ; 0x01 + 24b0: 61 15 cp r22, r1 + 24b2: 71 05 cpc r23, r1 + 24b4: 21 f4 brne .+8 ; 0x24be <_ZN6String7replaceEcc+0x32> + 24b6: bf 01 movw r22, r30 + 24b8: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 24bc: 1c c0 rjmp .+56 ; 0x24f6 <_ZN6String7replaceEcc+0x6a> + 24be: ce 01 movw r24, r28 + 24c0: 01 96 adiw r24, 0x01 ; 1 + 24c2: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 24c6: 89 81 ldd r24, Y+1 ; 0x01 + 24c8: 9a 81 ldd r25, Y+2 ; 0x02 + 24ca: 01 2f mov r16, r17 + 24cc: 11 27 eor r17, r17 + 24ce: 07 fd sbrc r16, 7 + 24d0: 10 95 com r17 + 24d2: 01 c0 rjmp .+2 ; 0x24d6 <_ZN6String7replaceEcc+0x4a> + 24d4: d0 82 st Z, r13 + 24d6: b8 01 movw r22, r16 + 24d8: 0e 94 13 21 call 0x4226 ; 0x4226 <strchr> + 24dc: fc 01 movw r30, r24 + 24de: 00 97 sbiw r24, 0x00 ; 0 + 24e0: c9 f7 brne .-14 ; 0x24d4 <_ZN6String7replaceEcc+0x48> + 24e2: c7 01 movw r24, r14 + 24e4: 8e 01 movw r16, r28 + 24e6: 0f 5f subi r16, 0xFF ; 255 + 24e8: 1f 4f sbci r17, 0xFF ; 255 + 24ea: b8 01 movw r22, r16 + 24ec: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 24f0: c8 01 movw r24, r16 + 24f2: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 24f6: c7 01 movw r24, r14 + 24f8: 26 96 adiw r28, 0x06 ; 6 + 24fa: 0f b6 in r0, 0x3f ; 63 + 24fc: f8 94 cli + 24fe: de bf out 0x3e, r29 ; 62 + 2500: 0f be out 0x3f, r0 ; 63 + 2502: cd bf out 0x3d, r28 ; 61 + 2504: cf 91 pop r28 + 2506: df 91 pop r29 + 2508: 1f 91 pop r17 + 250a: 0f 91 pop r16 + 250c: ff 90 pop r15 + 250e: ef 90 pop r14 + 2510: df 90 pop r13 + 2512: 08 95 ret + +00002514 <_ZN6StringC2EPKc>: + 2514: 0f 93 push r16 + 2516: 1f 93 push r17 + 2518: cf 93 push r28 + 251a: df 93 push r29 + 251c: 8c 01 movw r16, r24 + 251e: eb 01 movw r28, r22 + 2520: 61 15 cp r22, r1 + 2522: 71 05 cpc r23, r1 + 2524: 11 f4 brne .+4 ; 0x252a <_ZN6StringC2EPKc+0x16> + 2526: c6 ea ldi r28, 0xA6 ; 166 + 2528: d1 e0 ldi r29, 0x01 ; 1 + 252a: fe 01 movw r30, r28 + 252c: 01 90 ld r0, Z+ + 252e: 00 20 and r0, r0 + 2530: e9 f7 brne .-6 ; 0x252c <_ZN6StringC2EPKc+0x18> + 2532: 31 97 sbiw r30, 0x01 ; 1 + 2534: ec 1b sub r30, r28 + 2536: fd 0b sbc r31, r29 + 2538: d8 01 movw r26, r16 + 253a: 15 96 adiw r26, 0x05 ; 5 + 253c: fc 93 st X, r31 + 253e: ee 93 st -X, r30 + 2540: 14 97 sbiw r26, 0x04 ; 4 + 2542: c8 01 movw r24, r16 + 2544: bf 01 movw r22, r30 + 2546: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 254a: f8 01 movw r30, r16 + 254c: 80 81 ld r24, Z + 254e: 91 81 ldd r25, Z+1 ; 0x01 + 2550: 00 97 sbiw r24, 0x00 ; 0 + 2552: 19 f0 breq .+6 ; 0x255a <_ZN6StringC2EPKc+0x46> + 2554: be 01 movw r22, r28 + 2556: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 255a: df 91 pop r29 + 255c: cf 91 pop r28 + 255e: 1f 91 pop r17 + 2560: 0f 91 pop r16 + 2562: 08 95 ret + +00002564 <_ZN6StringC1Eli>: + 2564: ef 92 push r14 + 2566: ff 92 push r15 + 2568: 0f 93 push r16 + 256a: 1f 93 push r17 + 256c: df 93 push r29 + 256e: cf 93 push r28 + 2570: cd b7 in r28, 0x3d ; 61 + 2572: de b7 in r29, 0x3e ; 62 + 2574: a1 97 sbiw r28, 0x21 ; 33 + 2576: 0f b6 in r0, 0x3f ; 63 + 2578: f8 94 cli + 257a: de bf out 0x3e, r29 ; 62 + 257c: 0f be out 0x3f, r0 ; 63 + 257e: cd bf out 0x3d, r28 ; 61 + 2580: 8c 01 movw r16, r24 + 2582: cb 01 movw r24, r22 + 2584: ba 01 movw r22, r20 + 2586: 7e 01 movw r14, r28 + 2588: 08 94 sec + 258a: e1 1c adc r14, r1 + 258c: f1 1c adc r15, r1 + 258e: a7 01 movw r20, r14 + 2590: 0e 94 91 21 call 0x4322 ; 0x4322 <ltoa> + 2594: f7 01 movw r30, r14 + 2596: 01 90 ld r0, Z+ + 2598: 00 20 and r0, r0 + 259a: e9 f7 brne .-6 ; 0x2596 <_ZN6StringC1Eli+0x32> + 259c: 31 97 sbiw r30, 0x01 ; 1 + 259e: ee 19 sub r30, r14 + 25a0: ff 09 sbc r31, r15 + 25a2: d8 01 movw r26, r16 + 25a4: 15 96 adiw r26, 0x05 ; 5 + 25a6: fc 93 st X, r31 + 25a8: ee 93 st -X, r30 + 25aa: 14 97 sbiw r26, 0x04 ; 4 + 25ac: c8 01 movw r24, r16 + 25ae: bf 01 movw r22, r30 + 25b0: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 25b4: f8 01 movw r30, r16 + 25b6: 80 81 ld r24, Z + 25b8: 91 81 ldd r25, Z+1 ; 0x01 + 25ba: 00 97 sbiw r24, 0x00 ; 0 + 25bc: 19 f0 breq .+6 ; 0x25c4 <_ZN6StringC1Eli+0x60> + 25be: b7 01 movw r22, r14 + 25c0: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 25c4: a1 96 adiw r28, 0x21 ; 33 + 25c6: 0f b6 in r0, 0x3f ; 63 + 25c8: f8 94 cli + 25ca: de bf out 0x3e, r29 ; 62 + 25cc: 0f be out 0x3f, r0 ; 63 + 25ce: cd bf out 0x3d, r28 ; 61 + 25d0: cf 91 pop r28 + 25d2: df 91 pop r29 + 25d4: 1f 91 pop r17 + 25d6: 0f 91 pop r16 + 25d8: ff 90 pop r15 + 25da: ef 90 pop r14 + 25dc: 08 95 ret + +000025de <_ZN6StringC2Eli>: + 25de: ef 92 push r14 + 25e0: ff 92 push r15 + 25e2: 0f 93 push r16 + 25e4: 1f 93 push r17 + 25e6: df 93 push r29 + 25e8: cf 93 push r28 + 25ea: cd b7 in r28, 0x3d ; 61 + 25ec: de b7 in r29, 0x3e ; 62 + 25ee: a1 97 sbiw r28, 0x21 ; 33 + 25f0: 0f b6 in r0, 0x3f ; 63 + 25f2: f8 94 cli + 25f4: de bf out 0x3e, r29 ; 62 + 25f6: 0f be out 0x3f, r0 ; 63 + 25f8: cd bf out 0x3d, r28 ; 61 + 25fa: 8c 01 movw r16, r24 + 25fc: cb 01 movw r24, r22 + 25fe: ba 01 movw r22, r20 + 2600: 7e 01 movw r14, r28 + 2602: 08 94 sec + 2604: e1 1c adc r14, r1 + 2606: f1 1c adc r15, r1 + 2608: a7 01 movw r20, r14 + 260a: 0e 94 91 21 call 0x4322 ; 0x4322 <ltoa> + 260e: f7 01 movw r30, r14 + 2610: 01 90 ld r0, Z+ + 2612: 00 20 and r0, r0 + 2614: e9 f7 brne .-6 ; 0x2610 <_ZN6StringC2Eli+0x32> + 2616: 31 97 sbiw r30, 0x01 ; 1 + 2618: ee 19 sub r30, r14 + 261a: ff 09 sbc r31, r15 + 261c: d8 01 movw r26, r16 + 261e: 15 96 adiw r26, 0x05 ; 5 + 2620: fc 93 st X, r31 + 2622: ee 93 st -X, r30 + 2624: 14 97 sbiw r26, 0x04 ; 4 + 2626: c8 01 movw r24, r16 + 2628: bf 01 movw r22, r30 + 262a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 262e: f8 01 movw r30, r16 + 2630: 80 81 ld r24, Z + 2632: 91 81 ldd r25, Z+1 ; 0x01 + 2634: 00 97 sbiw r24, 0x00 ; 0 + 2636: 19 f0 breq .+6 ; 0x263e <_ZN6StringC2Eli+0x60> + 2638: b7 01 movw r22, r14 + 263a: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 263e: a1 96 adiw r28, 0x21 ; 33 + 2640: 0f b6 in r0, 0x3f ; 63 + 2642: f8 94 cli + 2644: de bf out 0x3e, r29 ; 62 + 2646: 0f be out 0x3f, r0 ; 63 + 2648: cd bf out 0x3d, r28 ; 61 + 264a: cf 91 pop r28 + 264c: df 91 pop r29 + 264e: 1f 91 pop r17 + 2650: 0f 91 pop r16 + 2652: ff 90 pop r15 + 2654: ef 90 pop r14 + 2656: 08 95 ret + +00002658 <_ZN6StringC1Eii>: + 2658: ef 92 push r14 + 265a: ff 92 push r15 + 265c: 0f 93 push r16 + 265e: 1f 93 push r17 + 2660: df 93 push r29 + 2662: cf 93 push r28 + 2664: cd b7 in r28, 0x3d ; 61 + 2666: de b7 in r29, 0x3e ; 62 + 2668: a1 97 sbiw r28, 0x21 ; 33 + 266a: 0f b6 in r0, 0x3f ; 63 + 266c: f8 94 cli + 266e: de bf out 0x3e, r29 ; 62 + 2670: 0f be out 0x3f, r0 ; 63 + 2672: cd bf out 0x3d, r28 ; 61 + 2674: 8c 01 movw r16, r24 + 2676: cb 01 movw r24, r22 + 2678: 7e 01 movw r14, r28 + 267a: 08 94 sec + 267c: e1 1c adc r14, r1 + 267e: f1 1c adc r15, r1 + 2680: b7 01 movw r22, r14 + 2682: 0e 94 70 21 call 0x42e0 ; 0x42e0 <itoa> + 2686: f7 01 movw r30, r14 + 2688: 01 90 ld r0, Z+ + 268a: 00 20 and r0, r0 + 268c: e9 f7 brne .-6 ; 0x2688 <_ZN6StringC1Eii+0x30> + 268e: 31 97 sbiw r30, 0x01 ; 1 + 2690: ee 19 sub r30, r14 + 2692: ff 09 sbc r31, r15 + 2694: d8 01 movw r26, r16 + 2696: 15 96 adiw r26, 0x05 ; 5 + 2698: fc 93 st X, r31 + 269a: ee 93 st -X, r30 + 269c: 14 97 sbiw r26, 0x04 ; 4 + 269e: c8 01 movw r24, r16 + 26a0: bf 01 movw r22, r30 + 26a2: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 26a6: f8 01 movw r30, r16 + 26a8: 80 81 ld r24, Z + 26aa: 91 81 ldd r25, Z+1 ; 0x01 + 26ac: 00 97 sbiw r24, 0x00 ; 0 + 26ae: 19 f0 breq .+6 ; 0x26b6 <_ZN6StringC1Eii+0x5e> + 26b0: b7 01 movw r22, r14 + 26b2: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 26b6: a1 96 adiw r28, 0x21 ; 33 + 26b8: 0f b6 in r0, 0x3f ; 63 + 26ba: f8 94 cli + 26bc: de bf out 0x3e, r29 ; 62 + 26be: 0f be out 0x3f, r0 ; 63 + 26c0: cd bf out 0x3d, r28 ; 61 + 26c2: cf 91 pop r28 + 26c4: df 91 pop r29 + 26c6: 1f 91 pop r17 + 26c8: 0f 91 pop r16 + 26ca: ff 90 pop r15 + 26cc: ef 90 pop r14 + 26ce: 08 95 ret + +000026d0 <_ZN6StringC2Eii>: + 26d0: ef 92 push r14 + 26d2: ff 92 push r15 + 26d4: 0f 93 push r16 + 26d6: 1f 93 push r17 + 26d8: df 93 push r29 + 26da: cf 93 push r28 + 26dc: cd b7 in r28, 0x3d ; 61 + 26de: de b7 in r29, 0x3e ; 62 + 26e0: a1 97 sbiw r28, 0x21 ; 33 + 26e2: 0f b6 in r0, 0x3f ; 63 + 26e4: f8 94 cli + 26e6: de bf out 0x3e, r29 ; 62 + 26e8: 0f be out 0x3f, r0 ; 63 + 26ea: cd bf out 0x3d, r28 ; 61 + 26ec: 8c 01 movw r16, r24 + 26ee: cb 01 movw r24, r22 + 26f0: 7e 01 movw r14, r28 + 26f2: 08 94 sec + 26f4: e1 1c adc r14, r1 + 26f6: f1 1c adc r15, r1 + 26f8: b7 01 movw r22, r14 + 26fa: 0e 94 70 21 call 0x42e0 ; 0x42e0 <itoa> + 26fe: f7 01 movw r30, r14 + 2700: 01 90 ld r0, Z+ + 2702: 00 20 and r0, r0 + 2704: e9 f7 brne .-6 ; 0x2700 <_ZN6StringC2Eii+0x30> + 2706: 31 97 sbiw r30, 0x01 ; 1 + 2708: ee 19 sub r30, r14 + 270a: ff 09 sbc r31, r15 + 270c: d8 01 movw r26, r16 + 270e: 15 96 adiw r26, 0x05 ; 5 + 2710: fc 93 st X, r31 + 2712: ee 93 st -X, r30 + 2714: 14 97 sbiw r26, 0x04 ; 4 + 2716: c8 01 movw r24, r16 + 2718: bf 01 movw r22, r30 + 271a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 271e: f8 01 movw r30, r16 + 2720: 80 81 ld r24, Z + 2722: 91 81 ldd r25, Z+1 ; 0x01 + 2724: 00 97 sbiw r24, 0x00 ; 0 + 2726: 19 f0 breq .+6 ; 0x272e <_ZN6StringC2Eii+0x5e> + 2728: b7 01 movw r22, r14 + 272a: 0e 94 27 21 call 0x424e ; 0x424e <strcpy> + 272e: a1 96 adiw r28, 0x21 ; 33 + 2730: 0f b6 in r0, 0x3f ; 63 + 2732: f8 94 cli + 2734: de bf out 0x3e, r29 ; 62 + 2736: 0f be out 0x3f, r0 ; 63 + 2738: cd bf out 0x3d, r28 ; 61 + 273a: cf 91 pop r28 + 273c: df 91 pop r29 + 273e: 1f 91 pop r17 + 2740: 0f 91 pop r16 + 2742: ff 90 pop r15 + 2744: ef 90 pop r14 + 2746: 08 95 ret + +00002748 <__vector_16>: + 2748: 1f 92 push r1 + 274a: 0f 92 push r0 + 274c: 0f b6 in r0, 0x3f ; 63 + 274e: 0f 92 push r0 + 2750: 11 24 eor r1, r1 + 2752: 2f 93 push r18 + 2754: 3f 93 push r19 + 2756: 4f 93 push r20 + 2758: 5f 93 push r21 + 275a: 6f 93 push r22 + 275c: 7f 93 push r23 + 275e: 8f 93 push r24 + 2760: 9f 93 push r25 + 2762: af 93 push r26 + 2764: bf 93 push r27 + 2766: 20 91 89 03 lds r18, 0x0389 + 276a: 30 91 8a 03 lds r19, 0x038A + 276e: 40 91 8b 03 lds r20, 0x038B + 2772: 50 91 8c 03 lds r21, 0x038C + 2776: 70 91 8d 03 lds r23, 0x038D + 277a: da 01 movw r26, r20 + 277c: c9 01 movw r24, r18 + 277e: 02 96 adiw r24, 0x02 ; 2 + 2780: a1 1d adc r26, r1 + 2782: b1 1d adc r27, r1 + 2784: 67 2f mov r22, r23 + 2786: 6a 5f subi r22, 0xFA ; 250 + 2788: 6d 37 cpi r22, 0x7D ; 125 + 278a: 30 f0 brcs .+12 ; 0x2798 <__vector_16+0x50> + 278c: 6d 57 subi r22, 0x7D ; 125 + 278e: da 01 movw r26, r20 + 2790: c9 01 movw r24, r18 + 2792: 03 96 adiw r24, 0x03 ; 3 + 2794: a1 1d adc r26, r1 + 2796: b1 1d adc r27, r1 + 2798: 60 93 8d 03 sts 0x038D, r22 + 279c: 80 93 89 03 sts 0x0389, r24 + 27a0: 90 93 8a 03 sts 0x038A, r25 + 27a4: a0 93 8b 03 sts 0x038B, r26 + 27a8: b0 93 8c 03 sts 0x038C, r27 + 27ac: 80 91 85 03 lds r24, 0x0385 + 27b0: 90 91 86 03 lds r25, 0x0386 + 27b4: a0 91 87 03 lds r26, 0x0387 + 27b8: b0 91 88 03 lds r27, 0x0388 + 27bc: 01 96 adiw r24, 0x01 ; 1 + 27be: a1 1d adc r26, r1 + 27c0: b1 1d adc r27, r1 + 27c2: 80 93 85 03 sts 0x0385, r24 + 27c6: 90 93 86 03 sts 0x0386, r25 + 27ca: a0 93 87 03 sts 0x0387, r26 + 27ce: b0 93 88 03 sts 0x0388, r27 + 27d2: bf 91 pop r27 + 27d4: af 91 pop r26 + 27d6: 9f 91 pop r25 + 27d8: 8f 91 pop r24 + 27da: 7f 91 pop r23 + 27dc: 6f 91 pop r22 + 27de: 5f 91 pop r21 + 27e0: 4f 91 pop r20 + 27e2: 3f 91 pop r19 + 27e4: 2f 91 pop r18 + 27e6: 0f 90 pop r0 + 27e8: 0f be out 0x3f, r0 ; 63 + 27ea: 0f 90 pop r0 + 27ec: 1f 90 pop r1 + 27ee: 18 95 reti + +000027f0 <millis>: + 27f0: 8f b7 in r24, 0x3f ; 63 + 27f2: f8 94 cli + 27f4: 20 91 89 03 lds r18, 0x0389 + 27f8: 30 91 8a 03 lds r19, 0x038A + 27fc: 40 91 8b 03 lds r20, 0x038B + 2800: 50 91 8c 03 lds r21, 0x038C + 2804: 8f bf out 0x3f, r24 ; 63 + 2806: b9 01 movw r22, r18 + 2808: ca 01 movw r24, r20 + 280a: 08 95 ret + +0000280c <micros>: + 280c: 9f b7 in r25, 0x3f ; 63 + 280e: f8 94 cli + 2810: 20 91 85 03 lds r18, 0x0385 + 2814: 30 91 86 03 lds r19, 0x0386 + 2818: 40 91 87 03 lds r20, 0x0387 + 281c: 50 91 88 03 lds r21, 0x0388 + 2820: 86 b5 in r24, 0x26 ; 38 + 2822: a8 9b sbis 0x15, 0 ; 21 + 2824: 06 c0 rjmp .+12 ; 0x2832 <micros+0x26> + 2826: 8f 3f cpi r24, 0xFF ; 255 + 2828: 21 f0 breq .+8 ; 0x2832 <micros+0x26> + 282a: 2f 5f subi r18, 0xFF ; 255 + 282c: 3f 4f sbci r19, 0xFF ; 255 + 282e: 4f 4f sbci r20, 0xFF ; 255 + 2830: 5f 4f sbci r21, 0xFF ; 255 + 2832: 9f bf out 0x3f, r25 ; 63 + 2834: 54 2f mov r21, r20 + 2836: 43 2f mov r20, r19 + 2838: 32 2f mov r19, r18 + 283a: 22 27 eor r18, r18 + 283c: 28 0f add r18, r24 + 283e: 31 1d adc r19, r1 + 2840: 41 1d adc r20, r1 + 2842: 51 1d adc r21, r1 + 2844: 83 e0 ldi r24, 0x03 ; 3 + 2846: 22 0f add r18, r18 + 2848: 33 1f adc r19, r19 + 284a: 44 1f adc r20, r20 + 284c: 55 1f adc r21, r21 + 284e: 8a 95 dec r24 + 2850: d1 f7 brne .-12 ; 0x2846 <micros+0x3a> + 2852: b9 01 movw r22, r18 + 2854: ca 01 movw r24, r20 + 2856: 08 95 ret + +00002858 <delay>: + 2858: ef 92 push r14 + 285a: ff 92 push r15 + 285c: 0f 93 push r16 + 285e: 1f 93 push r17 + 2860: cf 93 push r28 + 2862: df 93 push r29 + 2864: 7b 01 movw r14, r22 + 2866: 8c 01 movw r16, r24 + 2868: 0e 94 06 14 call 0x280c ; 0x280c <micros> + 286c: eb 01 movw r28, r22 + 286e: 0e c0 rjmp .+28 ; 0x288c <delay+0x34> + 2870: 0e 94 06 14 call 0x280c ; 0x280c <micros> + 2874: 6c 1b sub r22, r28 + 2876: 7d 0b sbc r23, r29 + 2878: 68 5e subi r22, 0xE8 ; 232 + 287a: 73 40 sbci r23, 0x03 ; 3 + 287c: c8 f3 brcs .-14 ; 0x2870 <delay+0x18> + 287e: 08 94 sec + 2880: e1 08 sbc r14, r1 + 2882: f1 08 sbc r15, r1 + 2884: 01 09 sbc r16, r1 + 2886: 11 09 sbc r17, r1 + 2888: c8 51 subi r28, 0x18 ; 24 + 288a: dc 4f sbci r29, 0xFC ; 252 + 288c: e1 14 cp r14, r1 + 288e: f1 04 cpc r15, r1 + 2890: 01 05 cpc r16, r1 + 2892: 11 05 cpc r17, r1 + 2894: 69 f7 brne .-38 ; 0x2870 <delay+0x18> + 2896: df 91 pop r29 + 2898: cf 91 pop r28 + 289a: 1f 91 pop r17 + 289c: 0f 91 pop r16 + 289e: ff 90 pop r15 + 28a0: ef 90 pop r14 + 28a2: 08 95 ret + +000028a4 <delayMicroseconds>: + 28a4: 01 97 sbiw r24, 0x01 ; 1 + 28a6: 39 f0 breq .+14 ; 0x28b6 <delayMicroseconds+0x12> + 28a8: 01 97 sbiw r24, 0x01 ; 1 + 28aa: 29 f0 breq .+10 ; 0x28b6 <delayMicroseconds+0x12> + 28ac: 88 0f add r24, r24 + 28ae: 99 1f adc r25, r25 + 28b0: 01 97 sbiw r24, 0x01 ; 1 + 28b2: 01 97 sbiw r24, 0x01 ; 1 + 28b4: f1 f7 brne .-4 ; 0x28b2 <delayMicroseconds+0xe> + 28b6: 08 95 ret + +000028b8 <init>: + 28b8: 78 94 sei + 28ba: 84 b5 in r24, 0x24 ; 36 + 28bc: 82 60 ori r24, 0x02 ; 2 + 28be: 84 bd out 0x24, r24 ; 36 + 28c0: 84 b5 in r24, 0x24 ; 36 + 28c2: 81 60 ori r24, 0x01 ; 1 + 28c4: 84 bd out 0x24, r24 ; 36 + 28c6: 85 b5 in r24, 0x25 ; 37 + 28c8: 82 60 ori r24, 0x02 ; 2 + 28ca: 85 bd out 0x25, r24 ; 37 + 28cc: 85 b5 in r24, 0x25 ; 37 + 28ce: 81 60 ori r24, 0x01 ; 1 + 28d0: 85 bd out 0x25, r24 ; 37 + 28d2: ee e6 ldi r30, 0x6E ; 110 + 28d4: f0 e0 ldi r31, 0x00 ; 0 + 28d6: 80 81 ld r24, Z + 28d8: 81 60 ori r24, 0x01 ; 1 + 28da: 80 83 st Z, r24 + 28dc: e1 e8 ldi r30, 0x81 ; 129 + 28de: f0 e0 ldi r31, 0x00 ; 0 + 28e0: 10 82 st Z, r1 + 28e2: 80 81 ld r24, Z + 28e4: 82 60 ori r24, 0x02 ; 2 + 28e6: 80 83 st Z, r24 + 28e8: 80 81 ld r24, Z + 28ea: 81 60 ori r24, 0x01 ; 1 + 28ec: 80 83 st Z, r24 + 28ee: e0 e8 ldi r30, 0x80 ; 128 + 28f0: f0 e0 ldi r31, 0x00 ; 0 + 28f2: 80 81 ld r24, Z + 28f4: 81 60 ori r24, 0x01 ; 1 + 28f6: 80 83 st Z, r24 + 28f8: e1 eb ldi r30, 0xB1 ; 177 + 28fa: f0 e0 ldi r31, 0x00 ; 0 + 28fc: 80 81 ld r24, Z + 28fe: 84 60 ori r24, 0x04 ; 4 + 2900: 80 83 st Z, r24 + 2902: e0 eb ldi r30, 0xB0 ; 176 + 2904: f0 e0 ldi r31, 0x00 ; 0 + 2906: 80 81 ld r24, Z + 2908: 81 60 ori r24, 0x01 ; 1 + 290a: 80 83 st Z, r24 + 290c: ea e7 ldi r30, 0x7A ; 122 + 290e: f0 e0 ldi r31, 0x00 ; 0 + 2910: 80 81 ld r24, Z + 2912: 84 60 ori r24, 0x04 ; 4 + 2914: 80 83 st Z, r24 + 2916: 80 81 ld r24, Z + 2918: 82 60 ori r24, 0x02 ; 2 + 291a: 80 83 st Z, r24 + 291c: 80 81 ld r24, Z + 291e: 81 60 ori r24, 0x01 ; 1 + 2920: 80 83 st Z, r24 + 2922: 80 81 ld r24, Z + 2924: 80 68 ori r24, 0x80 ; 128 + 2926: 80 83 st Z, r24 + 2928: 10 92 c1 00 sts 0x00C1, r1 + 292c: 08 95 ret + +0000292e <analogReference>: + 292e: 80 93 a7 01 sts 0x01A7, r24 + 2932: 08 95 ret + +00002934 <analogRead>: + 2934: 98 2f mov r25, r24 + 2936: 8e 30 cpi r24, 0x0E ; 14 + 2938: 08 f0 brcs .+2 ; 0x293c <analogRead+0x8> + 293a: 9e 50 subi r25, 0x0E ; 14 + 293c: 97 70 andi r25, 0x07 ; 7 + 293e: 80 91 a7 01 lds r24, 0x01A7 + 2942: 82 95 swap r24 + 2944: 88 0f add r24, r24 + 2946: 88 0f add r24, r24 + 2948: 80 7c andi r24, 0xC0 ; 192 + 294a: 89 2b or r24, r25 + 294c: 80 93 7c 00 sts 0x007C, r24 + 2950: 80 91 7a 00 lds r24, 0x007A + 2954: 80 64 ori r24, 0x40 ; 64 + 2956: 80 93 7a 00 sts 0x007A, r24 + 295a: 80 91 7a 00 lds r24, 0x007A + 295e: 86 fd sbrc r24, 6 + 2960: fc cf rjmp .-8 ; 0x295a <analogRead+0x26> + 2962: 20 91 78 00 lds r18, 0x0078 + 2966: 40 91 79 00 lds r20, 0x0079 + 296a: 94 2f mov r25, r20 + 296c: 80 e0 ldi r24, 0x00 ; 0 + 296e: 30 e0 ldi r19, 0x00 ; 0 + 2970: 28 2b or r18, r24 + 2972: 39 2b or r19, r25 + 2974: c9 01 movw r24, r18 + 2976: 08 95 ret + +00002978 <analogWrite>: + 2978: 1f 93 push r17 + 297a: cf 93 push r28 + 297c: df 93 push r29 + 297e: 18 2f mov r17, r24 + 2980: eb 01 movw r28, r22 + 2982: 61 e0 ldi r22, 0x01 ; 1 + 2984: 0e 94 1c 15 call 0x2a38 ; 0x2a38 <pinMode> + 2988: 20 97 sbiw r28, 0x00 ; 0 + 298a: 09 f4 brne .+2 ; 0x298e <analogWrite+0x16> + 298c: 4a c0 rjmp .+148 ; 0x2a22 <analogWrite+0xaa> + 298e: cf 3f cpi r28, 0xFF ; 255 + 2990: d1 05 cpc r29, r1 + 2992: 09 f4 brne .+2 ; 0x2996 <analogWrite+0x1e> + 2994: 49 c0 rjmp .+146 ; 0x2a28 <analogWrite+0xb0> + 2996: e1 2f mov r30, r17 + 2998: f0 e0 ldi r31, 0x00 ; 0 + 299a: e1 55 subi r30, 0x51 ; 81 + 299c: ff 4f sbci r31, 0xFF ; 255 + 299e: 84 91 lpm r24, Z+ + 29a0: 83 30 cpi r24, 0x03 ; 3 + 29a2: c1 f0 breq .+48 ; 0x29d4 <analogWrite+0x5c> + 29a4: 84 30 cpi r24, 0x04 ; 4 + 29a6: 28 f4 brcc .+10 ; 0x29b2 <analogWrite+0x3a> + 29a8: 81 30 cpi r24, 0x01 ; 1 + 29aa: 51 f0 breq .+20 ; 0x29c0 <analogWrite+0x48> + 29ac: 82 30 cpi r24, 0x02 ; 2 + 29ae: b1 f5 brne .+108 ; 0x2a1c <analogWrite+0xa4> + 29b0: 0c c0 rjmp .+24 ; 0x29ca <analogWrite+0x52> + 29b2: 86 30 cpi r24, 0x06 ; 6 + 29b4: 19 f1 breq .+70 ; 0x29fc <analogWrite+0x84> + 29b6: 87 30 cpi r24, 0x07 ; 7 + 29b8: 49 f1 breq .+82 ; 0x2a0c <analogWrite+0x94> + 29ba: 84 30 cpi r24, 0x04 ; 4 + 29bc: 79 f5 brne .+94 ; 0x2a1c <analogWrite+0xa4> + 29be: 14 c0 rjmp .+40 ; 0x29e8 <analogWrite+0x70> + 29c0: 84 b5 in r24, 0x24 ; 36 + 29c2: 80 68 ori r24, 0x80 ; 128 + 29c4: 84 bd out 0x24, r24 ; 36 + 29c6: c7 bd out 0x27, r28 ; 39 + 29c8: 33 c0 rjmp .+102 ; 0x2a30 <analogWrite+0xb8> + 29ca: 84 b5 in r24, 0x24 ; 36 + 29cc: 80 62 ori r24, 0x20 ; 32 + 29ce: 84 bd out 0x24, r24 ; 36 + 29d0: c8 bd out 0x28, r28 ; 40 + 29d2: 2e c0 rjmp .+92 ; 0x2a30 <analogWrite+0xb8> + 29d4: 80 91 80 00 lds r24, 0x0080 + 29d8: 80 68 ori r24, 0x80 ; 128 + 29da: 80 93 80 00 sts 0x0080, r24 + 29de: d0 93 89 00 sts 0x0089, r29 + 29e2: c0 93 88 00 sts 0x0088, r28 + 29e6: 24 c0 rjmp .+72 ; 0x2a30 <analogWrite+0xb8> + 29e8: 80 91 80 00 lds r24, 0x0080 + 29ec: 80 62 ori r24, 0x20 ; 32 + 29ee: 80 93 80 00 sts 0x0080, r24 + 29f2: d0 93 8b 00 sts 0x008B, r29 + 29f6: c0 93 8a 00 sts 0x008A, r28 + 29fa: 1a c0 rjmp .+52 ; 0x2a30 <analogWrite+0xb8> + 29fc: 80 91 b0 00 lds r24, 0x00B0 + 2a00: 80 68 ori r24, 0x80 ; 128 + 2a02: 80 93 b0 00 sts 0x00B0, r24 + 2a06: c0 93 b3 00 sts 0x00B3, r28 + 2a0a: 12 c0 rjmp .+36 ; 0x2a30 <analogWrite+0xb8> + 2a0c: 80 91 b0 00 lds r24, 0x00B0 + 2a10: 80 62 ori r24, 0x20 ; 32 + 2a12: 80 93 b0 00 sts 0x00B0, r24 + 2a16: c0 93 b4 00 sts 0x00B4, r28 + 2a1a: 0a c0 rjmp .+20 ; 0x2a30 <analogWrite+0xb8> + 2a1c: c0 38 cpi r28, 0x80 ; 128 + 2a1e: d1 05 cpc r29, r1 + 2a20: 1c f4 brge .+6 ; 0x2a28 <analogWrite+0xb0> + 2a22: 81 2f mov r24, r17 + 2a24: 60 e0 ldi r22, 0x00 ; 0 + 2a26: 02 c0 rjmp .+4 ; 0x2a2c <analogWrite+0xb4> + 2a28: 81 2f mov r24, r17 + 2a2a: 61 e0 ldi r22, 0x01 ; 1 + 2a2c: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2a30: df 91 pop r29 + 2a32: cf 91 pop r28 + 2a34: 1f 91 pop r17 + 2a36: 08 95 ret + +00002a38 <pinMode>: + 2a38: 48 2f mov r20, r24 + 2a3a: 50 e0 ldi r21, 0x00 ; 0 + 2a3c: ca 01 movw r24, r20 + 2a3e: 85 56 subi r24, 0x65 ; 101 + 2a40: 9f 4f sbci r25, 0xFF ; 255 + 2a42: fc 01 movw r30, r24 + 2a44: 24 91 lpm r18, Z+ + 2a46: 49 57 subi r20, 0x79 ; 121 + 2a48: 5f 4f sbci r21, 0xFF ; 255 + 2a4a: fa 01 movw r30, r20 + 2a4c: 84 91 lpm r24, Z+ + 2a4e: 88 23 and r24, r24 + 2a50: c1 f0 breq .+48 ; 0x2a82 <pinMode+0x4a> + 2a52: e8 2f mov r30, r24 + 2a54: f0 e0 ldi r31, 0x00 ; 0 + 2a56: ee 0f add r30, r30 + 2a58: ff 1f adc r31, r31 + 2a5a: e7 59 subi r30, 0x97 ; 151 + 2a5c: ff 4f sbci r31, 0xFF ; 255 + 2a5e: a5 91 lpm r26, Z+ + 2a60: b4 91 lpm r27, Z+ + 2a62: 66 23 and r22, r22 + 2a64: 41 f4 brne .+16 ; 0x2a76 <pinMode+0x3e> + 2a66: 9f b7 in r25, 0x3f ; 63 + 2a68: f8 94 cli + 2a6a: 8c 91 ld r24, X + 2a6c: 20 95 com r18 + 2a6e: 82 23 and r24, r18 + 2a70: 8c 93 st X, r24 + 2a72: 9f bf out 0x3f, r25 ; 63 + 2a74: 08 95 ret + 2a76: 9f b7 in r25, 0x3f ; 63 + 2a78: f8 94 cli + 2a7a: 8c 91 ld r24, X + 2a7c: 82 2b or r24, r18 + 2a7e: 8c 93 st X, r24 + 2a80: 9f bf out 0x3f, r25 ; 63 + 2a82: 08 95 ret + +00002a84 <turnOffPWM>: + 2a84: 83 30 cpi r24, 0x03 ; 3 + 2a86: 71 f0 breq .+28 ; 0x2aa4 <turnOffPWM+0x20> + 2a88: 84 30 cpi r24, 0x04 ; 4 + 2a8a: 28 f4 brcc .+10 ; 0x2a96 <turnOffPWM+0x12> + 2a8c: 81 30 cpi r24, 0x01 ; 1 + 2a8e: a1 f0 breq .+40 ; 0x2ab8 <turnOffPWM+0x34> + 2a90: 82 30 cpi r24, 0x02 ; 2 + 2a92: 21 f5 brne .+72 ; 0x2adc <turnOffPWM+0x58> + 2a94: 14 c0 rjmp .+40 ; 0x2abe <turnOffPWM+0x3a> + 2a96: 86 30 cpi r24, 0x06 ; 6 + 2a98: b1 f0 breq .+44 ; 0x2ac6 <turnOffPWM+0x42> + 2a9a: 87 30 cpi r24, 0x07 ; 7 + 2a9c: d1 f0 breq .+52 ; 0x2ad2 <turnOffPWM+0x4e> + 2a9e: 84 30 cpi r24, 0x04 ; 4 + 2aa0: e9 f4 brne .+58 ; 0x2adc <turnOffPWM+0x58> + 2aa2: 04 c0 rjmp .+8 ; 0x2aac <turnOffPWM+0x28> + 2aa4: 80 91 80 00 lds r24, 0x0080 + 2aa8: 8f 77 andi r24, 0x7F ; 127 + 2aaa: 03 c0 rjmp .+6 ; 0x2ab2 <turnOffPWM+0x2e> + 2aac: 80 91 80 00 lds r24, 0x0080 + 2ab0: 8f 7d andi r24, 0xDF ; 223 + 2ab2: 80 93 80 00 sts 0x0080, r24 + 2ab6: 08 95 ret + 2ab8: 84 b5 in r24, 0x24 ; 36 + 2aba: 8f 77 andi r24, 0x7F ; 127 + 2abc: 02 c0 rjmp .+4 ; 0x2ac2 <turnOffPWM+0x3e> + 2abe: 84 b5 in r24, 0x24 ; 36 + 2ac0: 8f 7d andi r24, 0xDF ; 223 + 2ac2: 84 bd out 0x24, r24 ; 36 + 2ac4: 08 95 ret + 2ac6: 80 91 b0 00 lds r24, 0x00B0 + 2aca: 8f 77 andi r24, 0x7F ; 127 + 2acc: 80 93 b0 00 sts 0x00B0, r24 + 2ad0: 08 95 ret + 2ad2: 80 91 b0 00 lds r24, 0x00B0 + 2ad6: 8f 7d andi r24, 0xDF ; 223 + 2ad8: 80 93 b0 00 sts 0x00B0, r24 + 2adc: 08 95 ret + +00002ade <digitalWrite>: + 2ade: ff 92 push r15 + 2ae0: 0f 93 push r16 + 2ae2: 1f 93 push r17 + 2ae4: f6 2e mov r15, r22 + 2ae6: 48 2f mov r20, r24 + 2ae8: 50 e0 ldi r21, 0x00 ; 0 + 2aea: ca 01 movw r24, r20 + 2aec: 81 55 subi r24, 0x51 ; 81 + 2aee: 9f 4f sbci r25, 0xFF ; 255 + 2af0: fc 01 movw r30, r24 + 2af2: 24 91 lpm r18, Z+ + 2af4: ca 01 movw r24, r20 + 2af6: 85 56 subi r24, 0x65 ; 101 + 2af8: 9f 4f sbci r25, 0xFF ; 255 + 2afa: fc 01 movw r30, r24 + 2afc: 14 91 lpm r17, Z+ + 2afe: 49 57 subi r20, 0x79 ; 121 + 2b00: 5f 4f sbci r21, 0xFF ; 255 + 2b02: fa 01 movw r30, r20 + 2b04: 04 91 lpm r16, Z+ + 2b06: 00 23 and r16, r16 + 2b08: d9 f0 breq .+54 ; 0x2b40 <digitalWrite+0x62> + 2b0a: 22 23 and r18, r18 + 2b0c: 19 f0 breq .+6 ; 0x2b14 <digitalWrite+0x36> + 2b0e: 82 2f mov r24, r18 + 2b10: 0e 94 42 15 call 0x2a84 ; 0x2a84 <turnOffPWM> + 2b14: e0 2f mov r30, r16 + 2b16: f0 e0 ldi r31, 0x00 ; 0 + 2b18: ee 0f add r30, r30 + 2b1a: ff 1f adc r31, r31 + 2b1c: ed 58 subi r30, 0x8D ; 141 + 2b1e: ff 4f sbci r31, 0xFF ; 255 + 2b20: a5 91 lpm r26, Z+ + 2b22: b4 91 lpm r27, Z+ + 2b24: ff 20 and r15, r15 + 2b26: 31 f4 brne .+12 ; 0x2b34 <digitalWrite+0x56> + 2b28: 9f b7 in r25, 0x3f ; 63 + 2b2a: f8 94 cli + 2b2c: 8c 91 ld r24, X + 2b2e: 10 95 com r17 + 2b30: 81 23 and r24, r17 + 2b32: 04 c0 rjmp .+8 ; 0x2b3c <digitalWrite+0x5e> + 2b34: 9f b7 in r25, 0x3f ; 63 + 2b36: f8 94 cli + 2b38: 8c 91 ld r24, X + 2b3a: 81 2b or r24, r17 + 2b3c: 8c 93 st X, r24 + 2b3e: 9f bf out 0x3f, r25 ; 63 + 2b40: 1f 91 pop r17 + 2b42: 0f 91 pop r16 + 2b44: ff 90 pop r15 + 2b46: 08 95 ret + +00002b48 <digitalRead>: + 2b48: 0f 93 push r16 + 2b4a: 1f 93 push r17 + 2b4c: 48 2f mov r20, r24 + 2b4e: 50 e0 ldi r21, 0x00 ; 0 + 2b50: ca 01 movw r24, r20 + 2b52: 81 55 subi r24, 0x51 ; 81 + 2b54: 9f 4f sbci r25, 0xFF ; 255 + 2b56: fc 01 movw r30, r24 + 2b58: 24 91 lpm r18, Z+ + 2b5a: ca 01 movw r24, r20 + 2b5c: 85 56 subi r24, 0x65 ; 101 + 2b5e: 9f 4f sbci r25, 0xFF ; 255 + 2b60: fc 01 movw r30, r24 + 2b62: 04 91 lpm r16, Z+ + 2b64: 49 57 subi r20, 0x79 ; 121 + 2b66: 5f 4f sbci r21, 0xFF ; 255 + 2b68: fa 01 movw r30, r20 + 2b6a: 14 91 lpm r17, Z+ + 2b6c: 11 23 and r17, r17 + 2b6e: 19 f4 brne .+6 ; 0x2b76 <digitalRead+0x2e> + 2b70: 20 e0 ldi r18, 0x00 ; 0 + 2b72: 30 e0 ldi r19, 0x00 ; 0 + 2b74: 15 c0 rjmp .+42 ; 0x2ba0 <digitalRead+0x58> + 2b76: 22 23 and r18, r18 + 2b78: 19 f0 breq .+6 ; 0x2b80 <digitalRead+0x38> + 2b7a: 82 2f mov r24, r18 + 2b7c: 0e 94 42 15 call 0x2a84 ; 0x2a84 <turnOffPWM> + 2b80: 81 2f mov r24, r17 + 2b82: 90 e0 ldi r25, 0x00 ; 0 + 2b84: 88 0f add r24, r24 + 2b86: 99 1f adc r25, r25 + 2b88: 83 58 subi r24, 0x83 ; 131 + 2b8a: 9f 4f sbci r25, 0xFF ; 255 + 2b8c: fc 01 movw r30, r24 + 2b8e: a5 91 lpm r26, Z+ + 2b90: b4 91 lpm r27, Z+ + 2b92: 8c 91 ld r24, X + 2b94: 20 e0 ldi r18, 0x00 ; 0 + 2b96: 30 e0 ldi r19, 0x00 ; 0 + 2b98: 80 23 and r24, r16 + 2b9a: 11 f0 breq .+4 ; 0x2ba0 <digitalRead+0x58> + 2b9c: 21 e0 ldi r18, 0x01 ; 1 + 2b9e: 30 e0 ldi r19, 0x00 ; 0 + 2ba0: c9 01 movw r24, r18 + 2ba2: 1f 91 pop r17 + 2ba4: 0f 91 pop r16 + 2ba6: 08 95 ret + +00002ba8 <pulseIn>: + 2ba8: 8f 92 push r8 + 2baa: 9f 92 push r9 + 2bac: af 92 push r10 + 2bae: bf 92 push r11 + 2bb0: cf 92 push r12 + 2bb2: df 92 push r13 + 2bb4: ef 92 push r14 + 2bb6: ff 92 push r15 + 2bb8: 0f 93 push r16 + 2bba: 1f 93 push r17 + 2bbc: cf 93 push r28 + 2bbe: df 93 push r29 + 2bc0: a8 2f mov r26, r24 + 2bc2: b0 e0 ldi r27, 0x00 ; 0 + 2bc4: cd 01 movw r24, r26 + 2bc6: 85 56 subi r24, 0x65 ; 101 + 2bc8: 9f 4f sbci r25, 0xFF ; 255 + 2bca: fc 01 movw r30, r24 + 2bcc: 84 90 lpm r8, Z+ + 2bce: a9 57 subi r26, 0x79 ; 121 + 2bd0: bf 4f sbci r27, 0xFF ; 255 + 2bd2: fd 01 movw r30, r26 + 2bd4: d4 90 lpm r13, Z+ + 2bd6: 66 23 and r22, r22 + 2bd8: 11 f4 brne .+4 ; 0x2bde <pulseIn+0x36> + 2bda: 99 24 eor r9, r9 + 2bdc: 01 c0 rjmp .+2 ; 0x2be0 <pulseIn+0x38> + 2bde: 98 2c mov r9, r8 + 2be0: ca 01 movw r24, r20 + 2be2: b9 01 movw r22, r18 + 2be4: 20 e4 ldi r18, 0x40 ; 64 + 2be6: 3f e1 ldi r19, 0x1F ; 31 + 2be8: 40 e0 ldi r20, 0x00 ; 0 + 2bea: 50 e0 ldi r21, 0x00 ; 0 + 2bec: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 2bf0: 20 e8 ldi r18, 0x80 ; 128 + 2bf2: 3e e3 ldi r19, 0x3E ; 62 + 2bf4: 40 e0 ldi r20, 0x00 ; 0 + 2bf6: 50 e0 ldi r21, 0x00 ; 0 + 2bf8: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 2bfc: 79 01 movw r14, r18 + 2bfe: 8a 01 movw r16, r20 + 2c00: 6d 2d mov r22, r13 + 2c02: 70 e0 ldi r23, 0x00 ; 0 + 2c04: 66 0f add r22, r22 + 2c06: 77 1f adc r23, r23 + 2c08: 63 58 subi r22, 0x83 ; 131 + 2c0a: 7f 4f sbci r23, 0xFF ; 255 + 2c0c: aa 24 eor r10, r10 + 2c0e: bb 24 eor r11, r11 + 2c10: 65 01 movw r12, r10 + 2c12: fb 01 movw r30, r22 + 2c14: a5 91 lpm r26, Z+ + 2c16: b4 91 lpm r27, Z+ + 2c18: 0b c0 rjmp .+22 ; 0x2c30 <pulseIn+0x88> + 2c1a: ae 14 cp r10, r14 + 2c1c: bf 04 cpc r11, r15 + 2c1e: c0 06 cpc r12, r16 + 2c20: d1 06 cpc r13, r17 + 2c22: 09 f4 brne .+2 ; 0x2c26 <pulseIn+0x7e> + 2c24: 4f c0 rjmp .+158 ; 0x2cc4 <pulseIn+0x11c> + 2c26: 08 94 sec + 2c28: a1 1c adc r10, r1 + 2c2a: b1 1c adc r11, r1 + 2c2c: c1 1c adc r12, r1 + 2c2e: d1 1c adc r13, r1 + 2c30: 8c 91 ld r24, X + 2c32: 88 21 and r24, r8 + 2c34: 89 15 cp r24, r9 + 2c36: 89 f3 breq .-30 ; 0x2c1a <pulseIn+0x72> + 2c38: 0c c0 rjmp .+24 ; 0x2c52 <pulseIn+0xaa> + 2c3a: ae 14 cp r10, r14 + 2c3c: bf 04 cpc r11, r15 + 2c3e: c0 06 cpc r12, r16 + 2c40: d1 06 cpc r13, r17 + 2c42: 09 f4 brne .+2 ; 0x2c46 <pulseIn+0x9e> + 2c44: 3f c0 rjmp .+126 ; 0x2cc4 <pulseIn+0x11c> + 2c46: 08 94 sec + 2c48: a1 1c adc r10, r1 + 2c4a: b1 1c adc r11, r1 + 2c4c: c1 1c adc r12, r1 + 2c4e: d1 1c adc r13, r1 + 2c50: 03 c0 rjmp .+6 ; 0x2c58 <pulseIn+0xb0> + 2c52: fb 01 movw r30, r22 + 2c54: a5 91 lpm r26, Z+ + 2c56: b4 91 lpm r27, Z+ + 2c58: 8c 91 ld r24, X + 2c5a: 88 21 and r24, r8 + 2c5c: 89 15 cp r24, r9 + 2c5e: 69 f7 brne .-38 ; 0x2c3a <pulseIn+0x92> + 2c60: 20 e0 ldi r18, 0x00 ; 0 + 2c62: 30 e0 ldi r19, 0x00 ; 0 + 2c64: 40 e0 ldi r20, 0x00 ; 0 + 2c66: 50 e0 ldi r21, 0x00 ; 0 + 2c68: fb 01 movw r30, r22 + 2c6a: c5 91 lpm r28, Z+ + 2c6c: d4 91 lpm r29, Z+ + 2c6e: 0f c0 rjmp .+30 ; 0x2c8e <pulseIn+0xe6> + 2c70: da 01 movw r26, r20 + 2c72: c9 01 movw r24, r18 + 2c74: 8a 0d add r24, r10 + 2c76: 9b 1d adc r25, r11 + 2c78: ac 1d adc r26, r12 + 2c7a: bd 1d adc r27, r13 + 2c7c: 8e 15 cp r24, r14 + 2c7e: 9f 05 cpc r25, r15 + 2c80: a0 07 cpc r26, r16 + 2c82: b1 07 cpc r27, r17 + 2c84: f9 f0 breq .+62 ; 0x2cc4 <pulseIn+0x11c> + 2c86: 2f 5f subi r18, 0xFF ; 255 + 2c88: 3f 4f sbci r19, 0xFF ; 255 + 2c8a: 4f 4f sbci r20, 0xFF ; 255 + 2c8c: 5f 4f sbci r21, 0xFF ; 255 + 2c8e: 88 81 ld r24, Y + 2c90: 88 21 and r24, r8 + 2c92: 89 15 cp r24, r9 + 2c94: 69 f3 breq .-38 ; 0x2c70 <pulseIn+0xc8> + 2c96: ca 01 movw r24, r20 + 2c98: b9 01 movw r22, r18 + 2c9a: 28 e0 ldi r18, 0x08 ; 8 + 2c9c: 32 e5 ldi r19, 0x52 ; 82 + 2c9e: 40 e0 ldi r20, 0x00 ; 0 + 2ca0: 50 e0 ldi r21, 0x00 ; 0 + 2ca2: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 2ca6: 60 58 subi r22, 0x80 ; 128 + 2ca8: 71 4c sbci r23, 0xC1 ; 193 + 2caa: 8f 4f sbci r24, 0xFF ; 255 + 2cac: 9f 4f sbci r25, 0xFF ; 255 + 2cae: 20 e4 ldi r18, 0x40 ; 64 + 2cb0: 3f e1 ldi r19, 0x1F ; 31 + 2cb2: 40 e0 ldi r20, 0x00 ; 0 + 2cb4: 50 e0 ldi r21, 0x00 ; 0 + 2cb6: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 2cba: c9 01 movw r24, r18 + 2cbc: da 01 movw r26, r20 + 2cbe: 9c 01 movw r18, r24 + 2cc0: ad 01 movw r20, r26 + 2cc2: 04 c0 rjmp .+8 ; 0x2ccc <pulseIn+0x124> + 2cc4: 20 e0 ldi r18, 0x00 ; 0 + 2cc6: 30 e0 ldi r19, 0x00 ; 0 + 2cc8: 40 e0 ldi r20, 0x00 ; 0 + 2cca: 50 e0 ldi r21, 0x00 ; 0 + 2ccc: b9 01 movw r22, r18 + 2cce: ca 01 movw r24, r20 + 2cd0: df 91 pop r29 + 2cd2: cf 91 pop r28 + 2cd4: 1f 91 pop r17 + 2cd6: 0f 91 pop r16 + 2cd8: ff 90 pop r15 + 2cda: ef 90 pop r14 + 2cdc: df 90 pop r13 + 2cde: cf 90 pop r12 + 2ce0: bf 90 pop r11 + 2ce2: af 90 pop r10 + 2ce4: 9f 90 pop r9 + 2ce6: 8f 90 pop r8 + 2ce8: 08 95 ret + +00002cea <shiftOut>: + 2cea: bf 92 push r11 + 2cec: cf 92 push r12 + 2cee: df 92 push r13 + 2cf0: ef 92 push r14 + 2cf2: ff 92 push r15 + 2cf4: 0f 93 push r16 + 2cf6: 1f 93 push r17 + 2cf8: cf 93 push r28 + 2cfa: df 93 push r29 + 2cfc: e8 2e mov r14, r24 + 2cfe: f6 2e mov r15, r22 + 2d00: b4 2e mov r11, r20 + 2d02: c7 e0 ldi r28, 0x07 ; 7 + 2d04: d0 e0 ldi r29, 0x00 ; 0 + 2d06: 02 2f mov r16, r18 + 2d08: 10 e0 ldi r17, 0x00 ; 0 + 2d0a: 87 e0 ldi r24, 0x07 ; 7 + 2d0c: c8 2e mov r12, r24 + 2d0e: d1 2c mov r13, r1 + 2d10: bb 20 and r11, r11 + 2d12: 59 f4 brne .+22 ; 0x2d2a <shiftOut+0x40> + 2d14: b6 01 movw r22, r12 + 2d16: 6c 1b sub r22, r28 + 2d18: 7d 0b sbc r23, r29 + 2d1a: c8 01 movw r24, r16 + 2d1c: 02 c0 rjmp .+4 ; 0x2d22 <shiftOut+0x38> + 2d1e: 95 95 asr r25 + 2d20: 87 95 ror r24 + 2d22: 6a 95 dec r22 + 2d24: e2 f7 brpl .-8 ; 0x2d1e <shiftOut+0x34> + 2d26: bc 01 movw r22, r24 + 2d28: 07 c0 rjmp .+14 ; 0x2d38 <shiftOut+0x4e> + 2d2a: b8 01 movw r22, r16 + 2d2c: 0c 2e mov r0, r28 + 2d2e: 02 c0 rjmp .+4 ; 0x2d34 <shiftOut+0x4a> + 2d30: 75 95 asr r23 + 2d32: 67 95 ror r22 + 2d34: 0a 94 dec r0 + 2d36: e2 f7 brpl .-8 ; 0x2d30 <shiftOut+0x46> + 2d38: 61 70 andi r22, 0x01 ; 1 + 2d3a: 8e 2d mov r24, r14 + 2d3c: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2d40: 8f 2d mov r24, r15 + 2d42: 61 e0 ldi r22, 0x01 ; 1 + 2d44: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2d48: 8f 2d mov r24, r15 + 2d4a: 60 e0 ldi r22, 0x00 ; 0 + 2d4c: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2d50: 21 97 sbiw r28, 0x01 ; 1 + 2d52: 9f ef ldi r25, 0xFF ; 255 + 2d54: cf 3f cpi r28, 0xFF ; 255 + 2d56: d9 07 cpc r29, r25 + 2d58: d9 f6 brne .-74 ; 0x2d10 <shiftOut+0x26> + 2d5a: df 91 pop r29 + 2d5c: cf 91 pop r28 + 2d5e: 1f 91 pop r17 + 2d60: 0f 91 pop r16 + 2d62: ff 90 pop r15 + 2d64: ef 90 pop r14 + 2d66: df 90 pop r13 + 2d68: cf 90 pop r12 + 2d6a: bf 90 pop r11 + 2d6c: 08 95 ret + +00002d6e <shiftIn>: + 2d6e: cf 92 push r12 + 2d70: df 92 push r13 + 2d72: ef 92 push r14 + 2d74: ff 92 push r15 + 2d76: 0f 93 push r16 + 2d78: 1f 93 push r17 + 2d7a: cf 93 push r28 + 2d7c: df 93 push r29 + 2d7e: f8 2e mov r15, r24 + 2d80: 06 2f mov r16, r22 + 2d82: e4 2e mov r14, r20 + 2d84: 10 e0 ldi r17, 0x00 ; 0 + 2d86: c7 e0 ldi r28, 0x07 ; 7 + 2d88: d0 e0 ldi r29, 0x00 ; 0 + 2d8a: 97 e0 ldi r25, 0x07 ; 7 + 2d8c: c9 2e mov r12, r25 + 2d8e: d1 2c mov r13, r1 + 2d90: 80 2f mov r24, r16 + 2d92: 61 e0 ldi r22, 0x01 ; 1 + 2d94: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2d98: ee 20 and r14, r14 + 2d9a: 61 f4 brne .+24 ; 0x2db4 <shiftIn+0x46> + 2d9c: 8f 2d mov r24, r15 + 2d9e: 0e 94 a4 15 call 0x2b48 ; 0x2b48 <digitalRead> + 2da2: 96 01 movw r18, r12 + 2da4: 2c 1b sub r18, r28 + 2da6: 3d 0b sbc r19, r29 + 2da8: 02 c0 rjmp .+4 ; 0x2dae <shiftIn+0x40> + 2daa: 88 0f add r24, r24 + 2dac: 99 1f adc r25, r25 + 2dae: 2a 95 dec r18 + 2db0: e2 f7 brpl .-8 ; 0x2daa <shiftIn+0x3c> + 2db2: 09 c0 rjmp .+18 ; 0x2dc6 <shiftIn+0x58> + 2db4: 8f 2d mov r24, r15 + 2db6: 0e 94 a4 15 call 0x2b48 ; 0x2b48 <digitalRead> + 2dba: 0c 2e mov r0, r28 + 2dbc: 02 c0 rjmp .+4 ; 0x2dc2 <shiftIn+0x54> + 2dbe: 88 0f add r24, r24 + 2dc0: 99 1f adc r25, r25 + 2dc2: 0a 94 dec r0 + 2dc4: e2 f7 brpl .-8 ; 0x2dbe <shiftIn+0x50> + 2dc6: 18 2b or r17, r24 + 2dc8: 80 2f mov r24, r16 + 2dca: 60 e0 ldi r22, 0x00 ; 0 + 2dcc: 0e 94 6f 15 call 0x2ade ; 0x2ade <digitalWrite> + 2dd0: 21 97 sbiw r28, 0x01 ; 1 + 2dd2: 8f ef ldi r24, 0xFF ; 255 + 2dd4: cf 3f cpi r28, 0xFF ; 255 + 2dd6: d8 07 cpc r29, r24 + 2dd8: d9 f6 brne .-74 ; 0x2d90 <shiftIn+0x22> + 2dda: 81 2f mov r24, r17 + 2ddc: df 91 pop r29 + 2dde: cf 91 pop r28 + 2de0: 1f 91 pop r17 + 2de2: 0f 91 pop r16 + 2de4: ff 90 pop r15 + 2de6: ef 90 pop r14 + 2de8: df 90 pop r13 + 2dea: cf 90 pop r12 + 2dec: 08 95 ret + +00002dee <__fixunssfsi>: + 2dee: ef 92 push r14 + 2df0: ff 92 push r15 + 2df2: 0f 93 push r16 + 2df4: 1f 93 push r17 + 2df6: 7b 01 movw r14, r22 + 2df8: 8c 01 movw r16, r24 + 2dfa: 20 e0 ldi r18, 0x00 ; 0 + 2dfc: 30 e0 ldi r19, 0x00 ; 0 + 2dfe: 40 e0 ldi r20, 0x00 ; 0 + 2e00: 5f e4 ldi r21, 0x4F ; 79 + 2e02: 0e 94 73 1a call 0x34e6 ; 0x34e6 <__gesf2> + 2e06: 88 23 and r24, r24 + 2e08: 8c f0 brlt .+34 ; 0x2e2c <__fixunssfsi+0x3e> + 2e0a: c8 01 movw r24, r16 + 2e0c: b7 01 movw r22, r14 + 2e0e: 20 e0 ldi r18, 0x00 ; 0 + 2e10: 30 e0 ldi r19, 0x00 ; 0 + 2e12: 40 e0 ldi r20, 0x00 ; 0 + 2e14: 5f e4 ldi r21, 0x4F ; 79 + 2e16: 0e 94 6f 18 call 0x30de ; 0x30de <__subsf3> + 2e1a: 0e 94 31 1b call 0x3662 ; 0x3662 <__fixsfsi> + 2e1e: 9b 01 movw r18, r22 + 2e20: ac 01 movw r20, r24 + 2e22: 20 50 subi r18, 0x00 ; 0 + 2e24: 30 40 sbci r19, 0x00 ; 0 + 2e26: 40 40 sbci r20, 0x00 ; 0 + 2e28: 50 48 sbci r21, 0x80 ; 128 + 2e2a: 06 c0 rjmp .+12 ; 0x2e38 <__fixunssfsi+0x4a> + 2e2c: c8 01 movw r24, r16 + 2e2e: b7 01 movw r22, r14 + 2e30: 0e 94 31 1b call 0x3662 ; 0x3662 <__fixsfsi> + 2e34: 9b 01 movw r18, r22 + 2e36: ac 01 movw r20, r24 + 2e38: b9 01 movw r22, r18 + 2e3a: ca 01 movw r24, r20 + 2e3c: 1f 91 pop r17 + 2e3e: 0f 91 pop r16 + 2e40: ff 90 pop r15 + 2e42: ef 90 pop r14 + 2e44: 08 95 ret + +00002e46 <_fpadd_parts>: + 2e46: a0 e0 ldi r26, 0x00 ; 0 + 2e48: b0 e0 ldi r27, 0x00 ; 0 + 2e4a: e9 e2 ldi r30, 0x29 ; 41 + 2e4c: f7 e1 ldi r31, 0x17 ; 23 + 2e4e: 0c 94 4f 1e jmp 0x3c9e ; 0x3c9e <__prologue_saves__> + 2e52: dc 01 movw r26, r24 + 2e54: 2b 01 movw r4, r22 + 2e56: fa 01 movw r30, r20 + 2e58: 9c 91 ld r25, X + 2e5a: 92 30 cpi r25, 0x02 ; 2 + 2e5c: 08 f4 brcc .+2 ; 0x2e60 <_fpadd_parts+0x1a> + 2e5e: 39 c1 rjmp .+626 ; 0x30d2 <_fpadd_parts+0x28c> + 2e60: eb 01 movw r28, r22 + 2e62: 88 81 ld r24, Y + 2e64: 82 30 cpi r24, 0x02 ; 2 + 2e66: 08 f4 brcc .+2 ; 0x2e6a <_fpadd_parts+0x24> + 2e68: 33 c1 rjmp .+614 ; 0x30d0 <_fpadd_parts+0x28a> + 2e6a: 94 30 cpi r25, 0x04 ; 4 + 2e6c: 69 f4 brne .+26 ; 0x2e88 <_fpadd_parts+0x42> + 2e6e: 84 30 cpi r24, 0x04 ; 4 + 2e70: 09 f0 breq .+2 ; 0x2e74 <_fpadd_parts+0x2e> + 2e72: 2f c1 rjmp .+606 ; 0x30d2 <_fpadd_parts+0x28c> + 2e74: 11 96 adiw r26, 0x01 ; 1 + 2e76: 9c 91 ld r25, X + 2e78: 11 97 sbiw r26, 0x01 ; 1 + 2e7a: 89 81 ldd r24, Y+1 ; 0x01 + 2e7c: 98 17 cp r25, r24 + 2e7e: 09 f4 brne .+2 ; 0x2e82 <_fpadd_parts+0x3c> + 2e80: 28 c1 rjmp .+592 ; 0x30d2 <_fpadd_parts+0x28c> + 2e82: a8 ea ldi r26, 0xA8 ; 168 + 2e84: b1 e0 ldi r27, 0x01 ; 1 + 2e86: 25 c1 rjmp .+586 ; 0x30d2 <_fpadd_parts+0x28c> + 2e88: 84 30 cpi r24, 0x04 ; 4 + 2e8a: 09 f4 brne .+2 ; 0x2e8e <_fpadd_parts+0x48> + 2e8c: 21 c1 rjmp .+578 ; 0x30d0 <_fpadd_parts+0x28a> + 2e8e: 82 30 cpi r24, 0x02 ; 2 + 2e90: a9 f4 brne .+42 ; 0x2ebc <_fpadd_parts+0x76> + 2e92: 92 30 cpi r25, 0x02 ; 2 + 2e94: 09 f0 breq .+2 ; 0x2e98 <_fpadd_parts+0x52> + 2e96: 1d c1 rjmp .+570 ; 0x30d2 <_fpadd_parts+0x28c> + 2e98: 9a 01 movw r18, r20 + 2e9a: ad 01 movw r20, r26 + 2e9c: 88 e0 ldi r24, 0x08 ; 8 + 2e9e: ea 01 movw r28, r20 + 2ea0: 09 90 ld r0, Y+ + 2ea2: ae 01 movw r20, r28 + 2ea4: e9 01 movw r28, r18 + 2ea6: 09 92 st Y+, r0 + 2ea8: 9e 01 movw r18, r28 + 2eaa: 81 50 subi r24, 0x01 ; 1 + 2eac: c1 f7 brne .-16 ; 0x2e9e <_fpadd_parts+0x58> + 2eae: e2 01 movw r28, r4 + 2eb0: 89 81 ldd r24, Y+1 ; 0x01 + 2eb2: 11 96 adiw r26, 0x01 ; 1 + 2eb4: 9c 91 ld r25, X + 2eb6: 89 23 and r24, r25 + 2eb8: 81 83 std Z+1, r24 ; 0x01 + 2eba: 08 c1 rjmp .+528 ; 0x30cc <_fpadd_parts+0x286> + 2ebc: 92 30 cpi r25, 0x02 ; 2 + 2ebe: 09 f4 brne .+2 ; 0x2ec2 <_fpadd_parts+0x7c> + 2ec0: 07 c1 rjmp .+526 ; 0x30d0 <_fpadd_parts+0x28a> + 2ec2: 12 96 adiw r26, 0x02 ; 2 + 2ec4: 2d 90 ld r2, X+ + 2ec6: 3c 90 ld r3, X + 2ec8: 13 97 sbiw r26, 0x03 ; 3 + 2eca: eb 01 movw r28, r22 + 2ecc: 8a 81 ldd r24, Y+2 ; 0x02 + 2ece: 9b 81 ldd r25, Y+3 ; 0x03 + 2ed0: 14 96 adiw r26, 0x04 ; 4 + 2ed2: ad 90 ld r10, X+ + 2ed4: bd 90 ld r11, X+ + 2ed6: cd 90 ld r12, X+ + 2ed8: dc 90 ld r13, X + 2eda: 17 97 sbiw r26, 0x07 ; 7 + 2edc: ec 80 ldd r14, Y+4 ; 0x04 + 2ede: fd 80 ldd r15, Y+5 ; 0x05 + 2ee0: 0e 81 ldd r16, Y+6 ; 0x06 + 2ee2: 1f 81 ldd r17, Y+7 ; 0x07 + 2ee4: 91 01 movw r18, r2 + 2ee6: 28 1b sub r18, r24 + 2ee8: 39 0b sbc r19, r25 + 2eea: b9 01 movw r22, r18 + 2eec: 37 ff sbrs r19, 7 + 2eee: 04 c0 rjmp .+8 ; 0x2ef8 <_fpadd_parts+0xb2> + 2ef0: 66 27 eor r22, r22 + 2ef2: 77 27 eor r23, r23 + 2ef4: 62 1b sub r22, r18 + 2ef6: 73 0b sbc r23, r19 + 2ef8: 60 32 cpi r22, 0x20 ; 32 + 2efa: 71 05 cpc r23, r1 + 2efc: 0c f0 brlt .+2 ; 0x2f00 <_fpadd_parts+0xba> + 2efe: 61 c0 rjmp .+194 ; 0x2fc2 <_fpadd_parts+0x17c> + 2f00: 12 16 cp r1, r18 + 2f02: 13 06 cpc r1, r19 + 2f04: 6c f5 brge .+90 ; 0x2f60 <_fpadd_parts+0x11a> + 2f06: 37 01 movw r6, r14 + 2f08: 48 01 movw r8, r16 + 2f0a: 06 2e mov r0, r22 + 2f0c: 04 c0 rjmp .+8 ; 0x2f16 <_fpadd_parts+0xd0> + 2f0e: 96 94 lsr r9 + 2f10: 87 94 ror r8 + 2f12: 77 94 ror r7 + 2f14: 67 94 ror r6 + 2f16: 0a 94 dec r0 + 2f18: d2 f7 brpl .-12 ; 0x2f0e <_fpadd_parts+0xc8> + 2f1a: 21 e0 ldi r18, 0x01 ; 1 + 2f1c: 30 e0 ldi r19, 0x00 ; 0 + 2f1e: 40 e0 ldi r20, 0x00 ; 0 + 2f20: 50 e0 ldi r21, 0x00 ; 0 + 2f22: 04 c0 rjmp .+8 ; 0x2f2c <_fpadd_parts+0xe6> + 2f24: 22 0f add r18, r18 + 2f26: 33 1f adc r19, r19 + 2f28: 44 1f adc r20, r20 + 2f2a: 55 1f adc r21, r21 + 2f2c: 6a 95 dec r22 + 2f2e: d2 f7 brpl .-12 ; 0x2f24 <_fpadd_parts+0xde> + 2f30: 21 50 subi r18, 0x01 ; 1 + 2f32: 30 40 sbci r19, 0x00 ; 0 + 2f34: 40 40 sbci r20, 0x00 ; 0 + 2f36: 50 40 sbci r21, 0x00 ; 0 + 2f38: 2e 21 and r18, r14 + 2f3a: 3f 21 and r19, r15 + 2f3c: 40 23 and r20, r16 + 2f3e: 51 23 and r21, r17 + 2f40: 21 15 cp r18, r1 + 2f42: 31 05 cpc r19, r1 + 2f44: 41 05 cpc r20, r1 + 2f46: 51 05 cpc r21, r1 + 2f48: 21 f0 breq .+8 ; 0x2f52 <_fpadd_parts+0x10c> + 2f4a: 21 e0 ldi r18, 0x01 ; 1 + 2f4c: 30 e0 ldi r19, 0x00 ; 0 + 2f4e: 40 e0 ldi r20, 0x00 ; 0 + 2f50: 50 e0 ldi r21, 0x00 ; 0 + 2f52: 79 01 movw r14, r18 + 2f54: 8a 01 movw r16, r20 + 2f56: e6 28 or r14, r6 + 2f58: f7 28 or r15, r7 + 2f5a: 08 29 or r16, r8 + 2f5c: 19 29 or r17, r9 + 2f5e: 3c c0 rjmp .+120 ; 0x2fd8 <_fpadd_parts+0x192> + 2f60: 23 2b or r18, r19 + 2f62: d1 f1 breq .+116 ; 0x2fd8 <_fpadd_parts+0x192> + 2f64: 26 0e add r2, r22 + 2f66: 37 1e adc r3, r23 + 2f68: 35 01 movw r6, r10 + 2f6a: 46 01 movw r8, r12 + 2f6c: 06 2e mov r0, r22 + 2f6e: 04 c0 rjmp .+8 ; 0x2f78 <_fpadd_parts+0x132> + 2f70: 96 94 lsr r9 + 2f72: 87 94 ror r8 + 2f74: 77 94 ror r7 + 2f76: 67 94 ror r6 + 2f78: 0a 94 dec r0 + 2f7a: d2 f7 brpl .-12 ; 0x2f70 <_fpadd_parts+0x12a> + 2f7c: 21 e0 ldi r18, 0x01 ; 1 + 2f7e: 30 e0 ldi r19, 0x00 ; 0 + 2f80: 40 e0 ldi r20, 0x00 ; 0 + 2f82: 50 e0 ldi r21, 0x00 ; 0 + 2f84: 04 c0 rjmp .+8 ; 0x2f8e <_fpadd_parts+0x148> + 2f86: 22 0f add r18, r18 + 2f88: 33 1f adc r19, r19 + 2f8a: 44 1f adc r20, r20 + 2f8c: 55 1f adc r21, r21 + 2f8e: 6a 95 dec r22 + 2f90: d2 f7 brpl .-12 ; 0x2f86 <_fpadd_parts+0x140> + 2f92: 21 50 subi r18, 0x01 ; 1 + 2f94: 30 40 sbci r19, 0x00 ; 0 + 2f96: 40 40 sbci r20, 0x00 ; 0 + 2f98: 50 40 sbci r21, 0x00 ; 0 + 2f9a: 2a 21 and r18, r10 + 2f9c: 3b 21 and r19, r11 + 2f9e: 4c 21 and r20, r12 + 2fa0: 5d 21 and r21, r13 + 2fa2: 21 15 cp r18, r1 + 2fa4: 31 05 cpc r19, r1 + 2fa6: 41 05 cpc r20, r1 + 2fa8: 51 05 cpc r21, r1 + 2faa: 21 f0 breq .+8 ; 0x2fb4 <_fpadd_parts+0x16e> + 2fac: 21 e0 ldi r18, 0x01 ; 1 + 2fae: 30 e0 ldi r19, 0x00 ; 0 + 2fb0: 40 e0 ldi r20, 0x00 ; 0 + 2fb2: 50 e0 ldi r21, 0x00 ; 0 + 2fb4: 59 01 movw r10, r18 + 2fb6: 6a 01 movw r12, r20 + 2fb8: a6 28 or r10, r6 + 2fba: b7 28 or r11, r7 + 2fbc: c8 28 or r12, r8 + 2fbe: d9 28 or r13, r9 + 2fc0: 0b c0 rjmp .+22 ; 0x2fd8 <_fpadd_parts+0x192> + 2fc2: 82 15 cp r24, r2 + 2fc4: 93 05 cpc r25, r3 + 2fc6: 2c f0 brlt .+10 ; 0x2fd2 <_fpadd_parts+0x18c> + 2fc8: 1c 01 movw r2, r24 + 2fca: aa 24 eor r10, r10 + 2fcc: bb 24 eor r11, r11 + 2fce: 65 01 movw r12, r10 + 2fd0: 03 c0 rjmp .+6 ; 0x2fd8 <_fpadd_parts+0x192> + 2fd2: ee 24 eor r14, r14 + 2fd4: ff 24 eor r15, r15 + 2fd6: 87 01 movw r16, r14 + 2fd8: 11 96 adiw r26, 0x01 ; 1 + 2fda: 9c 91 ld r25, X + 2fdc: d2 01 movw r26, r4 + 2fde: 11 96 adiw r26, 0x01 ; 1 + 2fe0: 8c 91 ld r24, X + 2fe2: 98 17 cp r25, r24 + 2fe4: 09 f4 brne .+2 ; 0x2fe8 <_fpadd_parts+0x1a2> + 2fe6: 45 c0 rjmp .+138 ; 0x3072 <_fpadd_parts+0x22c> + 2fe8: 99 23 and r25, r25 + 2fea: 39 f0 breq .+14 ; 0x2ffa <_fpadd_parts+0x1b4> + 2fec: a8 01 movw r20, r16 + 2fee: 97 01 movw r18, r14 + 2ff0: 2a 19 sub r18, r10 + 2ff2: 3b 09 sbc r19, r11 + 2ff4: 4c 09 sbc r20, r12 + 2ff6: 5d 09 sbc r21, r13 + 2ff8: 06 c0 rjmp .+12 ; 0x3006 <_fpadd_parts+0x1c0> + 2ffa: a6 01 movw r20, r12 + 2ffc: 95 01 movw r18, r10 + 2ffe: 2e 19 sub r18, r14 + 3000: 3f 09 sbc r19, r15 + 3002: 40 0b sbc r20, r16 + 3004: 51 0b sbc r21, r17 + 3006: 57 fd sbrc r21, 7 + 3008: 08 c0 rjmp .+16 ; 0x301a <_fpadd_parts+0x1d4> + 300a: 11 82 std Z+1, r1 ; 0x01 + 300c: 33 82 std Z+3, r3 ; 0x03 + 300e: 22 82 std Z+2, r2 ; 0x02 + 3010: 24 83 std Z+4, r18 ; 0x04 + 3012: 35 83 std Z+5, r19 ; 0x05 + 3014: 46 83 std Z+6, r20 ; 0x06 + 3016: 57 83 std Z+7, r21 ; 0x07 + 3018: 1d c0 rjmp .+58 ; 0x3054 <_fpadd_parts+0x20e> + 301a: 81 e0 ldi r24, 0x01 ; 1 + 301c: 81 83 std Z+1, r24 ; 0x01 + 301e: 33 82 std Z+3, r3 ; 0x03 + 3020: 22 82 std Z+2, r2 ; 0x02 + 3022: 88 27 eor r24, r24 + 3024: 99 27 eor r25, r25 + 3026: dc 01 movw r26, r24 + 3028: 82 1b sub r24, r18 + 302a: 93 0b sbc r25, r19 + 302c: a4 0b sbc r26, r20 + 302e: b5 0b sbc r27, r21 + 3030: 84 83 std Z+4, r24 ; 0x04 + 3032: 95 83 std Z+5, r25 ; 0x05 + 3034: a6 83 std Z+6, r26 ; 0x06 + 3036: b7 83 std Z+7, r27 ; 0x07 + 3038: 0d c0 rjmp .+26 ; 0x3054 <_fpadd_parts+0x20e> + 303a: 22 0f add r18, r18 + 303c: 33 1f adc r19, r19 + 303e: 44 1f adc r20, r20 + 3040: 55 1f adc r21, r21 + 3042: 24 83 std Z+4, r18 ; 0x04 + 3044: 35 83 std Z+5, r19 ; 0x05 + 3046: 46 83 std Z+6, r20 ; 0x06 + 3048: 57 83 std Z+7, r21 ; 0x07 + 304a: 82 81 ldd r24, Z+2 ; 0x02 + 304c: 93 81 ldd r25, Z+3 ; 0x03 + 304e: 01 97 sbiw r24, 0x01 ; 1 + 3050: 93 83 std Z+3, r25 ; 0x03 + 3052: 82 83 std Z+2, r24 ; 0x02 + 3054: 24 81 ldd r18, Z+4 ; 0x04 + 3056: 35 81 ldd r19, Z+5 ; 0x05 + 3058: 46 81 ldd r20, Z+6 ; 0x06 + 305a: 57 81 ldd r21, Z+7 ; 0x07 + 305c: da 01 movw r26, r20 + 305e: c9 01 movw r24, r18 + 3060: 01 97 sbiw r24, 0x01 ; 1 + 3062: a1 09 sbc r26, r1 + 3064: b1 09 sbc r27, r1 + 3066: 8f 5f subi r24, 0xFF ; 255 + 3068: 9f 4f sbci r25, 0xFF ; 255 + 306a: af 4f sbci r26, 0xFF ; 255 + 306c: bf 43 sbci r27, 0x3F ; 63 + 306e: 28 f3 brcs .-54 ; 0x303a <_fpadd_parts+0x1f4> + 3070: 0b c0 rjmp .+22 ; 0x3088 <_fpadd_parts+0x242> + 3072: 91 83 std Z+1, r25 ; 0x01 + 3074: 33 82 std Z+3, r3 ; 0x03 + 3076: 22 82 std Z+2, r2 ; 0x02 + 3078: ea 0c add r14, r10 + 307a: fb 1c adc r15, r11 + 307c: 0c 1d adc r16, r12 + 307e: 1d 1d adc r17, r13 + 3080: e4 82 std Z+4, r14 ; 0x04 + 3082: f5 82 std Z+5, r15 ; 0x05 + 3084: 06 83 std Z+6, r16 ; 0x06 + 3086: 17 83 std Z+7, r17 ; 0x07 + 3088: 83 e0 ldi r24, 0x03 ; 3 + 308a: 80 83 st Z, r24 + 308c: 24 81 ldd r18, Z+4 ; 0x04 + 308e: 35 81 ldd r19, Z+5 ; 0x05 + 3090: 46 81 ldd r20, Z+6 ; 0x06 + 3092: 57 81 ldd r21, Z+7 ; 0x07 + 3094: 57 ff sbrs r21, 7 + 3096: 1a c0 rjmp .+52 ; 0x30cc <_fpadd_parts+0x286> + 3098: c9 01 movw r24, r18 + 309a: aa 27 eor r26, r26 + 309c: 97 fd sbrc r25, 7 + 309e: a0 95 com r26 + 30a0: ba 2f mov r27, r26 + 30a2: 81 70 andi r24, 0x01 ; 1 + 30a4: 90 70 andi r25, 0x00 ; 0 + 30a6: a0 70 andi r26, 0x00 ; 0 + 30a8: b0 70 andi r27, 0x00 ; 0 + 30aa: 56 95 lsr r21 + 30ac: 47 95 ror r20 + 30ae: 37 95 ror r19 + 30b0: 27 95 ror r18 + 30b2: 82 2b or r24, r18 + 30b4: 93 2b or r25, r19 + 30b6: a4 2b or r26, r20 + 30b8: b5 2b or r27, r21 + 30ba: 84 83 std Z+4, r24 ; 0x04 + 30bc: 95 83 std Z+5, r25 ; 0x05 + 30be: a6 83 std Z+6, r26 ; 0x06 + 30c0: b7 83 std Z+7, r27 ; 0x07 + 30c2: 82 81 ldd r24, Z+2 ; 0x02 + 30c4: 93 81 ldd r25, Z+3 ; 0x03 + 30c6: 01 96 adiw r24, 0x01 ; 1 + 30c8: 93 83 std Z+3, r25 ; 0x03 + 30ca: 82 83 std Z+2, r24 ; 0x02 + 30cc: df 01 movw r26, r30 + 30ce: 01 c0 rjmp .+2 ; 0x30d2 <_fpadd_parts+0x28c> + 30d0: d2 01 movw r26, r4 + 30d2: cd 01 movw r24, r26 + 30d4: cd b7 in r28, 0x3d ; 61 + 30d6: de b7 in r29, 0x3e ; 62 + 30d8: e2 e1 ldi r30, 0x12 ; 18 + 30da: 0c 94 6b 1e jmp 0x3cd6 ; 0x3cd6 <__epilogue_restores__> + +000030de <__subsf3>: + 30de: a0 e2 ldi r26, 0x20 ; 32 + 30e0: b0 e0 ldi r27, 0x00 ; 0 + 30e2: e5 e7 ldi r30, 0x75 ; 117 + 30e4: f8 e1 ldi r31, 0x18 ; 24 + 30e6: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 30ea: 69 83 std Y+1, r22 ; 0x01 + 30ec: 7a 83 std Y+2, r23 ; 0x02 + 30ee: 8b 83 std Y+3, r24 ; 0x03 + 30f0: 9c 83 std Y+4, r25 ; 0x04 + 30f2: 2d 83 std Y+5, r18 ; 0x05 + 30f4: 3e 83 std Y+6, r19 ; 0x06 + 30f6: 4f 83 std Y+7, r20 ; 0x07 + 30f8: 58 87 std Y+8, r21 ; 0x08 + 30fa: e9 e0 ldi r30, 0x09 ; 9 + 30fc: ee 2e mov r14, r30 + 30fe: f1 2c mov r15, r1 + 3100: ec 0e add r14, r28 + 3102: fd 1e adc r15, r29 + 3104: ce 01 movw r24, r28 + 3106: 01 96 adiw r24, 0x01 ; 1 + 3108: b7 01 movw r22, r14 + 310a: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 310e: 8e 01 movw r16, r28 + 3110: 0f 5e subi r16, 0xEF ; 239 + 3112: 1f 4f sbci r17, 0xFF ; 255 + 3114: ce 01 movw r24, r28 + 3116: 05 96 adiw r24, 0x05 ; 5 + 3118: b8 01 movw r22, r16 + 311a: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 311e: 8a 89 ldd r24, Y+18 ; 0x12 + 3120: 91 e0 ldi r25, 0x01 ; 1 + 3122: 89 27 eor r24, r25 + 3124: 8a 8b std Y+18, r24 ; 0x12 + 3126: c7 01 movw r24, r14 + 3128: b8 01 movw r22, r16 + 312a: ae 01 movw r20, r28 + 312c: 47 5e subi r20, 0xE7 ; 231 + 312e: 5f 4f sbci r21, 0xFF ; 255 + 3130: 0e 94 23 17 call 0x2e46 ; 0x2e46 <_fpadd_parts> + 3134: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 3138: a0 96 adiw r28, 0x20 ; 32 + 313a: e6 e0 ldi r30, 0x06 ; 6 + 313c: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +00003140 <__addsf3>: + 3140: a0 e2 ldi r26, 0x20 ; 32 + 3142: b0 e0 ldi r27, 0x00 ; 0 + 3144: e6 ea ldi r30, 0xA6 ; 166 + 3146: f8 e1 ldi r31, 0x18 ; 24 + 3148: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 314c: 69 83 std Y+1, r22 ; 0x01 + 314e: 7a 83 std Y+2, r23 ; 0x02 + 3150: 8b 83 std Y+3, r24 ; 0x03 + 3152: 9c 83 std Y+4, r25 ; 0x04 + 3154: 2d 83 std Y+5, r18 ; 0x05 + 3156: 3e 83 std Y+6, r19 ; 0x06 + 3158: 4f 83 std Y+7, r20 ; 0x07 + 315a: 58 87 std Y+8, r21 ; 0x08 + 315c: f9 e0 ldi r31, 0x09 ; 9 + 315e: ef 2e mov r14, r31 + 3160: f1 2c mov r15, r1 + 3162: ec 0e add r14, r28 + 3164: fd 1e adc r15, r29 + 3166: ce 01 movw r24, r28 + 3168: 01 96 adiw r24, 0x01 ; 1 + 316a: b7 01 movw r22, r14 + 316c: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3170: 8e 01 movw r16, r28 + 3172: 0f 5e subi r16, 0xEF ; 239 + 3174: 1f 4f sbci r17, 0xFF ; 255 + 3176: ce 01 movw r24, r28 + 3178: 05 96 adiw r24, 0x05 ; 5 + 317a: b8 01 movw r22, r16 + 317c: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3180: c7 01 movw r24, r14 + 3182: b8 01 movw r22, r16 + 3184: ae 01 movw r20, r28 + 3186: 47 5e subi r20, 0xE7 ; 231 + 3188: 5f 4f sbci r21, 0xFF ; 255 + 318a: 0e 94 23 17 call 0x2e46 ; 0x2e46 <_fpadd_parts> + 318e: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 3192: a0 96 adiw r28, 0x20 ; 32 + 3194: e6 e0 ldi r30, 0x06 ; 6 + 3196: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +0000319a <__mulsf3>: + 319a: a0 e2 ldi r26, 0x20 ; 32 + 319c: b0 e0 ldi r27, 0x00 ; 0 + 319e: e3 ed ldi r30, 0xD3 ; 211 + 31a0: f8 e1 ldi r31, 0x18 ; 24 + 31a2: 0c 94 4f 1e jmp 0x3c9e ; 0x3c9e <__prologue_saves__> + 31a6: 69 83 std Y+1, r22 ; 0x01 + 31a8: 7a 83 std Y+2, r23 ; 0x02 + 31aa: 8b 83 std Y+3, r24 ; 0x03 + 31ac: 9c 83 std Y+4, r25 ; 0x04 + 31ae: 2d 83 std Y+5, r18 ; 0x05 + 31b0: 3e 83 std Y+6, r19 ; 0x06 + 31b2: 4f 83 std Y+7, r20 ; 0x07 + 31b4: 58 87 std Y+8, r21 ; 0x08 + 31b6: ce 01 movw r24, r28 + 31b8: 01 96 adiw r24, 0x01 ; 1 + 31ba: be 01 movw r22, r28 + 31bc: 67 5f subi r22, 0xF7 ; 247 + 31be: 7f 4f sbci r23, 0xFF ; 255 + 31c0: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 31c4: ce 01 movw r24, r28 + 31c6: 05 96 adiw r24, 0x05 ; 5 + 31c8: be 01 movw r22, r28 + 31ca: 6f 5e subi r22, 0xEF ; 239 + 31cc: 7f 4f sbci r23, 0xFF ; 255 + 31ce: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 31d2: 99 85 ldd r25, Y+9 ; 0x09 + 31d4: 92 30 cpi r25, 0x02 ; 2 + 31d6: 88 f0 brcs .+34 ; 0x31fa <__mulsf3+0x60> + 31d8: 89 89 ldd r24, Y+17 ; 0x11 + 31da: 82 30 cpi r24, 0x02 ; 2 + 31dc: c8 f0 brcs .+50 ; 0x3210 <__mulsf3+0x76> + 31de: 94 30 cpi r25, 0x04 ; 4 + 31e0: 19 f4 brne .+6 ; 0x31e8 <__mulsf3+0x4e> + 31e2: 82 30 cpi r24, 0x02 ; 2 + 31e4: 51 f4 brne .+20 ; 0x31fa <__mulsf3+0x60> + 31e6: 04 c0 rjmp .+8 ; 0x31f0 <__mulsf3+0x56> + 31e8: 84 30 cpi r24, 0x04 ; 4 + 31ea: 29 f4 brne .+10 ; 0x31f6 <__mulsf3+0x5c> + 31ec: 92 30 cpi r25, 0x02 ; 2 + 31ee: 81 f4 brne .+32 ; 0x3210 <__mulsf3+0x76> + 31f0: 88 ea ldi r24, 0xA8 ; 168 + 31f2: 91 e0 ldi r25, 0x01 ; 1 + 31f4: c6 c0 rjmp .+396 ; 0x3382 <__mulsf3+0x1e8> + 31f6: 92 30 cpi r25, 0x02 ; 2 + 31f8: 49 f4 brne .+18 ; 0x320c <__mulsf3+0x72> + 31fa: 20 e0 ldi r18, 0x00 ; 0 + 31fc: 9a 85 ldd r25, Y+10 ; 0x0a + 31fe: 8a 89 ldd r24, Y+18 ; 0x12 + 3200: 98 13 cpse r25, r24 + 3202: 21 e0 ldi r18, 0x01 ; 1 + 3204: 2a 87 std Y+10, r18 ; 0x0a + 3206: ce 01 movw r24, r28 + 3208: 09 96 adiw r24, 0x09 ; 9 + 320a: bb c0 rjmp .+374 ; 0x3382 <__mulsf3+0x1e8> + 320c: 82 30 cpi r24, 0x02 ; 2 + 320e: 49 f4 brne .+18 ; 0x3222 <__mulsf3+0x88> + 3210: 20 e0 ldi r18, 0x00 ; 0 + 3212: 9a 85 ldd r25, Y+10 ; 0x0a + 3214: 8a 89 ldd r24, Y+18 ; 0x12 + 3216: 98 13 cpse r25, r24 + 3218: 21 e0 ldi r18, 0x01 ; 1 + 321a: 2a 8b std Y+18, r18 ; 0x12 + 321c: ce 01 movw r24, r28 + 321e: 41 96 adiw r24, 0x11 ; 17 + 3220: b0 c0 rjmp .+352 ; 0x3382 <__mulsf3+0x1e8> + 3222: 2d 84 ldd r2, Y+13 ; 0x0d + 3224: 3e 84 ldd r3, Y+14 ; 0x0e + 3226: 4f 84 ldd r4, Y+15 ; 0x0f + 3228: 58 88 ldd r5, Y+16 ; 0x10 + 322a: 6d 88 ldd r6, Y+21 ; 0x15 + 322c: 7e 88 ldd r7, Y+22 ; 0x16 + 322e: 8f 88 ldd r8, Y+23 ; 0x17 + 3230: 98 8c ldd r9, Y+24 ; 0x18 + 3232: ee 24 eor r14, r14 + 3234: ff 24 eor r15, r15 + 3236: 87 01 movw r16, r14 + 3238: aa 24 eor r10, r10 + 323a: bb 24 eor r11, r11 + 323c: 65 01 movw r12, r10 + 323e: 40 e0 ldi r20, 0x00 ; 0 + 3240: 50 e0 ldi r21, 0x00 ; 0 + 3242: 60 e0 ldi r22, 0x00 ; 0 + 3244: 70 e0 ldi r23, 0x00 ; 0 + 3246: e0 e0 ldi r30, 0x00 ; 0 + 3248: f0 e0 ldi r31, 0x00 ; 0 + 324a: c1 01 movw r24, r2 + 324c: 81 70 andi r24, 0x01 ; 1 + 324e: 90 70 andi r25, 0x00 ; 0 + 3250: 89 2b or r24, r25 + 3252: e9 f0 breq .+58 ; 0x328e <__mulsf3+0xf4> + 3254: e6 0c add r14, r6 + 3256: f7 1c adc r15, r7 + 3258: 08 1d adc r16, r8 + 325a: 19 1d adc r17, r9 + 325c: 9a 01 movw r18, r20 + 325e: ab 01 movw r20, r22 + 3260: 2a 0d add r18, r10 + 3262: 3b 1d adc r19, r11 + 3264: 4c 1d adc r20, r12 + 3266: 5d 1d adc r21, r13 + 3268: 80 e0 ldi r24, 0x00 ; 0 + 326a: 90 e0 ldi r25, 0x00 ; 0 + 326c: a0 e0 ldi r26, 0x00 ; 0 + 326e: b0 e0 ldi r27, 0x00 ; 0 + 3270: e6 14 cp r14, r6 + 3272: f7 04 cpc r15, r7 + 3274: 08 05 cpc r16, r8 + 3276: 19 05 cpc r17, r9 + 3278: 20 f4 brcc .+8 ; 0x3282 <__mulsf3+0xe8> + 327a: 81 e0 ldi r24, 0x01 ; 1 + 327c: 90 e0 ldi r25, 0x00 ; 0 + 327e: a0 e0 ldi r26, 0x00 ; 0 + 3280: b0 e0 ldi r27, 0x00 ; 0 + 3282: ba 01 movw r22, r20 + 3284: a9 01 movw r20, r18 + 3286: 48 0f add r20, r24 + 3288: 59 1f adc r21, r25 + 328a: 6a 1f adc r22, r26 + 328c: 7b 1f adc r23, r27 + 328e: aa 0c add r10, r10 + 3290: bb 1c adc r11, r11 + 3292: cc 1c adc r12, r12 + 3294: dd 1c adc r13, r13 + 3296: 97 fe sbrs r9, 7 + 3298: 08 c0 rjmp .+16 ; 0x32aa <__mulsf3+0x110> + 329a: 81 e0 ldi r24, 0x01 ; 1 + 329c: 90 e0 ldi r25, 0x00 ; 0 + 329e: a0 e0 ldi r26, 0x00 ; 0 + 32a0: b0 e0 ldi r27, 0x00 ; 0 + 32a2: a8 2a or r10, r24 + 32a4: b9 2a or r11, r25 + 32a6: ca 2a or r12, r26 + 32a8: db 2a or r13, r27 + 32aa: 31 96 adiw r30, 0x01 ; 1 + 32ac: e0 32 cpi r30, 0x20 ; 32 + 32ae: f1 05 cpc r31, r1 + 32b0: 49 f0 breq .+18 ; 0x32c4 <__mulsf3+0x12a> + 32b2: 66 0c add r6, r6 + 32b4: 77 1c adc r7, r7 + 32b6: 88 1c adc r8, r8 + 32b8: 99 1c adc r9, r9 + 32ba: 56 94 lsr r5 + 32bc: 47 94 ror r4 + 32be: 37 94 ror r3 + 32c0: 27 94 ror r2 + 32c2: c3 cf rjmp .-122 ; 0x324a <__mulsf3+0xb0> + 32c4: fa 85 ldd r31, Y+10 ; 0x0a + 32c6: ea 89 ldd r30, Y+18 ; 0x12 + 32c8: 2b 89 ldd r18, Y+19 ; 0x13 + 32ca: 3c 89 ldd r19, Y+20 ; 0x14 + 32cc: 8b 85 ldd r24, Y+11 ; 0x0b + 32ce: 9c 85 ldd r25, Y+12 ; 0x0c + 32d0: 28 0f add r18, r24 + 32d2: 39 1f adc r19, r25 + 32d4: 2e 5f subi r18, 0xFE ; 254 + 32d6: 3f 4f sbci r19, 0xFF ; 255 + 32d8: 17 c0 rjmp .+46 ; 0x3308 <__mulsf3+0x16e> + 32da: ca 01 movw r24, r20 + 32dc: 81 70 andi r24, 0x01 ; 1 + 32de: 90 70 andi r25, 0x00 ; 0 + 32e0: 89 2b or r24, r25 + 32e2: 61 f0 breq .+24 ; 0x32fc <__mulsf3+0x162> + 32e4: 16 95 lsr r17 + 32e6: 07 95 ror r16 + 32e8: f7 94 ror r15 + 32ea: e7 94 ror r14 + 32ec: 80 e0 ldi r24, 0x00 ; 0 + 32ee: 90 e0 ldi r25, 0x00 ; 0 + 32f0: a0 e0 ldi r26, 0x00 ; 0 + 32f2: b0 e8 ldi r27, 0x80 ; 128 + 32f4: e8 2a or r14, r24 + 32f6: f9 2a or r15, r25 + 32f8: 0a 2b or r16, r26 + 32fa: 1b 2b or r17, r27 + 32fc: 76 95 lsr r23 + 32fe: 67 95 ror r22 + 3300: 57 95 ror r21 + 3302: 47 95 ror r20 + 3304: 2f 5f subi r18, 0xFF ; 255 + 3306: 3f 4f sbci r19, 0xFF ; 255 + 3308: 77 fd sbrc r23, 7 + 330a: e7 cf rjmp .-50 ; 0x32da <__mulsf3+0x140> + 330c: 0c c0 rjmp .+24 ; 0x3326 <__mulsf3+0x18c> + 330e: 44 0f add r20, r20 + 3310: 55 1f adc r21, r21 + 3312: 66 1f adc r22, r22 + 3314: 77 1f adc r23, r23 + 3316: 17 fd sbrc r17, 7 + 3318: 41 60 ori r20, 0x01 ; 1 + 331a: ee 0c add r14, r14 + 331c: ff 1c adc r15, r15 + 331e: 00 1f adc r16, r16 + 3320: 11 1f adc r17, r17 + 3322: 21 50 subi r18, 0x01 ; 1 + 3324: 30 40 sbci r19, 0x00 ; 0 + 3326: 40 30 cpi r20, 0x00 ; 0 + 3328: 90 e0 ldi r25, 0x00 ; 0 + 332a: 59 07 cpc r21, r25 + 332c: 90 e0 ldi r25, 0x00 ; 0 + 332e: 69 07 cpc r22, r25 + 3330: 90 e4 ldi r25, 0x40 ; 64 + 3332: 79 07 cpc r23, r25 + 3334: 60 f3 brcs .-40 ; 0x330e <__mulsf3+0x174> + 3336: 2b 8f std Y+27, r18 ; 0x1b + 3338: 3c 8f std Y+28, r19 ; 0x1c + 333a: db 01 movw r26, r22 + 333c: ca 01 movw r24, r20 + 333e: 8f 77 andi r24, 0x7F ; 127 + 3340: 90 70 andi r25, 0x00 ; 0 + 3342: a0 70 andi r26, 0x00 ; 0 + 3344: b0 70 andi r27, 0x00 ; 0 + 3346: 80 34 cpi r24, 0x40 ; 64 + 3348: 91 05 cpc r25, r1 + 334a: a1 05 cpc r26, r1 + 334c: b1 05 cpc r27, r1 + 334e: 61 f4 brne .+24 ; 0x3368 <__mulsf3+0x1ce> + 3350: 47 fd sbrc r20, 7 + 3352: 0a c0 rjmp .+20 ; 0x3368 <__mulsf3+0x1ce> + 3354: e1 14 cp r14, r1 + 3356: f1 04 cpc r15, r1 + 3358: 01 05 cpc r16, r1 + 335a: 11 05 cpc r17, r1 + 335c: 29 f0 breq .+10 ; 0x3368 <__mulsf3+0x1ce> + 335e: 40 5c subi r20, 0xC0 ; 192 + 3360: 5f 4f sbci r21, 0xFF ; 255 + 3362: 6f 4f sbci r22, 0xFF ; 255 + 3364: 7f 4f sbci r23, 0xFF ; 255 + 3366: 40 78 andi r20, 0x80 ; 128 + 3368: 1a 8e std Y+26, r1 ; 0x1a + 336a: fe 17 cp r31, r30 + 336c: 11 f0 breq .+4 ; 0x3372 <__mulsf3+0x1d8> + 336e: 81 e0 ldi r24, 0x01 ; 1 + 3370: 8a 8f std Y+26, r24 ; 0x1a + 3372: 4d 8f std Y+29, r20 ; 0x1d + 3374: 5e 8f std Y+30, r21 ; 0x1e + 3376: 6f 8f std Y+31, r22 ; 0x1f + 3378: 78 a3 std Y+32, r23 ; 0x20 + 337a: 83 e0 ldi r24, 0x03 ; 3 + 337c: 89 8f std Y+25, r24 ; 0x19 + 337e: ce 01 movw r24, r28 + 3380: 49 96 adiw r24, 0x19 ; 25 + 3382: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 3386: a0 96 adiw r28, 0x20 ; 32 + 3388: e2 e1 ldi r30, 0x12 ; 18 + 338a: 0c 94 6b 1e jmp 0x3cd6 ; 0x3cd6 <__epilogue_restores__> + +0000338e <__divsf3>: + 338e: a8 e1 ldi r26, 0x18 ; 24 + 3390: b0 e0 ldi r27, 0x00 ; 0 + 3392: ed ec ldi r30, 0xCD ; 205 + 3394: f9 e1 ldi r31, 0x19 ; 25 + 3396: 0c 94 57 1e jmp 0x3cae ; 0x3cae <__prologue_saves__+0x10> + 339a: 69 83 std Y+1, r22 ; 0x01 + 339c: 7a 83 std Y+2, r23 ; 0x02 + 339e: 8b 83 std Y+3, r24 ; 0x03 + 33a0: 9c 83 std Y+4, r25 ; 0x04 + 33a2: 2d 83 std Y+5, r18 ; 0x05 + 33a4: 3e 83 std Y+6, r19 ; 0x06 + 33a6: 4f 83 std Y+7, r20 ; 0x07 + 33a8: 58 87 std Y+8, r21 ; 0x08 + 33aa: b9 e0 ldi r27, 0x09 ; 9 + 33ac: eb 2e mov r14, r27 + 33ae: f1 2c mov r15, r1 + 33b0: ec 0e add r14, r28 + 33b2: fd 1e adc r15, r29 + 33b4: ce 01 movw r24, r28 + 33b6: 01 96 adiw r24, 0x01 ; 1 + 33b8: b7 01 movw r22, r14 + 33ba: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 33be: 8e 01 movw r16, r28 + 33c0: 0f 5e subi r16, 0xEF ; 239 + 33c2: 1f 4f sbci r17, 0xFF ; 255 + 33c4: ce 01 movw r24, r28 + 33c6: 05 96 adiw r24, 0x05 ; 5 + 33c8: b8 01 movw r22, r16 + 33ca: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 33ce: 29 85 ldd r18, Y+9 ; 0x09 + 33d0: 22 30 cpi r18, 0x02 ; 2 + 33d2: 08 f4 brcc .+2 ; 0x33d6 <__divsf3+0x48> + 33d4: 7e c0 rjmp .+252 ; 0x34d2 <__divsf3+0x144> + 33d6: 39 89 ldd r19, Y+17 ; 0x11 + 33d8: 32 30 cpi r19, 0x02 ; 2 + 33da: 10 f4 brcc .+4 ; 0x33e0 <__divsf3+0x52> + 33dc: b8 01 movw r22, r16 + 33de: 7c c0 rjmp .+248 ; 0x34d8 <__divsf3+0x14a> + 33e0: 8a 85 ldd r24, Y+10 ; 0x0a + 33e2: 9a 89 ldd r25, Y+18 ; 0x12 + 33e4: 89 27 eor r24, r25 + 33e6: 8a 87 std Y+10, r24 ; 0x0a + 33e8: 24 30 cpi r18, 0x04 ; 4 + 33ea: 11 f0 breq .+4 ; 0x33f0 <__divsf3+0x62> + 33ec: 22 30 cpi r18, 0x02 ; 2 + 33ee: 31 f4 brne .+12 ; 0x33fc <__divsf3+0x6e> + 33f0: 23 17 cp r18, r19 + 33f2: 09 f0 breq .+2 ; 0x33f6 <__divsf3+0x68> + 33f4: 6e c0 rjmp .+220 ; 0x34d2 <__divsf3+0x144> + 33f6: 68 ea ldi r22, 0xA8 ; 168 + 33f8: 71 e0 ldi r23, 0x01 ; 1 + 33fa: 6e c0 rjmp .+220 ; 0x34d8 <__divsf3+0x14a> + 33fc: 34 30 cpi r19, 0x04 ; 4 + 33fe: 39 f4 brne .+14 ; 0x340e <__divsf3+0x80> + 3400: 1d 86 std Y+13, r1 ; 0x0d + 3402: 1e 86 std Y+14, r1 ; 0x0e + 3404: 1f 86 std Y+15, r1 ; 0x0f + 3406: 18 8a std Y+16, r1 ; 0x10 + 3408: 1c 86 std Y+12, r1 ; 0x0c + 340a: 1b 86 std Y+11, r1 ; 0x0b + 340c: 04 c0 rjmp .+8 ; 0x3416 <__divsf3+0x88> + 340e: 32 30 cpi r19, 0x02 ; 2 + 3410: 21 f4 brne .+8 ; 0x341a <__divsf3+0x8c> + 3412: 84 e0 ldi r24, 0x04 ; 4 + 3414: 89 87 std Y+9, r24 ; 0x09 + 3416: b7 01 movw r22, r14 + 3418: 5f c0 rjmp .+190 ; 0x34d8 <__divsf3+0x14a> + 341a: 2b 85 ldd r18, Y+11 ; 0x0b + 341c: 3c 85 ldd r19, Y+12 ; 0x0c + 341e: 8b 89 ldd r24, Y+19 ; 0x13 + 3420: 9c 89 ldd r25, Y+20 ; 0x14 + 3422: 28 1b sub r18, r24 + 3424: 39 0b sbc r19, r25 + 3426: 3c 87 std Y+12, r19 ; 0x0c + 3428: 2b 87 std Y+11, r18 ; 0x0b + 342a: ed 84 ldd r14, Y+13 ; 0x0d + 342c: fe 84 ldd r15, Y+14 ; 0x0e + 342e: 0f 85 ldd r16, Y+15 ; 0x0f + 3430: 18 89 ldd r17, Y+16 ; 0x10 + 3432: ad 88 ldd r10, Y+21 ; 0x15 + 3434: be 88 ldd r11, Y+22 ; 0x16 + 3436: cf 88 ldd r12, Y+23 ; 0x17 + 3438: d8 8c ldd r13, Y+24 ; 0x18 + 343a: ea 14 cp r14, r10 + 343c: fb 04 cpc r15, r11 + 343e: 0c 05 cpc r16, r12 + 3440: 1d 05 cpc r17, r13 + 3442: 40 f4 brcc .+16 ; 0x3454 <__divsf3+0xc6> + 3444: ee 0c add r14, r14 + 3446: ff 1c adc r15, r15 + 3448: 00 1f adc r16, r16 + 344a: 11 1f adc r17, r17 + 344c: 21 50 subi r18, 0x01 ; 1 + 344e: 30 40 sbci r19, 0x00 ; 0 + 3450: 3c 87 std Y+12, r19 ; 0x0c + 3452: 2b 87 std Y+11, r18 ; 0x0b + 3454: 20 e0 ldi r18, 0x00 ; 0 + 3456: 30 e0 ldi r19, 0x00 ; 0 + 3458: 40 e0 ldi r20, 0x00 ; 0 + 345a: 50 e0 ldi r21, 0x00 ; 0 + 345c: 80 e0 ldi r24, 0x00 ; 0 + 345e: 90 e0 ldi r25, 0x00 ; 0 + 3460: a0 e0 ldi r26, 0x00 ; 0 + 3462: b0 e4 ldi r27, 0x40 ; 64 + 3464: 60 e0 ldi r22, 0x00 ; 0 + 3466: 70 e0 ldi r23, 0x00 ; 0 + 3468: ea 14 cp r14, r10 + 346a: fb 04 cpc r15, r11 + 346c: 0c 05 cpc r16, r12 + 346e: 1d 05 cpc r17, r13 + 3470: 40 f0 brcs .+16 ; 0x3482 <__divsf3+0xf4> + 3472: 28 2b or r18, r24 + 3474: 39 2b or r19, r25 + 3476: 4a 2b or r20, r26 + 3478: 5b 2b or r21, r27 + 347a: ea 18 sub r14, r10 + 347c: fb 08 sbc r15, r11 + 347e: 0c 09 sbc r16, r12 + 3480: 1d 09 sbc r17, r13 + 3482: b6 95 lsr r27 + 3484: a7 95 ror r26 + 3486: 97 95 ror r25 + 3488: 87 95 ror r24 + 348a: ee 0c add r14, r14 + 348c: ff 1c adc r15, r15 + 348e: 00 1f adc r16, r16 + 3490: 11 1f adc r17, r17 + 3492: 6f 5f subi r22, 0xFF ; 255 + 3494: 7f 4f sbci r23, 0xFF ; 255 + 3496: 6f 31 cpi r22, 0x1F ; 31 + 3498: 71 05 cpc r23, r1 + 349a: 31 f7 brne .-52 ; 0x3468 <__divsf3+0xda> + 349c: da 01 movw r26, r20 + 349e: c9 01 movw r24, r18 + 34a0: 8f 77 andi r24, 0x7F ; 127 + 34a2: 90 70 andi r25, 0x00 ; 0 + 34a4: a0 70 andi r26, 0x00 ; 0 + 34a6: b0 70 andi r27, 0x00 ; 0 + 34a8: 80 34 cpi r24, 0x40 ; 64 + 34aa: 91 05 cpc r25, r1 + 34ac: a1 05 cpc r26, r1 + 34ae: b1 05 cpc r27, r1 + 34b0: 61 f4 brne .+24 ; 0x34ca <__divsf3+0x13c> + 34b2: 27 fd sbrc r18, 7 + 34b4: 0a c0 rjmp .+20 ; 0x34ca <__divsf3+0x13c> + 34b6: e1 14 cp r14, r1 + 34b8: f1 04 cpc r15, r1 + 34ba: 01 05 cpc r16, r1 + 34bc: 11 05 cpc r17, r1 + 34be: 29 f0 breq .+10 ; 0x34ca <__divsf3+0x13c> + 34c0: 20 5c subi r18, 0xC0 ; 192 + 34c2: 3f 4f sbci r19, 0xFF ; 255 + 34c4: 4f 4f sbci r20, 0xFF ; 255 + 34c6: 5f 4f sbci r21, 0xFF ; 255 + 34c8: 20 78 andi r18, 0x80 ; 128 + 34ca: 2d 87 std Y+13, r18 ; 0x0d + 34cc: 3e 87 std Y+14, r19 ; 0x0e + 34ce: 4f 87 std Y+15, r20 ; 0x0f + 34d0: 58 8b std Y+16, r21 ; 0x10 + 34d2: be 01 movw r22, r28 + 34d4: 67 5f subi r22, 0xF7 ; 247 + 34d6: 7f 4f sbci r23, 0xFF ; 255 + 34d8: cb 01 movw r24, r22 + 34da: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 34de: 68 96 adiw r28, 0x18 ; 24 + 34e0: ea e0 ldi r30, 0x0A ; 10 + 34e2: 0c 94 73 1e jmp 0x3ce6 ; 0x3ce6 <__epilogue_restores__+0x10> + +000034e6 <__gesf2>: + 34e6: a8 e1 ldi r26, 0x18 ; 24 + 34e8: b0 e0 ldi r27, 0x00 ; 0 + 34ea: e9 e7 ldi r30, 0x79 ; 121 + 34ec: fa e1 ldi r31, 0x1A ; 26 + 34ee: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 34f2: 69 83 std Y+1, r22 ; 0x01 + 34f4: 7a 83 std Y+2, r23 ; 0x02 + 34f6: 8b 83 std Y+3, r24 ; 0x03 + 34f8: 9c 83 std Y+4, r25 ; 0x04 + 34fa: 2d 83 std Y+5, r18 ; 0x05 + 34fc: 3e 83 std Y+6, r19 ; 0x06 + 34fe: 4f 83 std Y+7, r20 ; 0x07 + 3500: 58 87 std Y+8, r21 ; 0x08 + 3502: 89 e0 ldi r24, 0x09 ; 9 + 3504: e8 2e mov r14, r24 + 3506: f1 2c mov r15, r1 + 3508: ec 0e add r14, r28 + 350a: fd 1e adc r15, r29 + 350c: ce 01 movw r24, r28 + 350e: 01 96 adiw r24, 0x01 ; 1 + 3510: b7 01 movw r22, r14 + 3512: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3516: 8e 01 movw r16, r28 + 3518: 0f 5e subi r16, 0xEF ; 239 + 351a: 1f 4f sbci r17, 0xFF ; 255 + 351c: ce 01 movw r24, r28 + 351e: 05 96 adiw r24, 0x05 ; 5 + 3520: b8 01 movw r22, r16 + 3522: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3526: 89 85 ldd r24, Y+9 ; 0x09 + 3528: 82 30 cpi r24, 0x02 ; 2 + 352a: 40 f0 brcs .+16 ; 0x353c <__gesf2+0x56> + 352c: 89 89 ldd r24, Y+17 ; 0x11 + 352e: 82 30 cpi r24, 0x02 ; 2 + 3530: 28 f0 brcs .+10 ; 0x353c <__gesf2+0x56> + 3532: c7 01 movw r24, r14 + 3534: b8 01 movw r22, r16 + 3536: 0e 94 9a 1d call 0x3b34 ; 0x3b34 <__fpcmp_parts_f> + 353a: 01 c0 rjmp .+2 ; 0x353e <__gesf2+0x58> + 353c: 8f ef ldi r24, 0xFF ; 255 + 353e: 68 96 adiw r28, 0x18 ; 24 + 3540: e6 e0 ldi r30, 0x06 ; 6 + 3542: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +00003546 <__ltsf2>: + 3546: a8 e1 ldi r26, 0x18 ; 24 + 3548: b0 e0 ldi r27, 0x00 ; 0 + 354a: e9 ea ldi r30, 0xA9 ; 169 + 354c: fa e1 ldi r31, 0x1A ; 26 + 354e: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 3552: 69 83 std Y+1, r22 ; 0x01 + 3554: 7a 83 std Y+2, r23 ; 0x02 + 3556: 8b 83 std Y+3, r24 ; 0x03 + 3558: 9c 83 std Y+4, r25 ; 0x04 + 355a: 2d 83 std Y+5, r18 ; 0x05 + 355c: 3e 83 std Y+6, r19 ; 0x06 + 355e: 4f 83 std Y+7, r20 ; 0x07 + 3560: 58 87 std Y+8, r21 ; 0x08 + 3562: 89 e0 ldi r24, 0x09 ; 9 + 3564: e8 2e mov r14, r24 + 3566: f1 2c mov r15, r1 + 3568: ec 0e add r14, r28 + 356a: fd 1e adc r15, r29 + 356c: ce 01 movw r24, r28 + 356e: 01 96 adiw r24, 0x01 ; 1 + 3570: b7 01 movw r22, r14 + 3572: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3576: 8e 01 movw r16, r28 + 3578: 0f 5e subi r16, 0xEF ; 239 + 357a: 1f 4f sbci r17, 0xFF ; 255 + 357c: ce 01 movw r24, r28 + 357e: 05 96 adiw r24, 0x05 ; 5 + 3580: b8 01 movw r22, r16 + 3582: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3586: 89 85 ldd r24, Y+9 ; 0x09 + 3588: 82 30 cpi r24, 0x02 ; 2 + 358a: 40 f0 brcs .+16 ; 0x359c <__ltsf2+0x56> + 358c: 89 89 ldd r24, Y+17 ; 0x11 + 358e: 82 30 cpi r24, 0x02 ; 2 + 3590: 28 f0 brcs .+10 ; 0x359c <__ltsf2+0x56> + 3592: c7 01 movw r24, r14 + 3594: b8 01 movw r22, r16 + 3596: 0e 94 9a 1d call 0x3b34 ; 0x3b34 <__fpcmp_parts_f> + 359a: 01 c0 rjmp .+2 ; 0x359e <__ltsf2+0x58> + 359c: 81 e0 ldi r24, 0x01 ; 1 + 359e: 68 96 adiw r28, 0x18 ; 24 + 35a0: e6 e0 ldi r30, 0x06 ; 6 + 35a2: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +000035a6 <__floatsisf>: + 35a6: a8 e0 ldi r26, 0x08 ; 8 + 35a8: b0 e0 ldi r27, 0x00 ; 0 + 35aa: e9 ed ldi r30, 0xD9 ; 217 + 35ac: fa e1 ldi r31, 0x1A ; 26 + 35ae: 0c 94 58 1e jmp 0x3cb0 ; 0x3cb0 <__prologue_saves__+0x12> + 35b2: 9b 01 movw r18, r22 + 35b4: ac 01 movw r20, r24 + 35b6: 83 e0 ldi r24, 0x03 ; 3 + 35b8: 89 83 std Y+1, r24 ; 0x01 + 35ba: da 01 movw r26, r20 + 35bc: c9 01 movw r24, r18 + 35be: 88 27 eor r24, r24 + 35c0: b7 fd sbrc r27, 7 + 35c2: 83 95 inc r24 + 35c4: 99 27 eor r25, r25 + 35c6: aa 27 eor r26, r26 + 35c8: bb 27 eor r27, r27 + 35ca: b8 2e mov r11, r24 + 35cc: 21 15 cp r18, r1 + 35ce: 31 05 cpc r19, r1 + 35d0: 41 05 cpc r20, r1 + 35d2: 51 05 cpc r21, r1 + 35d4: 19 f4 brne .+6 ; 0x35dc <__floatsisf+0x36> + 35d6: 82 e0 ldi r24, 0x02 ; 2 + 35d8: 89 83 std Y+1, r24 ; 0x01 + 35da: 3a c0 rjmp .+116 ; 0x3650 <__floatsisf+0xaa> + 35dc: 88 23 and r24, r24 + 35de: a9 f0 breq .+42 ; 0x360a <__floatsisf+0x64> + 35e0: 20 30 cpi r18, 0x00 ; 0 + 35e2: 80 e0 ldi r24, 0x00 ; 0 + 35e4: 38 07 cpc r19, r24 + 35e6: 80 e0 ldi r24, 0x00 ; 0 + 35e8: 48 07 cpc r20, r24 + 35ea: 80 e8 ldi r24, 0x80 ; 128 + 35ec: 58 07 cpc r21, r24 + 35ee: 29 f4 brne .+10 ; 0x35fa <__floatsisf+0x54> + 35f0: 60 e0 ldi r22, 0x00 ; 0 + 35f2: 70 e0 ldi r23, 0x00 ; 0 + 35f4: 80 e0 ldi r24, 0x00 ; 0 + 35f6: 9f ec ldi r25, 0xCF ; 207 + 35f8: 30 c0 rjmp .+96 ; 0x365a <__floatsisf+0xb4> + 35fa: ee 24 eor r14, r14 + 35fc: ff 24 eor r15, r15 + 35fe: 87 01 movw r16, r14 + 3600: e2 1a sub r14, r18 + 3602: f3 0a sbc r15, r19 + 3604: 04 0b sbc r16, r20 + 3606: 15 0b sbc r17, r21 + 3608: 02 c0 rjmp .+4 ; 0x360e <__floatsisf+0x68> + 360a: 79 01 movw r14, r18 + 360c: 8a 01 movw r16, r20 + 360e: 8e e1 ldi r24, 0x1E ; 30 + 3610: c8 2e mov r12, r24 + 3612: d1 2c mov r13, r1 + 3614: dc 82 std Y+4, r13 ; 0x04 + 3616: cb 82 std Y+3, r12 ; 0x03 + 3618: ed 82 std Y+5, r14 ; 0x05 + 361a: fe 82 std Y+6, r15 ; 0x06 + 361c: 0f 83 std Y+7, r16 ; 0x07 + 361e: 18 87 std Y+8, r17 ; 0x08 + 3620: c8 01 movw r24, r16 + 3622: b7 01 movw r22, r14 + 3624: 0e 94 fe 1b call 0x37fc ; 0x37fc <__clzsi2> + 3628: 01 97 sbiw r24, 0x01 ; 1 + 362a: 18 16 cp r1, r24 + 362c: 19 06 cpc r1, r25 + 362e: 84 f4 brge .+32 ; 0x3650 <__floatsisf+0xaa> + 3630: 08 2e mov r0, r24 + 3632: 04 c0 rjmp .+8 ; 0x363c <__floatsisf+0x96> + 3634: ee 0c add r14, r14 + 3636: ff 1c adc r15, r15 + 3638: 00 1f adc r16, r16 + 363a: 11 1f adc r17, r17 + 363c: 0a 94 dec r0 + 363e: d2 f7 brpl .-12 ; 0x3634 <__floatsisf+0x8e> + 3640: ed 82 std Y+5, r14 ; 0x05 + 3642: fe 82 std Y+6, r15 ; 0x06 + 3644: 0f 83 std Y+7, r16 ; 0x07 + 3646: 18 87 std Y+8, r17 ; 0x08 + 3648: c8 1a sub r12, r24 + 364a: d9 0a sbc r13, r25 + 364c: dc 82 std Y+4, r13 ; 0x04 + 364e: cb 82 std Y+3, r12 ; 0x03 + 3650: ba 82 std Y+2, r11 ; 0x02 + 3652: ce 01 movw r24, r28 + 3654: 01 96 adiw r24, 0x01 ; 1 + 3656: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 365a: 28 96 adiw r28, 0x08 ; 8 + 365c: e9 e0 ldi r30, 0x09 ; 9 + 365e: 0c 94 74 1e jmp 0x3ce8 ; 0x3ce8 <__epilogue_restores__+0x12> + +00003662 <__fixsfsi>: + 3662: ac e0 ldi r26, 0x0C ; 12 + 3664: b0 e0 ldi r27, 0x00 ; 0 + 3666: e7 e3 ldi r30, 0x37 ; 55 + 3668: fb e1 ldi r31, 0x1B ; 27 + 366a: 0c 94 5f 1e jmp 0x3cbe ; 0x3cbe <__prologue_saves__+0x20> + 366e: 69 83 std Y+1, r22 ; 0x01 + 3670: 7a 83 std Y+2, r23 ; 0x02 + 3672: 8b 83 std Y+3, r24 ; 0x03 + 3674: 9c 83 std Y+4, r25 ; 0x04 + 3676: ce 01 movw r24, r28 + 3678: 01 96 adiw r24, 0x01 ; 1 + 367a: be 01 movw r22, r28 + 367c: 6b 5f subi r22, 0xFB ; 251 + 367e: 7f 4f sbci r23, 0xFF ; 255 + 3680: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3684: 8d 81 ldd r24, Y+5 ; 0x05 + 3686: 82 30 cpi r24, 0x02 ; 2 + 3688: 61 f1 breq .+88 ; 0x36e2 <__fixsfsi+0x80> + 368a: 82 30 cpi r24, 0x02 ; 2 + 368c: 50 f1 brcs .+84 ; 0x36e2 <__fixsfsi+0x80> + 368e: 84 30 cpi r24, 0x04 ; 4 + 3690: 21 f4 brne .+8 ; 0x369a <__fixsfsi+0x38> + 3692: 8e 81 ldd r24, Y+6 ; 0x06 + 3694: 88 23 and r24, r24 + 3696: 51 f1 breq .+84 ; 0x36ec <__fixsfsi+0x8a> + 3698: 2e c0 rjmp .+92 ; 0x36f6 <__fixsfsi+0x94> + 369a: 2f 81 ldd r18, Y+7 ; 0x07 + 369c: 38 85 ldd r19, Y+8 ; 0x08 + 369e: 37 fd sbrc r19, 7 + 36a0: 20 c0 rjmp .+64 ; 0x36e2 <__fixsfsi+0x80> + 36a2: 6e 81 ldd r22, Y+6 ; 0x06 + 36a4: 2f 31 cpi r18, 0x1F ; 31 + 36a6: 31 05 cpc r19, r1 + 36a8: 1c f0 brlt .+6 ; 0x36b0 <__fixsfsi+0x4e> + 36aa: 66 23 and r22, r22 + 36ac: f9 f0 breq .+62 ; 0x36ec <__fixsfsi+0x8a> + 36ae: 23 c0 rjmp .+70 ; 0x36f6 <__fixsfsi+0x94> + 36b0: 8e e1 ldi r24, 0x1E ; 30 + 36b2: 90 e0 ldi r25, 0x00 ; 0 + 36b4: 82 1b sub r24, r18 + 36b6: 93 0b sbc r25, r19 + 36b8: 29 85 ldd r18, Y+9 ; 0x09 + 36ba: 3a 85 ldd r19, Y+10 ; 0x0a + 36bc: 4b 85 ldd r20, Y+11 ; 0x0b + 36be: 5c 85 ldd r21, Y+12 ; 0x0c + 36c0: 04 c0 rjmp .+8 ; 0x36ca <__fixsfsi+0x68> + 36c2: 56 95 lsr r21 + 36c4: 47 95 ror r20 + 36c6: 37 95 ror r19 + 36c8: 27 95 ror r18 + 36ca: 8a 95 dec r24 + 36cc: d2 f7 brpl .-12 ; 0x36c2 <__fixsfsi+0x60> + 36ce: 66 23 and r22, r22 + 36d0: b1 f0 breq .+44 ; 0x36fe <__fixsfsi+0x9c> + 36d2: 50 95 com r21 + 36d4: 40 95 com r20 + 36d6: 30 95 com r19 + 36d8: 21 95 neg r18 + 36da: 3f 4f sbci r19, 0xFF ; 255 + 36dc: 4f 4f sbci r20, 0xFF ; 255 + 36de: 5f 4f sbci r21, 0xFF ; 255 + 36e0: 0e c0 rjmp .+28 ; 0x36fe <__fixsfsi+0x9c> + 36e2: 20 e0 ldi r18, 0x00 ; 0 + 36e4: 30 e0 ldi r19, 0x00 ; 0 + 36e6: 40 e0 ldi r20, 0x00 ; 0 + 36e8: 50 e0 ldi r21, 0x00 ; 0 + 36ea: 09 c0 rjmp .+18 ; 0x36fe <__fixsfsi+0x9c> + 36ec: 2f ef ldi r18, 0xFF ; 255 + 36ee: 3f ef ldi r19, 0xFF ; 255 + 36f0: 4f ef ldi r20, 0xFF ; 255 + 36f2: 5f e7 ldi r21, 0x7F ; 127 + 36f4: 04 c0 rjmp .+8 ; 0x36fe <__fixsfsi+0x9c> + 36f6: 20 e0 ldi r18, 0x00 ; 0 + 36f8: 30 e0 ldi r19, 0x00 ; 0 + 36fa: 40 e0 ldi r20, 0x00 ; 0 + 36fc: 50 e8 ldi r21, 0x80 ; 128 + 36fe: b9 01 movw r22, r18 + 3700: ca 01 movw r24, r20 + 3702: 2c 96 adiw r28, 0x0c ; 12 + 3704: e2 e0 ldi r30, 0x02 ; 2 + 3706: 0c 94 7b 1e jmp 0x3cf6 ; 0x3cf6 <__epilogue_restores__+0x20> + +0000370a <__floatunsisf>: + 370a: a8 e0 ldi r26, 0x08 ; 8 + 370c: b0 e0 ldi r27, 0x00 ; 0 + 370e: eb e8 ldi r30, 0x8B ; 139 + 3710: fb e1 ldi r31, 0x1B ; 27 + 3712: 0c 94 57 1e jmp 0x3cae ; 0x3cae <__prologue_saves__+0x10> + 3716: 7b 01 movw r14, r22 + 3718: 8c 01 movw r16, r24 + 371a: 61 15 cp r22, r1 + 371c: 71 05 cpc r23, r1 + 371e: 81 05 cpc r24, r1 + 3720: 91 05 cpc r25, r1 + 3722: 19 f4 brne .+6 ; 0x372a <__floatunsisf+0x20> + 3724: 82 e0 ldi r24, 0x02 ; 2 + 3726: 89 83 std Y+1, r24 ; 0x01 + 3728: 60 c0 rjmp .+192 ; 0x37ea <__floatunsisf+0xe0> + 372a: 83 e0 ldi r24, 0x03 ; 3 + 372c: 89 83 std Y+1, r24 ; 0x01 + 372e: 8e e1 ldi r24, 0x1E ; 30 + 3730: c8 2e mov r12, r24 + 3732: d1 2c mov r13, r1 + 3734: dc 82 std Y+4, r13 ; 0x04 + 3736: cb 82 std Y+3, r12 ; 0x03 + 3738: ed 82 std Y+5, r14 ; 0x05 + 373a: fe 82 std Y+6, r15 ; 0x06 + 373c: 0f 83 std Y+7, r16 ; 0x07 + 373e: 18 87 std Y+8, r17 ; 0x08 + 3740: c8 01 movw r24, r16 + 3742: b7 01 movw r22, r14 + 3744: 0e 94 fe 1b call 0x37fc ; 0x37fc <__clzsi2> + 3748: fc 01 movw r30, r24 + 374a: 31 97 sbiw r30, 0x01 ; 1 + 374c: f7 ff sbrs r31, 7 + 374e: 3b c0 rjmp .+118 ; 0x37c6 <__floatunsisf+0xbc> + 3750: 22 27 eor r18, r18 + 3752: 33 27 eor r19, r19 + 3754: 2e 1b sub r18, r30 + 3756: 3f 0b sbc r19, r31 + 3758: 57 01 movw r10, r14 + 375a: 68 01 movw r12, r16 + 375c: 02 2e mov r0, r18 + 375e: 04 c0 rjmp .+8 ; 0x3768 <__floatunsisf+0x5e> + 3760: d6 94 lsr r13 + 3762: c7 94 ror r12 + 3764: b7 94 ror r11 + 3766: a7 94 ror r10 + 3768: 0a 94 dec r0 + 376a: d2 f7 brpl .-12 ; 0x3760 <__floatunsisf+0x56> + 376c: 40 e0 ldi r20, 0x00 ; 0 + 376e: 50 e0 ldi r21, 0x00 ; 0 + 3770: 60 e0 ldi r22, 0x00 ; 0 + 3772: 70 e0 ldi r23, 0x00 ; 0 + 3774: 81 e0 ldi r24, 0x01 ; 1 + 3776: 90 e0 ldi r25, 0x00 ; 0 + 3778: a0 e0 ldi r26, 0x00 ; 0 + 377a: b0 e0 ldi r27, 0x00 ; 0 + 377c: 04 c0 rjmp .+8 ; 0x3786 <__floatunsisf+0x7c> + 377e: 88 0f add r24, r24 + 3780: 99 1f adc r25, r25 + 3782: aa 1f adc r26, r26 + 3784: bb 1f adc r27, r27 + 3786: 2a 95 dec r18 + 3788: d2 f7 brpl .-12 ; 0x377e <__floatunsisf+0x74> + 378a: 01 97 sbiw r24, 0x01 ; 1 + 378c: a1 09 sbc r26, r1 + 378e: b1 09 sbc r27, r1 + 3790: 8e 21 and r24, r14 + 3792: 9f 21 and r25, r15 + 3794: a0 23 and r26, r16 + 3796: b1 23 and r27, r17 + 3798: 00 97 sbiw r24, 0x00 ; 0 + 379a: a1 05 cpc r26, r1 + 379c: b1 05 cpc r27, r1 + 379e: 21 f0 breq .+8 ; 0x37a8 <__floatunsisf+0x9e> + 37a0: 41 e0 ldi r20, 0x01 ; 1 + 37a2: 50 e0 ldi r21, 0x00 ; 0 + 37a4: 60 e0 ldi r22, 0x00 ; 0 + 37a6: 70 e0 ldi r23, 0x00 ; 0 + 37a8: 4a 29 or r20, r10 + 37aa: 5b 29 or r21, r11 + 37ac: 6c 29 or r22, r12 + 37ae: 7d 29 or r23, r13 + 37b0: 4d 83 std Y+5, r20 ; 0x05 + 37b2: 5e 83 std Y+6, r21 ; 0x06 + 37b4: 6f 83 std Y+7, r22 ; 0x07 + 37b6: 78 87 std Y+8, r23 ; 0x08 + 37b8: 8e e1 ldi r24, 0x1E ; 30 + 37ba: 90 e0 ldi r25, 0x00 ; 0 + 37bc: 8e 1b sub r24, r30 + 37be: 9f 0b sbc r25, r31 + 37c0: 9c 83 std Y+4, r25 ; 0x04 + 37c2: 8b 83 std Y+3, r24 ; 0x03 + 37c4: 12 c0 rjmp .+36 ; 0x37ea <__floatunsisf+0xe0> + 37c6: 30 97 sbiw r30, 0x00 ; 0 + 37c8: 81 f0 breq .+32 ; 0x37ea <__floatunsisf+0xe0> + 37ca: 0e 2e mov r0, r30 + 37cc: 04 c0 rjmp .+8 ; 0x37d6 <__floatunsisf+0xcc> + 37ce: ee 0c add r14, r14 + 37d0: ff 1c adc r15, r15 + 37d2: 00 1f adc r16, r16 + 37d4: 11 1f adc r17, r17 + 37d6: 0a 94 dec r0 + 37d8: d2 f7 brpl .-12 ; 0x37ce <__floatunsisf+0xc4> + 37da: ed 82 std Y+5, r14 ; 0x05 + 37dc: fe 82 std Y+6, r15 ; 0x06 + 37de: 0f 83 std Y+7, r16 ; 0x07 + 37e0: 18 87 std Y+8, r17 ; 0x08 + 37e2: ce 1a sub r12, r30 + 37e4: df 0a sbc r13, r31 + 37e6: dc 82 std Y+4, r13 ; 0x04 + 37e8: cb 82 std Y+3, r12 ; 0x03 + 37ea: 1a 82 std Y+2, r1 ; 0x02 + 37ec: ce 01 movw r24, r28 + 37ee: 01 96 adiw r24, 0x01 ; 1 + 37f0: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 37f4: 28 96 adiw r28, 0x08 ; 8 + 37f6: ea e0 ldi r30, 0x0A ; 10 + 37f8: 0c 94 73 1e jmp 0x3ce6 ; 0x3ce6 <__epilogue_restores__+0x10> + +000037fc <__clzsi2>: + 37fc: ef 92 push r14 + 37fe: ff 92 push r15 + 3800: 0f 93 push r16 + 3802: 1f 93 push r17 + 3804: 7b 01 movw r14, r22 + 3806: 8c 01 movw r16, r24 + 3808: 80 e0 ldi r24, 0x00 ; 0 + 380a: e8 16 cp r14, r24 + 380c: 80 e0 ldi r24, 0x00 ; 0 + 380e: f8 06 cpc r15, r24 + 3810: 81 e0 ldi r24, 0x01 ; 1 + 3812: 08 07 cpc r16, r24 + 3814: 80 e0 ldi r24, 0x00 ; 0 + 3816: 18 07 cpc r17, r24 + 3818: 88 f4 brcc .+34 ; 0x383c <__clzsi2+0x40> + 381a: 8f ef ldi r24, 0xFF ; 255 + 381c: e8 16 cp r14, r24 + 381e: f1 04 cpc r15, r1 + 3820: 01 05 cpc r16, r1 + 3822: 11 05 cpc r17, r1 + 3824: 31 f0 breq .+12 ; 0x3832 <__clzsi2+0x36> + 3826: 28 f0 brcs .+10 ; 0x3832 <__clzsi2+0x36> + 3828: 88 e0 ldi r24, 0x08 ; 8 + 382a: 90 e0 ldi r25, 0x00 ; 0 + 382c: a0 e0 ldi r26, 0x00 ; 0 + 382e: b0 e0 ldi r27, 0x00 ; 0 + 3830: 17 c0 rjmp .+46 ; 0x3860 <__clzsi2+0x64> + 3832: 80 e0 ldi r24, 0x00 ; 0 + 3834: 90 e0 ldi r25, 0x00 ; 0 + 3836: a0 e0 ldi r26, 0x00 ; 0 + 3838: b0 e0 ldi r27, 0x00 ; 0 + 383a: 12 c0 rjmp .+36 ; 0x3860 <__clzsi2+0x64> + 383c: 80 e0 ldi r24, 0x00 ; 0 + 383e: e8 16 cp r14, r24 + 3840: 80 e0 ldi r24, 0x00 ; 0 + 3842: f8 06 cpc r15, r24 + 3844: 80 e0 ldi r24, 0x00 ; 0 + 3846: 08 07 cpc r16, r24 + 3848: 81 e0 ldi r24, 0x01 ; 1 + 384a: 18 07 cpc r17, r24 + 384c: 28 f0 brcs .+10 ; 0x3858 <__clzsi2+0x5c> + 384e: 88 e1 ldi r24, 0x18 ; 24 + 3850: 90 e0 ldi r25, 0x00 ; 0 + 3852: a0 e0 ldi r26, 0x00 ; 0 + 3854: b0 e0 ldi r27, 0x00 ; 0 + 3856: 04 c0 rjmp .+8 ; 0x3860 <__clzsi2+0x64> + 3858: 80 e1 ldi r24, 0x10 ; 16 + 385a: 90 e0 ldi r25, 0x00 ; 0 + 385c: a0 e0 ldi r26, 0x00 ; 0 + 385e: b0 e0 ldi r27, 0x00 ; 0 + 3860: 20 e2 ldi r18, 0x20 ; 32 + 3862: 30 e0 ldi r19, 0x00 ; 0 + 3864: 40 e0 ldi r20, 0x00 ; 0 + 3866: 50 e0 ldi r21, 0x00 ; 0 + 3868: 28 1b sub r18, r24 + 386a: 39 0b sbc r19, r25 + 386c: 4a 0b sbc r20, r26 + 386e: 5b 0b sbc r21, r27 + 3870: 04 c0 rjmp .+8 ; 0x387a <__clzsi2+0x7e> + 3872: 16 95 lsr r17 + 3874: 07 95 ror r16 + 3876: f7 94 ror r15 + 3878: e7 94 ror r14 + 387a: 8a 95 dec r24 + 387c: d2 f7 brpl .-12 ; 0x3872 <__clzsi2+0x76> + 387e: f7 01 movw r30, r14 + 3880: e0 55 subi r30, 0x50 ; 80 + 3882: fe 4f sbci r31, 0xFE ; 254 + 3884: 80 81 ld r24, Z + 3886: 28 1b sub r18, r24 + 3888: 31 09 sbc r19, r1 + 388a: 41 09 sbc r20, r1 + 388c: 51 09 sbc r21, r1 + 388e: c9 01 movw r24, r18 + 3890: 1f 91 pop r17 + 3892: 0f 91 pop r16 + 3894: ff 90 pop r15 + 3896: ef 90 pop r14 + 3898: 08 95 ret + +0000389a <__pack_f>: + 389a: df 92 push r13 + 389c: ef 92 push r14 + 389e: ff 92 push r15 + 38a0: 0f 93 push r16 + 38a2: 1f 93 push r17 + 38a4: fc 01 movw r30, r24 + 38a6: e4 80 ldd r14, Z+4 ; 0x04 + 38a8: f5 80 ldd r15, Z+5 ; 0x05 + 38aa: 06 81 ldd r16, Z+6 ; 0x06 + 38ac: 17 81 ldd r17, Z+7 ; 0x07 + 38ae: d1 80 ldd r13, Z+1 ; 0x01 + 38b0: 80 81 ld r24, Z + 38b2: 82 30 cpi r24, 0x02 ; 2 + 38b4: 48 f4 brcc .+18 ; 0x38c8 <__pack_f+0x2e> + 38b6: 80 e0 ldi r24, 0x00 ; 0 + 38b8: 90 e0 ldi r25, 0x00 ; 0 + 38ba: a0 e1 ldi r26, 0x10 ; 16 + 38bc: b0 e0 ldi r27, 0x00 ; 0 + 38be: e8 2a or r14, r24 + 38c0: f9 2a or r15, r25 + 38c2: 0a 2b or r16, r26 + 38c4: 1b 2b or r17, r27 + 38c6: a5 c0 rjmp .+330 ; 0x3a12 <__pack_f+0x178> + 38c8: 84 30 cpi r24, 0x04 ; 4 + 38ca: 09 f4 brne .+2 ; 0x38ce <__pack_f+0x34> + 38cc: 9f c0 rjmp .+318 ; 0x3a0c <__pack_f+0x172> + 38ce: 82 30 cpi r24, 0x02 ; 2 + 38d0: 21 f4 brne .+8 ; 0x38da <__pack_f+0x40> + 38d2: ee 24 eor r14, r14 + 38d4: ff 24 eor r15, r15 + 38d6: 87 01 movw r16, r14 + 38d8: 05 c0 rjmp .+10 ; 0x38e4 <__pack_f+0x4a> + 38da: e1 14 cp r14, r1 + 38dc: f1 04 cpc r15, r1 + 38de: 01 05 cpc r16, r1 + 38e0: 11 05 cpc r17, r1 + 38e2: 19 f4 brne .+6 ; 0x38ea <__pack_f+0x50> + 38e4: e0 e0 ldi r30, 0x00 ; 0 + 38e6: f0 e0 ldi r31, 0x00 ; 0 + 38e8: 96 c0 rjmp .+300 ; 0x3a16 <__pack_f+0x17c> + 38ea: 62 81 ldd r22, Z+2 ; 0x02 + 38ec: 73 81 ldd r23, Z+3 ; 0x03 + 38ee: 9f ef ldi r25, 0xFF ; 255 + 38f0: 62 38 cpi r22, 0x82 ; 130 + 38f2: 79 07 cpc r23, r25 + 38f4: 0c f0 brlt .+2 ; 0x38f8 <__pack_f+0x5e> + 38f6: 5b c0 rjmp .+182 ; 0x39ae <__pack_f+0x114> + 38f8: 22 e8 ldi r18, 0x82 ; 130 + 38fa: 3f ef ldi r19, 0xFF ; 255 + 38fc: 26 1b sub r18, r22 + 38fe: 37 0b sbc r19, r23 + 3900: 2a 31 cpi r18, 0x1A ; 26 + 3902: 31 05 cpc r19, r1 + 3904: 2c f0 brlt .+10 ; 0x3910 <__pack_f+0x76> + 3906: 20 e0 ldi r18, 0x00 ; 0 + 3908: 30 e0 ldi r19, 0x00 ; 0 + 390a: 40 e0 ldi r20, 0x00 ; 0 + 390c: 50 e0 ldi r21, 0x00 ; 0 + 390e: 2a c0 rjmp .+84 ; 0x3964 <__pack_f+0xca> + 3910: b8 01 movw r22, r16 + 3912: a7 01 movw r20, r14 + 3914: 02 2e mov r0, r18 + 3916: 04 c0 rjmp .+8 ; 0x3920 <__pack_f+0x86> + 3918: 76 95 lsr r23 + 391a: 67 95 ror r22 + 391c: 57 95 ror r21 + 391e: 47 95 ror r20 + 3920: 0a 94 dec r0 + 3922: d2 f7 brpl .-12 ; 0x3918 <__pack_f+0x7e> + 3924: 81 e0 ldi r24, 0x01 ; 1 + 3926: 90 e0 ldi r25, 0x00 ; 0 + 3928: a0 e0 ldi r26, 0x00 ; 0 + 392a: b0 e0 ldi r27, 0x00 ; 0 + 392c: 04 c0 rjmp .+8 ; 0x3936 <__pack_f+0x9c> + 392e: 88 0f add r24, r24 + 3930: 99 1f adc r25, r25 + 3932: aa 1f adc r26, r26 + 3934: bb 1f adc r27, r27 + 3936: 2a 95 dec r18 + 3938: d2 f7 brpl .-12 ; 0x392e <__pack_f+0x94> + 393a: 01 97 sbiw r24, 0x01 ; 1 + 393c: a1 09 sbc r26, r1 + 393e: b1 09 sbc r27, r1 + 3940: 8e 21 and r24, r14 + 3942: 9f 21 and r25, r15 + 3944: a0 23 and r26, r16 + 3946: b1 23 and r27, r17 + 3948: 00 97 sbiw r24, 0x00 ; 0 + 394a: a1 05 cpc r26, r1 + 394c: b1 05 cpc r27, r1 + 394e: 21 f0 breq .+8 ; 0x3958 <__pack_f+0xbe> + 3950: 81 e0 ldi r24, 0x01 ; 1 + 3952: 90 e0 ldi r25, 0x00 ; 0 + 3954: a0 e0 ldi r26, 0x00 ; 0 + 3956: b0 e0 ldi r27, 0x00 ; 0 + 3958: 9a 01 movw r18, r20 + 395a: ab 01 movw r20, r22 + 395c: 28 2b or r18, r24 + 395e: 39 2b or r19, r25 + 3960: 4a 2b or r20, r26 + 3962: 5b 2b or r21, r27 + 3964: da 01 movw r26, r20 + 3966: c9 01 movw r24, r18 + 3968: 8f 77 andi r24, 0x7F ; 127 + 396a: 90 70 andi r25, 0x00 ; 0 + 396c: a0 70 andi r26, 0x00 ; 0 + 396e: b0 70 andi r27, 0x00 ; 0 + 3970: 80 34 cpi r24, 0x40 ; 64 + 3972: 91 05 cpc r25, r1 + 3974: a1 05 cpc r26, r1 + 3976: b1 05 cpc r27, r1 + 3978: 39 f4 brne .+14 ; 0x3988 <__pack_f+0xee> + 397a: 27 ff sbrs r18, 7 + 397c: 09 c0 rjmp .+18 ; 0x3990 <__pack_f+0xf6> + 397e: 20 5c subi r18, 0xC0 ; 192 + 3980: 3f 4f sbci r19, 0xFF ; 255 + 3982: 4f 4f sbci r20, 0xFF ; 255 + 3984: 5f 4f sbci r21, 0xFF ; 255 + 3986: 04 c0 rjmp .+8 ; 0x3990 <__pack_f+0xf6> + 3988: 21 5c subi r18, 0xC1 ; 193 + 398a: 3f 4f sbci r19, 0xFF ; 255 + 398c: 4f 4f sbci r20, 0xFF ; 255 + 398e: 5f 4f sbci r21, 0xFF ; 255 + 3990: e0 e0 ldi r30, 0x00 ; 0 + 3992: f0 e0 ldi r31, 0x00 ; 0 + 3994: 20 30 cpi r18, 0x00 ; 0 + 3996: a0 e0 ldi r26, 0x00 ; 0 + 3998: 3a 07 cpc r19, r26 + 399a: a0 e0 ldi r26, 0x00 ; 0 + 399c: 4a 07 cpc r20, r26 + 399e: a0 e4 ldi r26, 0x40 ; 64 + 39a0: 5a 07 cpc r21, r26 + 39a2: 10 f0 brcs .+4 ; 0x39a8 <__pack_f+0x10e> + 39a4: e1 e0 ldi r30, 0x01 ; 1 + 39a6: f0 e0 ldi r31, 0x00 ; 0 + 39a8: 79 01 movw r14, r18 + 39aa: 8a 01 movw r16, r20 + 39ac: 27 c0 rjmp .+78 ; 0x39fc <__pack_f+0x162> + 39ae: 60 38 cpi r22, 0x80 ; 128 + 39b0: 71 05 cpc r23, r1 + 39b2: 64 f5 brge .+88 ; 0x3a0c <__pack_f+0x172> + 39b4: fb 01 movw r30, r22 + 39b6: e1 58 subi r30, 0x81 ; 129 + 39b8: ff 4f sbci r31, 0xFF ; 255 + 39ba: d8 01 movw r26, r16 + 39bc: c7 01 movw r24, r14 + 39be: 8f 77 andi r24, 0x7F ; 127 + 39c0: 90 70 andi r25, 0x00 ; 0 + 39c2: a0 70 andi r26, 0x00 ; 0 + 39c4: b0 70 andi r27, 0x00 ; 0 + 39c6: 80 34 cpi r24, 0x40 ; 64 + 39c8: 91 05 cpc r25, r1 + 39ca: a1 05 cpc r26, r1 + 39cc: b1 05 cpc r27, r1 + 39ce: 39 f4 brne .+14 ; 0x39de <__pack_f+0x144> + 39d0: e7 fe sbrs r14, 7 + 39d2: 0d c0 rjmp .+26 ; 0x39ee <__pack_f+0x154> + 39d4: 80 e4 ldi r24, 0x40 ; 64 + 39d6: 90 e0 ldi r25, 0x00 ; 0 + 39d8: a0 e0 ldi r26, 0x00 ; 0 + 39da: b0 e0 ldi r27, 0x00 ; 0 + 39dc: 04 c0 rjmp .+8 ; 0x39e6 <__pack_f+0x14c> + 39de: 8f e3 ldi r24, 0x3F ; 63 + 39e0: 90 e0 ldi r25, 0x00 ; 0 + 39e2: a0 e0 ldi r26, 0x00 ; 0 + 39e4: b0 e0 ldi r27, 0x00 ; 0 + 39e6: e8 0e add r14, r24 + 39e8: f9 1e adc r15, r25 + 39ea: 0a 1f adc r16, r26 + 39ec: 1b 1f adc r17, r27 + 39ee: 17 ff sbrs r17, 7 + 39f0: 05 c0 rjmp .+10 ; 0x39fc <__pack_f+0x162> + 39f2: 16 95 lsr r17 + 39f4: 07 95 ror r16 + 39f6: f7 94 ror r15 + 39f8: e7 94 ror r14 + 39fa: 31 96 adiw r30, 0x01 ; 1 + 39fc: 87 e0 ldi r24, 0x07 ; 7 + 39fe: 16 95 lsr r17 + 3a00: 07 95 ror r16 + 3a02: f7 94 ror r15 + 3a04: e7 94 ror r14 + 3a06: 8a 95 dec r24 + 3a08: d1 f7 brne .-12 ; 0x39fe <__pack_f+0x164> + 3a0a: 05 c0 rjmp .+10 ; 0x3a16 <__pack_f+0x17c> + 3a0c: ee 24 eor r14, r14 + 3a0e: ff 24 eor r15, r15 + 3a10: 87 01 movw r16, r14 + 3a12: ef ef ldi r30, 0xFF ; 255 + 3a14: f0 e0 ldi r31, 0x00 ; 0 + 3a16: 6e 2f mov r22, r30 + 3a18: 67 95 ror r22 + 3a1a: 66 27 eor r22, r22 + 3a1c: 67 95 ror r22 + 3a1e: 90 2f mov r25, r16 + 3a20: 9f 77 andi r25, 0x7F ; 127 + 3a22: d7 94 ror r13 + 3a24: dd 24 eor r13, r13 + 3a26: d7 94 ror r13 + 3a28: 8e 2f mov r24, r30 + 3a2a: 86 95 lsr r24 + 3a2c: 49 2f mov r20, r25 + 3a2e: 46 2b or r20, r22 + 3a30: 58 2f mov r21, r24 + 3a32: 5d 29 or r21, r13 + 3a34: b7 01 movw r22, r14 + 3a36: ca 01 movw r24, r20 + 3a38: 1f 91 pop r17 + 3a3a: 0f 91 pop r16 + 3a3c: ff 90 pop r15 + 3a3e: ef 90 pop r14 + 3a40: df 90 pop r13 + 3a42: 08 95 ret + +00003a44 <__unpack_f>: + 3a44: fc 01 movw r30, r24 + 3a46: db 01 movw r26, r22 + 3a48: 40 81 ld r20, Z + 3a4a: 51 81 ldd r21, Z+1 ; 0x01 + 3a4c: 22 81 ldd r18, Z+2 ; 0x02 + 3a4e: 62 2f mov r22, r18 + 3a50: 6f 77 andi r22, 0x7F ; 127 + 3a52: 70 e0 ldi r23, 0x00 ; 0 + 3a54: 22 1f adc r18, r18 + 3a56: 22 27 eor r18, r18 + 3a58: 22 1f adc r18, r18 + 3a5a: 93 81 ldd r25, Z+3 ; 0x03 + 3a5c: 89 2f mov r24, r25 + 3a5e: 88 0f add r24, r24 + 3a60: 82 2b or r24, r18 + 3a62: 28 2f mov r18, r24 + 3a64: 30 e0 ldi r19, 0x00 ; 0 + 3a66: 99 1f adc r25, r25 + 3a68: 99 27 eor r25, r25 + 3a6a: 99 1f adc r25, r25 + 3a6c: 11 96 adiw r26, 0x01 ; 1 + 3a6e: 9c 93 st X, r25 + 3a70: 11 97 sbiw r26, 0x01 ; 1 + 3a72: 21 15 cp r18, r1 + 3a74: 31 05 cpc r19, r1 + 3a76: a9 f5 brne .+106 ; 0x3ae2 <__unpack_f+0x9e> + 3a78: 41 15 cp r20, r1 + 3a7a: 51 05 cpc r21, r1 + 3a7c: 61 05 cpc r22, r1 + 3a7e: 71 05 cpc r23, r1 + 3a80: 11 f4 brne .+4 ; 0x3a86 <__unpack_f+0x42> + 3a82: 82 e0 ldi r24, 0x02 ; 2 + 3a84: 37 c0 rjmp .+110 ; 0x3af4 <__unpack_f+0xb0> + 3a86: 82 e8 ldi r24, 0x82 ; 130 + 3a88: 9f ef ldi r25, 0xFF ; 255 + 3a8a: 13 96 adiw r26, 0x03 ; 3 + 3a8c: 9c 93 st X, r25 + 3a8e: 8e 93 st -X, r24 + 3a90: 12 97 sbiw r26, 0x02 ; 2 + 3a92: 9a 01 movw r18, r20 + 3a94: ab 01 movw r20, r22 + 3a96: 67 e0 ldi r22, 0x07 ; 7 + 3a98: 22 0f add r18, r18 + 3a9a: 33 1f adc r19, r19 + 3a9c: 44 1f adc r20, r20 + 3a9e: 55 1f adc r21, r21 + 3aa0: 6a 95 dec r22 + 3aa2: d1 f7 brne .-12 ; 0x3a98 <__unpack_f+0x54> + 3aa4: 83 e0 ldi r24, 0x03 ; 3 + 3aa6: 8c 93 st X, r24 + 3aa8: 0d c0 rjmp .+26 ; 0x3ac4 <__unpack_f+0x80> + 3aaa: 22 0f add r18, r18 + 3aac: 33 1f adc r19, r19 + 3aae: 44 1f adc r20, r20 + 3ab0: 55 1f adc r21, r21 + 3ab2: 12 96 adiw r26, 0x02 ; 2 + 3ab4: 8d 91 ld r24, X+ + 3ab6: 9c 91 ld r25, X + 3ab8: 13 97 sbiw r26, 0x03 ; 3 + 3aba: 01 97 sbiw r24, 0x01 ; 1 + 3abc: 13 96 adiw r26, 0x03 ; 3 + 3abe: 9c 93 st X, r25 + 3ac0: 8e 93 st -X, r24 + 3ac2: 12 97 sbiw r26, 0x02 ; 2 + 3ac4: 20 30 cpi r18, 0x00 ; 0 + 3ac6: 80 e0 ldi r24, 0x00 ; 0 + 3ac8: 38 07 cpc r19, r24 + 3aca: 80 e0 ldi r24, 0x00 ; 0 + 3acc: 48 07 cpc r20, r24 + 3ace: 80 e4 ldi r24, 0x40 ; 64 + 3ad0: 58 07 cpc r21, r24 + 3ad2: 58 f3 brcs .-42 ; 0x3aaa <__unpack_f+0x66> + 3ad4: 14 96 adiw r26, 0x04 ; 4 + 3ad6: 2d 93 st X+, r18 + 3ad8: 3d 93 st X+, r19 + 3ada: 4d 93 st X+, r20 + 3adc: 5c 93 st X, r21 + 3ade: 17 97 sbiw r26, 0x07 ; 7 + 3ae0: 08 95 ret + 3ae2: 2f 3f cpi r18, 0xFF ; 255 + 3ae4: 31 05 cpc r19, r1 + 3ae6: 79 f4 brne .+30 ; 0x3b06 <__unpack_f+0xc2> + 3ae8: 41 15 cp r20, r1 + 3aea: 51 05 cpc r21, r1 + 3aec: 61 05 cpc r22, r1 + 3aee: 71 05 cpc r23, r1 + 3af0: 19 f4 brne .+6 ; 0x3af8 <__unpack_f+0xb4> + 3af2: 84 e0 ldi r24, 0x04 ; 4 + 3af4: 8c 93 st X, r24 + 3af6: 08 95 ret + 3af8: 64 ff sbrs r22, 4 + 3afa: 03 c0 rjmp .+6 ; 0x3b02 <__unpack_f+0xbe> + 3afc: 81 e0 ldi r24, 0x01 ; 1 + 3afe: 8c 93 st X, r24 + 3b00: 12 c0 rjmp .+36 ; 0x3b26 <__unpack_f+0xe2> + 3b02: 1c 92 st X, r1 + 3b04: 10 c0 rjmp .+32 ; 0x3b26 <__unpack_f+0xe2> + 3b06: 2f 57 subi r18, 0x7F ; 127 + 3b08: 30 40 sbci r19, 0x00 ; 0 + 3b0a: 13 96 adiw r26, 0x03 ; 3 + 3b0c: 3c 93 st X, r19 + 3b0e: 2e 93 st -X, r18 + 3b10: 12 97 sbiw r26, 0x02 ; 2 + 3b12: 83 e0 ldi r24, 0x03 ; 3 + 3b14: 8c 93 st X, r24 + 3b16: 87 e0 ldi r24, 0x07 ; 7 + 3b18: 44 0f add r20, r20 + 3b1a: 55 1f adc r21, r21 + 3b1c: 66 1f adc r22, r22 + 3b1e: 77 1f adc r23, r23 + 3b20: 8a 95 dec r24 + 3b22: d1 f7 brne .-12 ; 0x3b18 <__unpack_f+0xd4> + 3b24: 70 64 ori r23, 0x40 ; 64 + 3b26: 14 96 adiw r26, 0x04 ; 4 + 3b28: 4d 93 st X+, r20 + 3b2a: 5d 93 st X+, r21 + 3b2c: 6d 93 st X+, r22 + 3b2e: 7c 93 st X, r23 + 3b30: 17 97 sbiw r26, 0x07 ; 7 + 3b32: 08 95 ret + +00003b34 <__fpcmp_parts_f>: + 3b34: 1f 93 push r17 + 3b36: dc 01 movw r26, r24 + 3b38: fb 01 movw r30, r22 + 3b3a: 9c 91 ld r25, X + 3b3c: 92 30 cpi r25, 0x02 ; 2 + 3b3e: 08 f4 brcc .+2 ; 0x3b42 <__fpcmp_parts_f+0xe> + 3b40: 47 c0 rjmp .+142 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3b42: 80 81 ld r24, Z + 3b44: 82 30 cpi r24, 0x02 ; 2 + 3b46: 08 f4 brcc .+2 ; 0x3b4a <__fpcmp_parts_f+0x16> + 3b48: 43 c0 rjmp .+134 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3b4a: 94 30 cpi r25, 0x04 ; 4 + 3b4c: 51 f4 brne .+20 ; 0x3b62 <__fpcmp_parts_f+0x2e> + 3b4e: 11 96 adiw r26, 0x01 ; 1 + 3b50: 1c 91 ld r17, X + 3b52: 84 30 cpi r24, 0x04 ; 4 + 3b54: 99 f5 brne .+102 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b56: 81 81 ldd r24, Z+1 ; 0x01 + 3b58: 68 2f mov r22, r24 + 3b5a: 70 e0 ldi r23, 0x00 ; 0 + 3b5c: 61 1b sub r22, r17 + 3b5e: 71 09 sbc r23, r1 + 3b60: 3f c0 rjmp .+126 ; 0x3be0 <__fpcmp_parts_f+0xac> + 3b62: 84 30 cpi r24, 0x04 ; 4 + 3b64: 21 f0 breq .+8 ; 0x3b6e <__fpcmp_parts_f+0x3a> + 3b66: 92 30 cpi r25, 0x02 ; 2 + 3b68: 31 f4 brne .+12 ; 0x3b76 <__fpcmp_parts_f+0x42> + 3b6a: 82 30 cpi r24, 0x02 ; 2 + 3b6c: b9 f1 breq .+110 ; 0x3bdc <__fpcmp_parts_f+0xa8> + 3b6e: 81 81 ldd r24, Z+1 ; 0x01 + 3b70: 88 23 and r24, r24 + 3b72: 89 f1 breq .+98 ; 0x3bd6 <__fpcmp_parts_f+0xa2> + 3b74: 2d c0 rjmp .+90 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3b76: 11 96 adiw r26, 0x01 ; 1 + 3b78: 1c 91 ld r17, X + 3b7a: 11 97 sbiw r26, 0x01 ; 1 + 3b7c: 82 30 cpi r24, 0x02 ; 2 + 3b7e: f1 f0 breq .+60 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b80: 81 81 ldd r24, Z+1 ; 0x01 + 3b82: 18 17 cp r17, r24 + 3b84: d9 f4 brne .+54 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b86: 12 96 adiw r26, 0x02 ; 2 + 3b88: 2d 91 ld r18, X+ + 3b8a: 3c 91 ld r19, X + 3b8c: 13 97 sbiw r26, 0x03 ; 3 + 3b8e: 82 81 ldd r24, Z+2 ; 0x02 + 3b90: 93 81 ldd r25, Z+3 ; 0x03 + 3b92: 82 17 cp r24, r18 + 3b94: 93 07 cpc r25, r19 + 3b96: 94 f0 brlt .+36 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b98: 28 17 cp r18, r24 + 3b9a: 39 07 cpc r19, r25 + 3b9c: bc f0 brlt .+46 ; 0x3bcc <__fpcmp_parts_f+0x98> + 3b9e: 14 96 adiw r26, 0x04 ; 4 + 3ba0: 8d 91 ld r24, X+ + 3ba2: 9d 91 ld r25, X+ + 3ba4: 0d 90 ld r0, X+ + 3ba6: bc 91 ld r27, X + 3ba8: a0 2d mov r26, r0 + 3baa: 24 81 ldd r18, Z+4 ; 0x04 + 3bac: 35 81 ldd r19, Z+5 ; 0x05 + 3bae: 46 81 ldd r20, Z+6 ; 0x06 + 3bb0: 57 81 ldd r21, Z+7 ; 0x07 + 3bb2: 28 17 cp r18, r24 + 3bb4: 39 07 cpc r19, r25 + 3bb6: 4a 07 cpc r20, r26 + 3bb8: 5b 07 cpc r21, r27 + 3bba: 18 f4 brcc .+6 ; 0x3bc2 <__fpcmp_parts_f+0x8e> + 3bbc: 11 23 and r17, r17 + 3bbe: 41 f0 breq .+16 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3bc0: 0a c0 rjmp .+20 ; 0x3bd6 <__fpcmp_parts_f+0xa2> + 3bc2: 82 17 cp r24, r18 + 3bc4: 93 07 cpc r25, r19 + 3bc6: a4 07 cpc r26, r20 + 3bc8: b5 07 cpc r27, r21 + 3bca: 40 f4 brcc .+16 ; 0x3bdc <__fpcmp_parts_f+0xa8> + 3bcc: 11 23 and r17, r17 + 3bce: 19 f0 breq .+6 ; 0x3bd6 <__fpcmp_parts_f+0xa2> + 3bd0: 61 e0 ldi r22, 0x01 ; 1 + 3bd2: 70 e0 ldi r23, 0x00 ; 0 + 3bd4: 05 c0 rjmp .+10 ; 0x3be0 <__fpcmp_parts_f+0xac> + 3bd6: 6f ef ldi r22, 0xFF ; 255 + 3bd8: 7f ef ldi r23, 0xFF ; 255 + 3bda: 02 c0 rjmp .+4 ; 0x3be0 <__fpcmp_parts_f+0xac> + 3bdc: 60 e0 ldi r22, 0x00 ; 0 + 3bde: 70 e0 ldi r23, 0x00 ; 0 + 3be0: cb 01 movw r24, r22 + 3be2: 1f 91 pop r17 + 3be4: 08 95 ret + +00003be6 <__mulsi3>: + 3be6: 62 9f mul r22, r18 + 3be8: d0 01 movw r26, r0 + 3bea: 73 9f mul r23, r19 + 3bec: f0 01 movw r30, r0 + 3bee: 82 9f mul r24, r18 + 3bf0: e0 0d add r30, r0 + 3bf2: f1 1d adc r31, r1 + 3bf4: 64 9f mul r22, r20 + 3bf6: e0 0d add r30, r0 + 3bf8: f1 1d adc r31, r1 + 3bfa: 92 9f mul r25, r18 + 3bfc: f0 0d add r31, r0 + 3bfe: 83 9f mul r24, r19 + 3c00: f0 0d add r31, r0 + 3c02: 74 9f mul r23, r20 + 3c04: f0 0d add r31, r0 + 3c06: 65 9f mul r22, r21 + 3c08: f0 0d add r31, r0 + 3c0a: 99 27 eor r25, r25 + 3c0c: 72 9f mul r23, r18 + 3c0e: b0 0d add r27, r0 + 3c10: e1 1d adc r30, r1 + 3c12: f9 1f adc r31, r25 + 3c14: 63 9f mul r22, r19 + 3c16: b0 0d add r27, r0 + 3c18: e1 1d adc r30, r1 + 3c1a: f9 1f adc r31, r25 + 3c1c: bd 01 movw r22, r26 + 3c1e: cf 01 movw r24, r30 + 3c20: 11 24 eor r1, r1 + 3c22: 08 95 ret + +00003c24 <__udivmodsi4>: + 3c24: a1 e2 ldi r26, 0x21 ; 33 + 3c26: 1a 2e mov r1, r26 + 3c28: aa 1b sub r26, r26 + 3c2a: bb 1b sub r27, r27 + 3c2c: fd 01 movw r30, r26 + 3c2e: 0d c0 rjmp .+26 ; 0x3c4a <__udivmodsi4_ep> + +00003c30 <__udivmodsi4_loop>: + 3c30: aa 1f adc r26, r26 + 3c32: bb 1f adc r27, r27 + 3c34: ee 1f adc r30, r30 + 3c36: ff 1f adc r31, r31 + 3c38: a2 17 cp r26, r18 + 3c3a: b3 07 cpc r27, r19 + 3c3c: e4 07 cpc r30, r20 + 3c3e: f5 07 cpc r31, r21 + 3c40: 20 f0 brcs .+8 ; 0x3c4a <__udivmodsi4_ep> + 3c42: a2 1b sub r26, r18 + 3c44: b3 0b sbc r27, r19 + 3c46: e4 0b sbc r30, r20 + 3c48: f5 0b sbc r31, r21 + +00003c4a <__udivmodsi4_ep>: + 3c4a: 66 1f adc r22, r22 + 3c4c: 77 1f adc r23, r23 + 3c4e: 88 1f adc r24, r24 + 3c50: 99 1f adc r25, r25 + 3c52: 1a 94 dec r1 + 3c54: 69 f7 brne .-38 ; 0x3c30 <__udivmodsi4_loop> + 3c56: 60 95 com r22 + 3c58: 70 95 com r23 + 3c5a: 80 95 com r24 + 3c5c: 90 95 com r25 + 3c5e: 9b 01 movw r18, r22 + 3c60: ac 01 movw r20, r24 + 3c62: bd 01 movw r22, r26 + 3c64: cf 01 movw r24, r30 + 3c66: 08 95 ret + +00003c68 <__divmodsi4>: + 3c68: 97 fb bst r25, 7 + 3c6a: 09 2e mov r0, r25 + 3c6c: 05 26 eor r0, r21 + 3c6e: 0e d0 rcall .+28 ; 0x3c8c <__divmodsi4_neg1> + 3c70: 57 fd sbrc r21, 7 + 3c72: 04 d0 rcall .+8 ; 0x3c7c <__divmodsi4_neg2> + 3c74: d7 df rcall .-82 ; 0x3c24 <__udivmodsi4> + 3c76: 0a d0 rcall .+20 ; 0x3c8c <__divmodsi4_neg1> + 3c78: 00 1c adc r0, r0 + 3c7a: 38 f4 brcc .+14 ; 0x3c8a <__divmodsi4_exit> + +00003c7c <__divmodsi4_neg2>: + 3c7c: 50 95 com r21 + 3c7e: 40 95 com r20 + 3c80: 30 95 com r19 + 3c82: 21 95 neg r18 + 3c84: 3f 4f sbci r19, 0xFF ; 255 + 3c86: 4f 4f sbci r20, 0xFF ; 255 + 3c88: 5f 4f sbci r21, 0xFF ; 255 + +00003c8a <__divmodsi4_exit>: + 3c8a: 08 95 ret + +00003c8c <__divmodsi4_neg1>: + 3c8c: f6 f7 brtc .-4 ; 0x3c8a <__divmodsi4_exit> + 3c8e: 90 95 com r25 + 3c90: 80 95 com r24 + 3c92: 70 95 com r23 + 3c94: 61 95 neg r22 + 3c96: 7f 4f sbci r23, 0xFF ; 255 + 3c98: 8f 4f sbci r24, 0xFF ; 255 + 3c9a: 9f 4f sbci r25, 0xFF ; 255 + 3c9c: 08 95 ret + +00003c9e <__prologue_saves__>: + 3c9e: 2f 92 push r2 + 3ca0: 3f 92 push r3 + 3ca2: 4f 92 push r4 + 3ca4: 5f 92 push r5 + 3ca6: 6f 92 push r6 + 3ca8: 7f 92 push r7 + 3caa: 8f 92 push r8 + 3cac: 9f 92 push r9 + 3cae: af 92 push r10 + 3cb0: bf 92 push r11 + 3cb2: cf 92 push r12 + 3cb4: df 92 push r13 + 3cb6: ef 92 push r14 + 3cb8: ff 92 push r15 + 3cba: 0f 93 push r16 + 3cbc: 1f 93 push r17 + 3cbe: cf 93 push r28 + 3cc0: df 93 push r29 + 3cc2: cd b7 in r28, 0x3d ; 61 + 3cc4: de b7 in r29, 0x3e ; 62 + 3cc6: ca 1b sub r28, r26 + 3cc8: db 0b sbc r29, r27 + 3cca: 0f b6 in r0, 0x3f ; 63 + 3ccc: f8 94 cli + 3cce: de bf out 0x3e, r29 ; 62 + 3cd0: 0f be out 0x3f, r0 ; 63 + 3cd2: cd bf out 0x3d, r28 ; 61 + 3cd4: 09 94 ijmp + +00003cd6 <__epilogue_restores__>: + 3cd6: 2a 88 ldd r2, Y+18 ; 0x12 + 3cd8: 39 88 ldd r3, Y+17 ; 0x11 + 3cda: 48 88 ldd r4, Y+16 ; 0x10 + 3cdc: 5f 84 ldd r5, Y+15 ; 0x0f + 3cde: 6e 84 ldd r6, Y+14 ; 0x0e + 3ce0: 7d 84 ldd r7, Y+13 ; 0x0d + 3ce2: 8c 84 ldd r8, Y+12 ; 0x0c + 3ce4: 9b 84 ldd r9, Y+11 ; 0x0b + 3ce6: aa 84 ldd r10, Y+10 ; 0x0a + 3ce8: b9 84 ldd r11, Y+9 ; 0x09 + 3cea: c8 84 ldd r12, Y+8 ; 0x08 + 3cec: df 80 ldd r13, Y+7 ; 0x07 + 3cee: ee 80 ldd r14, Y+6 ; 0x06 + 3cf0: fd 80 ldd r15, Y+5 ; 0x05 + 3cf2: 0c 81 ldd r16, Y+4 ; 0x04 + 3cf4: 1b 81 ldd r17, Y+3 ; 0x03 + 3cf6: aa 81 ldd r26, Y+2 ; 0x02 + 3cf8: b9 81 ldd r27, Y+1 ; 0x01 + 3cfa: ce 0f add r28, r30 + 3cfc: d1 1d adc r29, r1 + 3cfe: 0f b6 in r0, 0x3f ; 63 + 3d00: f8 94 cli + 3d02: de bf out 0x3e, r29 ; 62 + 3d04: 0f be out 0x3f, r0 ; 63 + 3d06: cd bf out 0x3d, r28 ; 61 + 3d08: ed 01 movw r28, r26 + 3d0a: 08 95 ret + +00003d0c <__tablejump2__>: + 3d0c: ee 0f add r30, r30 + 3d0e: ff 1f adc r31, r31 + +00003d10 <__tablejump__>: + 3d10: 05 90 lpm r0, Z+ + 3d12: f4 91 lpm r31, Z+ + 3d14: e0 2d mov r30, r0 + 3d16: 09 94 ijmp + +00003d18 <malloc>: + 3d18: cf 93 push r28 + 3d1a: df 93 push r29 + 3d1c: bc 01 movw r22, r24 + 3d1e: 82 30 cpi r24, 0x02 ; 2 + 3d20: 91 05 cpc r25, r1 + 3d22: 10 f4 brcc .+4 ; 0x3d28 <malloc+0x10> + 3d24: 62 e0 ldi r22, 0x02 ; 2 + 3d26: 70 e0 ldi r23, 0x00 ; 0 + 3d28: a0 91 90 03 lds r26, 0x0390 + 3d2c: b0 91 91 03 lds r27, 0x0391 + 3d30: ed 01 movw r28, r26 + 3d32: e0 e0 ldi r30, 0x00 ; 0 + 3d34: f0 e0 ldi r31, 0x00 ; 0 + 3d36: 40 e0 ldi r20, 0x00 ; 0 + 3d38: 50 e0 ldi r21, 0x00 ; 0 + 3d3a: 21 c0 rjmp .+66 ; 0x3d7e <malloc+0x66> + 3d3c: 88 81 ld r24, Y + 3d3e: 99 81 ldd r25, Y+1 ; 0x01 + 3d40: 86 17 cp r24, r22 + 3d42: 97 07 cpc r25, r23 + 3d44: 69 f4 brne .+26 ; 0x3d60 <malloc+0x48> + 3d46: 8a 81 ldd r24, Y+2 ; 0x02 + 3d48: 9b 81 ldd r25, Y+3 ; 0x03 + 3d4a: 30 97 sbiw r30, 0x00 ; 0 + 3d4c: 19 f0 breq .+6 ; 0x3d54 <malloc+0x3c> + 3d4e: 93 83 std Z+3, r25 ; 0x03 + 3d50: 82 83 std Z+2, r24 ; 0x02 + 3d52: 04 c0 rjmp .+8 ; 0x3d5c <malloc+0x44> + 3d54: 90 93 91 03 sts 0x0391, r25 + 3d58: 80 93 90 03 sts 0x0390, r24 + 3d5c: fe 01 movw r30, r28 + 3d5e: 34 c0 rjmp .+104 ; 0x3dc8 <malloc+0xb0> + 3d60: 68 17 cp r22, r24 + 3d62: 79 07 cpc r23, r25 + 3d64: 38 f4 brcc .+14 ; 0x3d74 <malloc+0x5c> + 3d66: 41 15 cp r20, r1 + 3d68: 51 05 cpc r21, r1 + 3d6a: 19 f0 breq .+6 ; 0x3d72 <malloc+0x5a> + 3d6c: 84 17 cp r24, r20 + 3d6e: 95 07 cpc r25, r21 + 3d70: 08 f4 brcc .+2 ; 0x3d74 <malloc+0x5c> + 3d72: ac 01 movw r20, r24 + 3d74: fe 01 movw r30, r28 + 3d76: 8a 81 ldd r24, Y+2 ; 0x02 + 3d78: 9b 81 ldd r25, Y+3 ; 0x03 + 3d7a: 9c 01 movw r18, r24 + 3d7c: e9 01 movw r28, r18 + 3d7e: 20 97 sbiw r28, 0x00 ; 0 + 3d80: e9 f6 brne .-70 ; 0x3d3c <malloc+0x24> + 3d82: 41 15 cp r20, r1 + 3d84: 51 05 cpc r21, r1 + 3d86: a9 f1 breq .+106 ; 0x3df2 <malloc+0xda> + 3d88: ca 01 movw r24, r20 + 3d8a: 86 1b sub r24, r22 + 3d8c: 97 0b sbc r25, r23 + 3d8e: 04 97 sbiw r24, 0x04 ; 4 + 3d90: 08 f4 brcc .+2 ; 0x3d94 <malloc+0x7c> + 3d92: ba 01 movw r22, r20 + 3d94: e0 e0 ldi r30, 0x00 ; 0 + 3d96: f0 e0 ldi r31, 0x00 ; 0 + 3d98: 2a c0 rjmp .+84 ; 0x3dee <malloc+0xd6> + 3d9a: 8d 91 ld r24, X+ + 3d9c: 9c 91 ld r25, X + 3d9e: 11 97 sbiw r26, 0x01 ; 1 + 3da0: 84 17 cp r24, r20 + 3da2: 95 07 cpc r25, r21 + 3da4: f9 f4 brne .+62 ; 0x3de4 <malloc+0xcc> + 3da6: 64 17 cp r22, r20 + 3da8: 75 07 cpc r23, r21 + 3daa: 81 f4 brne .+32 ; 0x3dcc <malloc+0xb4> + 3dac: 12 96 adiw r26, 0x02 ; 2 + 3dae: 8d 91 ld r24, X+ + 3db0: 9c 91 ld r25, X + 3db2: 13 97 sbiw r26, 0x03 ; 3 + 3db4: 30 97 sbiw r30, 0x00 ; 0 + 3db6: 19 f0 breq .+6 ; 0x3dbe <malloc+0xa6> + 3db8: 93 83 std Z+3, r25 ; 0x03 + 3dba: 82 83 std Z+2, r24 ; 0x02 + 3dbc: 04 c0 rjmp .+8 ; 0x3dc6 <malloc+0xae> + 3dbe: 90 93 91 03 sts 0x0391, r25 + 3dc2: 80 93 90 03 sts 0x0390, r24 + 3dc6: fd 01 movw r30, r26 + 3dc8: 32 96 adiw r30, 0x02 ; 2 + 3dca: 4f c0 rjmp .+158 ; 0x3e6a <malloc+0x152> + 3dcc: ca 01 movw r24, r20 + 3dce: 86 1b sub r24, r22 + 3dd0: 97 0b sbc r25, r23 + 3dd2: fd 01 movw r30, r26 + 3dd4: e8 0f add r30, r24 + 3dd6: f9 1f adc r31, r25 + 3dd8: 61 93 st Z+, r22 + 3dda: 71 93 st Z+, r23 + 3ddc: 02 97 sbiw r24, 0x02 ; 2 + 3dde: 8d 93 st X+, r24 + 3de0: 9c 93 st X, r25 + 3de2: 43 c0 rjmp .+134 ; 0x3e6a <malloc+0x152> + 3de4: fd 01 movw r30, r26 + 3de6: 82 81 ldd r24, Z+2 ; 0x02 + 3de8: 93 81 ldd r25, Z+3 ; 0x03 + 3dea: 9c 01 movw r18, r24 + 3dec: d9 01 movw r26, r18 + 3dee: 10 97 sbiw r26, 0x00 ; 0 + 3df0: a1 f6 brne .-88 ; 0x3d9a <malloc+0x82> + 3df2: 80 91 8e 03 lds r24, 0x038E + 3df6: 90 91 8f 03 lds r25, 0x038F + 3dfa: 89 2b or r24, r25 + 3dfc: 41 f4 brne .+16 ; 0x3e0e <malloc+0xf6> + 3dfe: 80 91 b2 02 lds r24, 0x02B2 + 3e02: 90 91 b3 02 lds r25, 0x02B3 + 3e06: 90 93 8f 03 sts 0x038F, r25 + 3e0a: 80 93 8e 03 sts 0x038E, r24 + 3e0e: 40 91 b4 02 lds r20, 0x02B4 + 3e12: 50 91 b5 02 lds r21, 0x02B5 + 3e16: 41 15 cp r20, r1 + 3e18: 51 05 cpc r21, r1 + 3e1a: 41 f4 brne .+16 ; 0x3e2c <malloc+0x114> + 3e1c: 4d b7 in r20, 0x3d ; 61 + 3e1e: 5e b7 in r21, 0x3e ; 62 + 3e20: 80 91 b0 02 lds r24, 0x02B0 + 3e24: 90 91 b1 02 lds r25, 0x02B1 + 3e28: 48 1b sub r20, r24 + 3e2a: 59 0b sbc r21, r25 + 3e2c: 20 91 8e 03 lds r18, 0x038E + 3e30: 30 91 8f 03 lds r19, 0x038F + 3e34: 24 17 cp r18, r20 + 3e36: 35 07 cpc r19, r21 + 3e38: b0 f4 brcc .+44 ; 0x3e66 <malloc+0x14e> + 3e3a: ca 01 movw r24, r20 + 3e3c: 82 1b sub r24, r18 + 3e3e: 93 0b sbc r25, r19 + 3e40: 86 17 cp r24, r22 + 3e42: 97 07 cpc r25, r23 + 3e44: 80 f0 brcs .+32 ; 0x3e66 <malloc+0x14e> + 3e46: ab 01 movw r20, r22 + 3e48: 4e 5f subi r20, 0xFE ; 254 + 3e4a: 5f 4f sbci r21, 0xFF ; 255 + 3e4c: 84 17 cp r24, r20 + 3e4e: 95 07 cpc r25, r21 + 3e50: 50 f0 brcs .+20 ; 0x3e66 <malloc+0x14e> + 3e52: 42 0f add r20, r18 + 3e54: 53 1f adc r21, r19 + 3e56: 50 93 8f 03 sts 0x038F, r21 + 3e5a: 40 93 8e 03 sts 0x038E, r20 + 3e5e: f9 01 movw r30, r18 + 3e60: 61 93 st Z+, r22 + 3e62: 71 93 st Z+, r23 + 3e64: 02 c0 rjmp .+4 ; 0x3e6a <malloc+0x152> + 3e66: e0 e0 ldi r30, 0x00 ; 0 + 3e68: f0 e0 ldi r31, 0x00 ; 0 + 3e6a: cf 01 movw r24, r30 + 3e6c: df 91 pop r29 + 3e6e: cf 91 pop r28 + 3e70: 08 95 ret + +00003e72 <free>: + 3e72: cf 93 push r28 + 3e74: df 93 push r29 + 3e76: 00 97 sbiw r24, 0x00 ; 0 + 3e78: 09 f4 brne .+2 ; 0x3e7c <free+0xa> + 3e7a: 50 c0 rjmp .+160 ; 0x3f1c <free+0xaa> + 3e7c: ec 01 movw r28, r24 + 3e7e: 22 97 sbiw r28, 0x02 ; 2 + 3e80: 1b 82 std Y+3, r1 ; 0x03 + 3e82: 1a 82 std Y+2, r1 ; 0x02 + 3e84: a0 91 90 03 lds r26, 0x0390 + 3e88: b0 91 91 03 lds r27, 0x0391 + 3e8c: 10 97 sbiw r26, 0x00 ; 0 + 3e8e: 09 f1 breq .+66 ; 0x3ed2 <free+0x60> + 3e90: 40 e0 ldi r20, 0x00 ; 0 + 3e92: 50 e0 ldi r21, 0x00 ; 0 + 3e94: ac 17 cp r26, r28 + 3e96: bd 07 cpc r27, r29 + 3e98: 08 f1 brcs .+66 ; 0x3edc <free+0x6a> + 3e9a: bb 83 std Y+3, r27 ; 0x03 + 3e9c: aa 83 std Y+2, r26 ; 0x02 + 3e9e: fe 01 movw r30, r28 + 3ea0: 21 91 ld r18, Z+ + 3ea2: 31 91 ld r19, Z+ + 3ea4: e2 0f add r30, r18 + 3ea6: f3 1f adc r31, r19 + 3ea8: ae 17 cp r26, r30 + 3eaa: bf 07 cpc r27, r31 + 3eac: 79 f4 brne .+30 ; 0x3ecc <free+0x5a> + 3eae: 8d 91 ld r24, X+ + 3eb0: 9c 91 ld r25, X + 3eb2: 11 97 sbiw r26, 0x01 ; 1 + 3eb4: 28 0f add r18, r24 + 3eb6: 39 1f adc r19, r25 + 3eb8: 2e 5f subi r18, 0xFE ; 254 + 3eba: 3f 4f sbci r19, 0xFF ; 255 + 3ebc: 39 83 std Y+1, r19 ; 0x01 + 3ebe: 28 83 st Y, r18 + 3ec0: 12 96 adiw r26, 0x02 ; 2 + 3ec2: 8d 91 ld r24, X+ + 3ec4: 9c 91 ld r25, X + 3ec6: 13 97 sbiw r26, 0x03 ; 3 + 3ec8: 9b 83 std Y+3, r25 ; 0x03 + 3eca: 8a 83 std Y+2, r24 ; 0x02 + 3ecc: 41 15 cp r20, r1 + 3ece: 51 05 cpc r21, r1 + 3ed0: 71 f4 brne .+28 ; 0x3eee <free+0x7c> + 3ed2: d0 93 91 03 sts 0x0391, r29 + 3ed6: c0 93 90 03 sts 0x0390, r28 + 3eda: 20 c0 rjmp .+64 ; 0x3f1c <free+0xaa> + 3edc: 12 96 adiw r26, 0x02 ; 2 + 3ede: 8d 91 ld r24, X+ + 3ee0: 9c 91 ld r25, X + 3ee2: 13 97 sbiw r26, 0x03 ; 3 + 3ee4: ad 01 movw r20, r26 + 3ee6: 00 97 sbiw r24, 0x00 ; 0 + 3ee8: 11 f0 breq .+4 ; 0x3eee <free+0x7c> + 3eea: dc 01 movw r26, r24 + 3eec: d3 cf rjmp .-90 ; 0x3e94 <free+0x22> + 3eee: fa 01 movw r30, r20 + 3ef0: d3 83 std Z+3, r29 ; 0x03 + 3ef2: c2 83 std Z+2, r28 ; 0x02 + 3ef4: 21 91 ld r18, Z+ + 3ef6: 31 91 ld r19, Z+ + 3ef8: e2 0f add r30, r18 + 3efa: f3 1f adc r31, r19 + 3efc: ce 17 cp r28, r30 + 3efe: df 07 cpc r29, r31 + 3f00: 69 f4 brne .+26 ; 0x3f1c <free+0xaa> + 3f02: 88 81 ld r24, Y + 3f04: 99 81 ldd r25, Y+1 ; 0x01 + 3f06: 28 0f add r18, r24 + 3f08: 39 1f adc r19, r25 + 3f0a: 2e 5f subi r18, 0xFE ; 254 + 3f0c: 3f 4f sbci r19, 0xFF ; 255 + 3f0e: fa 01 movw r30, r20 + 3f10: 31 83 std Z+1, r19 ; 0x01 + 3f12: 20 83 st Z, r18 + 3f14: 8a 81 ldd r24, Y+2 ; 0x02 + 3f16: 9b 81 ldd r25, Y+3 ; 0x03 + 3f18: 93 83 std Z+3, r25 ; 0x03 + 3f1a: 82 83 std Z+2, r24 ; 0x02 + 3f1c: df 91 pop r29 + 3f1e: cf 91 pop r28 + 3f20: 08 95 ret + +00003f22 <do_random>: + 3f22: a0 e0 ldi r26, 0x00 ; 0 + 3f24: b0 e0 ldi r27, 0x00 ; 0 + 3f26: e7 e9 ldi r30, 0x97 ; 151 + 3f28: ff e1 ldi r31, 0x1F ; 31 + 3f2a: 0c 94 57 1e jmp 0x3cae ; 0x3cae <__prologue_saves__+0x10> + 3f2e: ec 01 movw r28, r24 + 3f30: a8 80 ld r10, Y + 3f32: b9 80 ldd r11, Y+1 ; 0x01 + 3f34: ca 80 ldd r12, Y+2 ; 0x02 + 3f36: db 80 ldd r13, Y+3 ; 0x03 + 3f38: a1 14 cp r10, r1 + 3f3a: b1 04 cpc r11, r1 + 3f3c: c1 04 cpc r12, r1 + 3f3e: d1 04 cpc r13, r1 + 3f40: 41 f4 brne .+16 ; 0x3f52 <do_random+0x30> + 3f42: 84 e2 ldi r24, 0x24 ; 36 + 3f44: a8 2e mov r10, r24 + 3f46: 89 ed ldi r24, 0xD9 ; 217 + 3f48: b8 2e mov r11, r24 + 3f4a: 8b e5 ldi r24, 0x5B ; 91 + 3f4c: c8 2e mov r12, r24 + 3f4e: 87 e0 ldi r24, 0x07 ; 7 + 3f50: d8 2e mov r13, r24 + 3f52: c6 01 movw r24, r12 + 3f54: b5 01 movw r22, r10 + 3f56: 2d e1 ldi r18, 0x1D ; 29 + 3f58: 33 ef ldi r19, 0xF3 ; 243 + 3f5a: 41 e0 ldi r20, 0x01 ; 1 + 3f5c: 50 e0 ldi r21, 0x00 ; 0 + 3f5e: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 3f62: 27 ea ldi r18, 0xA7 ; 167 + 3f64: 31 e4 ldi r19, 0x41 ; 65 + 3f66: 40 e0 ldi r20, 0x00 ; 0 + 3f68: 50 e0 ldi r21, 0x00 ; 0 + 3f6a: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 3f6e: 7b 01 movw r14, r22 + 3f70: 8c 01 movw r16, r24 + 3f72: c6 01 movw r24, r12 + 3f74: b5 01 movw r22, r10 + 3f76: 2d e1 ldi r18, 0x1D ; 29 + 3f78: 33 ef ldi r19, 0xF3 ; 243 + 3f7a: 41 e0 ldi r20, 0x01 ; 1 + 3f7c: 50 e0 ldi r21, 0x00 ; 0 + 3f7e: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 3f82: ca 01 movw r24, r20 + 3f84: b9 01 movw r22, r18 + 3f86: 2c ee ldi r18, 0xEC ; 236 + 3f88: 34 ef ldi r19, 0xF4 ; 244 + 3f8a: 4f ef ldi r20, 0xFF ; 255 + 3f8c: 5f ef ldi r21, 0xFF ; 255 + 3f8e: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 3f92: 6e 0d add r22, r14 + 3f94: 7f 1d adc r23, r15 + 3f96: 80 1f adc r24, r16 + 3f98: 91 1f adc r25, r17 + 3f9a: 97 ff sbrs r25, 7 + 3f9c: 04 c0 rjmp .+8 ; 0x3fa6 <do_random+0x84> + 3f9e: 61 50 subi r22, 0x01 ; 1 + 3fa0: 70 40 sbci r23, 0x00 ; 0 + 3fa2: 80 40 sbci r24, 0x00 ; 0 + 3fa4: 90 48 sbci r25, 0x80 ; 128 + 3fa6: 68 83 st Y, r22 + 3fa8: 79 83 std Y+1, r23 ; 0x01 + 3faa: 8a 83 std Y+2, r24 ; 0x02 + 3fac: 9b 83 std Y+3, r25 ; 0x03 + 3fae: 9b 01 movw r18, r22 + 3fb0: ac 01 movw r20, r24 + 3fb2: 5f 77 andi r21, 0x7F ; 127 + 3fb4: b9 01 movw r22, r18 + 3fb6: ca 01 movw r24, r20 + 3fb8: cd b7 in r28, 0x3d ; 61 + 3fba: de b7 in r29, 0x3e ; 62 + 3fbc: ea e0 ldi r30, 0x0A ; 10 + 3fbe: 0c 94 73 1e jmp 0x3ce6 ; 0x3ce6 <__epilogue_restores__+0x10> + +00003fc2 <random_r>: + 3fc2: 0e 94 91 1f call 0x3f22 ; 0x3f22 <do_random> + 3fc6: 08 95 ret + +00003fc8 <random>: + 3fc8: 86 eb ldi r24, 0xB6 ; 182 + 3fca: 92 e0 ldi r25, 0x02 ; 2 + 3fcc: 0e 94 91 1f call 0x3f22 ; 0x3f22 <do_random> + 3fd0: 08 95 ret + +00003fd2 <srandom>: + 3fd2: 60 93 b6 02 sts 0x02B6, r22 + 3fd6: 70 93 b7 02 sts 0x02B7, r23 + 3fda: 80 93 b8 02 sts 0x02B8, r24 + 3fde: 90 93 b9 02 sts 0x02B9, r25 + 3fe2: 08 95 ret + +00003fe4 <realloc>: + 3fe4: a0 e0 ldi r26, 0x00 ; 0 + 3fe6: b0 e0 ldi r27, 0x00 ; 0 + 3fe8: e8 ef ldi r30, 0xF8 ; 248 + 3fea: ff e1 ldi r31, 0x1F ; 31 + 3fec: 0c 94 55 1e jmp 0x3caa ; 0x3caa <__prologue_saves__+0xc> + 3ff0: 8c 01 movw r16, r24 + 3ff2: 00 97 sbiw r24, 0x00 ; 0 + 3ff4: 29 f4 brne .+10 ; 0x4000 <realloc+0x1c> + 3ff6: cb 01 movw r24, r22 + 3ff8: 0e 94 8c 1e call 0x3d18 ; 0x3d18 <malloc> + 3ffc: 8c 01 movw r16, r24 + 3ffe: ba c0 rjmp .+372 ; 0x4174 <realloc+0x190> + 4000: 9e ef ldi r25, 0xFE ; 254 + 4002: e9 2e mov r14, r25 + 4004: 9f ef ldi r25, 0xFF ; 255 + 4006: f9 2e mov r15, r25 + 4008: e0 0e add r14, r16 + 400a: f1 1e adc r15, r17 + 400c: 58 01 movw r10, r16 + 400e: a6 0e add r10, r22 + 4010: b7 1e adc r11, r23 + 4012: ae 14 cp r10, r14 + 4014: bf 04 cpc r11, r15 + 4016: 08 f4 brcc .+2 ; 0x401a <realloc+0x36> + 4018: ab c0 rjmp .+342 ; 0x4170 <realloc+0x18c> + 401a: 8e ef ldi r24, 0xFE ; 254 + 401c: 88 2e mov r8, r24 + 401e: 8f ef ldi r24, 0xFF ; 255 + 4020: 98 2e mov r9, r24 + 4022: 8a 0c add r8, r10 + 4024: 9b 1c adc r9, r11 + 4026: e7 01 movw r28, r14 + 4028: 48 81 ld r20, Y + 402a: 59 81 ldd r21, Y+1 ; 0x01 + 402c: 46 17 cp r20, r22 + 402e: 57 07 cpc r21, r23 + 4030: b8 f0 brcs .+46 ; 0x4060 <realloc+0x7c> + 4032: 45 30 cpi r20, 0x05 ; 5 + 4034: 51 05 cpc r21, r1 + 4036: 08 f4 brcc .+2 ; 0x403a <realloc+0x56> + 4038: 9d c0 rjmp .+314 ; 0x4174 <realloc+0x190> + 403a: ca 01 movw r24, r20 + 403c: 04 97 sbiw r24, 0x04 ; 4 + 403e: 86 17 cp r24, r22 + 4040: 97 07 cpc r25, r23 + 4042: 08 f4 brcc .+2 ; 0x4046 <realloc+0x62> + 4044: 97 c0 rjmp .+302 ; 0x4174 <realloc+0x190> + 4046: 42 50 subi r20, 0x02 ; 2 + 4048: 50 40 sbci r21, 0x00 ; 0 + 404a: 46 1b sub r20, r22 + 404c: 57 0b sbc r21, r23 + 404e: f4 01 movw r30, r8 + 4050: 51 83 std Z+1, r21 ; 0x01 + 4052: 40 83 st Z, r20 + 4054: 79 83 std Y+1, r23 ; 0x01 + 4056: 68 83 st Y, r22 + 4058: c5 01 movw r24, r10 + 405a: 0e 94 39 1f call 0x3e72 ; 0x3e72 <free> + 405e: 8a c0 rjmp .+276 ; 0x4174 <realloc+0x190> + 4060: 6b 01 movw r12, r22 + 4062: c4 1a sub r12, r20 + 4064: d5 0a sbc r13, r21 + 4066: e0 91 90 03 lds r30, 0x0390 + 406a: f0 91 91 03 lds r31, 0x0391 + 406e: a0 e0 ldi r26, 0x00 ; 0 + 4070: b0 e0 ldi r27, 0x00 ; 0 + 4072: c0 e0 ldi r28, 0x00 ; 0 + 4074: d0 e0 ldi r29, 0x00 ; 0 + 4076: 42 c0 rjmp .+132 ; 0x40fc <realloc+0x118> + 4078: e8 15 cp r30, r8 + 407a: f9 05 cpc r31, r9 + 407c: a1 f5 brne .+104 ; 0x40e6 <realloc+0x102> + 407e: 20 81 ld r18, Z + 4080: 31 81 ldd r19, Z+1 ; 0x01 + 4082: 2c 15 cp r18, r12 + 4084: 3d 05 cpc r19, r13 + 4086: 78 f1 brcs .+94 ; 0x40e6 <realloc+0x102> + 4088: c9 01 movw r24, r18 + 408a: 02 96 adiw r24, 0x02 ; 2 + 408c: 8c 15 cp r24, r12 + 408e: 9d 05 cpc r25, r13 + 4090: a8 f0 brcs .+42 ; 0x40bc <realloc+0xd8> + 4092: 4e 5f subi r20, 0xFE ; 254 + 4094: 5f 4f sbci r21, 0xFF ; 255 + 4096: 42 0f add r20, r18 + 4098: 53 1f adc r21, r19 + 409a: e7 01 movw r28, r14 + 409c: 59 83 std Y+1, r21 ; 0x01 + 409e: 48 83 st Y, r20 + 40a0: 22 81 ldd r18, Z+2 ; 0x02 + 40a2: 33 81 ldd r19, Z+3 ; 0x03 + 40a4: 10 97 sbiw r26, 0x00 ; 0 + 40a6: 29 f0 breq .+10 ; 0x40b2 <realloc+0xce> + 40a8: 13 96 adiw r26, 0x03 ; 3 + 40aa: 3c 93 st X, r19 + 40ac: 2e 93 st -X, r18 + 40ae: 12 97 sbiw r26, 0x02 ; 2 + 40b0: 61 c0 rjmp .+194 ; 0x4174 <realloc+0x190> + 40b2: 30 93 91 03 sts 0x0391, r19 + 40b6: 20 93 90 03 sts 0x0390, r18 + 40ba: 5c c0 rjmp .+184 ; 0x4174 <realloc+0x190> + 40bc: 22 50 subi r18, 0x02 ; 2 + 40be: 30 40 sbci r19, 0x00 ; 0 + 40c0: 2c 19 sub r18, r12 + 40c2: 3d 09 sbc r19, r13 + 40c4: 31 83 std Z+1, r19 ; 0x01 + 40c6: 20 83 st Z, r18 + 40c8: 10 97 sbiw r26, 0x00 ; 0 + 40ca: 29 f0 breq .+10 ; 0x40d6 <realloc+0xf2> + 40cc: 13 96 adiw r26, 0x03 ; 3 + 40ce: fc 93 st X, r31 + 40d0: ee 93 st -X, r30 + 40d2: 12 97 sbiw r26, 0x02 ; 2 + 40d4: 04 c0 rjmp .+8 ; 0x40de <realloc+0xfa> + 40d6: f0 93 91 03 sts 0x0391, r31 + 40da: e0 93 90 03 sts 0x0390, r30 + 40de: f7 01 movw r30, r14 + 40e0: 71 83 std Z+1, r23 ; 0x01 + 40e2: 60 83 st Z, r22 + 40e4: 47 c0 rjmp .+142 ; 0x4174 <realloc+0x190> + 40e6: 80 81 ld r24, Z + 40e8: 91 81 ldd r25, Z+1 ; 0x01 + 40ea: c8 17 cp r28, r24 + 40ec: d9 07 cpc r29, r25 + 40ee: 08 f4 brcc .+2 ; 0x40f2 <realloc+0x10e> + 40f0: ec 01 movw r28, r24 + 40f2: df 01 movw r26, r30 + 40f4: 82 81 ldd r24, Z+2 ; 0x02 + 40f6: 93 81 ldd r25, Z+3 ; 0x03 + 40f8: 9c 01 movw r18, r24 + 40fa: f9 01 movw r30, r18 + 40fc: 30 97 sbiw r30, 0x00 ; 0 + 40fe: 09 f0 breq .+2 ; 0x4102 <realloc+0x11e> + 4100: bb cf rjmp .-138 ; 0x4078 <realloc+0x94> + 4102: 40 0f add r20, r16 + 4104: 51 1f adc r21, r17 + 4106: 80 91 8e 03 lds r24, 0x038E + 410a: 90 91 8f 03 lds r25, 0x038F + 410e: 84 17 cp r24, r20 + 4110: 95 07 cpc r25, r21 + 4112: e9 f4 brne .+58 ; 0x414e <realloc+0x16a> + 4114: c6 17 cp r28, r22 + 4116: d7 07 cpc r29, r23 + 4118: d0 f4 brcc .+52 ; 0x414e <realloc+0x16a> + 411a: 20 91 b4 02 lds r18, 0x02B4 + 411e: 30 91 b5 02 lds r19, 0x02B5 + 4122: 21 15 cp r18, r1 + 4124: 31 05 cpc r19, r1 + 4126: 41 f4 brne .+16 ; 0x4138 <realloc+0x154> + 4128: 2d b7 in r18, 0x3d ; 61 + 412a: 3e b7 in r19, 0x3e ; 62 + 412c: 80 91 b0 02 lds r24, 0x02B0 + 4130: 90 91 b1 02 lds r25, 0x02B1 + 4134: 28 1b sub r18, r24 + 4136: 39 0b sbc r19, r25 + 4138: a2 16 cp r10, r18 + 413a: b3 06 cpc r11, r19 + 413c: c8 f4 brcc .+50 ; 0x4170 <realloc+0x18c> + 413e: b0 92 8f 03 sts 0x038F, r11 + 4142: a0 92 8e 03 sts 0x038E, r10 + 4146: e7 01 movw r28, r14 + 4148: 79 83 std Y+1, r23 ; 0x01 + 414a: 68 83 st Y, r22 + 414c: 13 c0 rjmp .+38 ; 0x4174 <realloc+0x190> + 414e: cb 01 movw r24, r22 + 4150: 0e 94 8c 1e call 0x3d18 ; 0x3d18 <malloc> + 4154: ec 01 movw r28, r24 + 4156: 00 97 sbiw r24, 0x00 ; 0 + 4158: 59 f0 breq .+22 ; 0x4170 <realloc+0x18c> + 415a: f7 01 movw r30, r14 + 415c: 40 81 ld r20, Z + 415e: 51 81 ldd r21, Z+1 ; 0x01 + 4160: b8 01 movw r22, r16 + 4162: 0e 94 ff 20 call 0x41fe ; 0x41fe <memcpy> + 4166: c8 01 movw r24, r16 + 4168: 0e 94 39 1f call 0x3e72 ; 0x3e72 <free> + 416c: 8e 01 movw r16, r28 + 416e: 02 c0 rjmp .+4 ; 0x4174 <realloc+0x190> + 4170: 00 e0 ldi r16, 0x00 ; 0 + 4172: 10 e0 ldi r17, 0x00 ; 0 + 4174: c8 01 movw r24, r16 + 4176: cd b7 in r28, 0x3d ; 61 + 4178: de b7 in r29, 0x3e ; 62 + 417a: ec e0 ldi r30, 0x0C ; 12 + 417c: 0c 94 71 1e jmp 0x3ce2 ; 0x3ce2 <__epilogue_restores__+0xc> + +00004180 <atol>: + 4180: 1f 93 push r17 + 4182: fc 01 movw r30, r24 + 4184: 99 27 eor r25, r25 + 4186: 88 27 eor r24, r24 + 4188: bc 01 movw r22, r24 + 418a: e8 94 clt + 418c: 11 91 ld r17, Z+ + 418e: 10 32 cpi r17, 0x20 ; 32 + 4190: e9 f3 breq .-6 ; 0x418c <atol+0xc> + 4192: 19 30 cpi r17, 0x09 ; 9 + 4194: 10 f0 brcs .+4 ; 0x419a <atol+0x1a> + 4196: 1e 30 cpi r17, 0x0E ; 14 + 4198: c8 f3 brcs .-14 ; 0x418c <atol+0xc> + 419a: 1b 32 cpi r17, 0x2B ; 43 + 419c: 51 f0 breq .+20 ; 0x41b2 <atol+0x32> + 419e: 1d 32 cpi r17, 0x2D ; 45 + 41a0: 49 f4 brne .+18 ; 0x41b4 <atol+0x34> + 41a2: 68 94 set + 41a4: 06 c0 rjmp .+12 ; 0x41b2 <atol+0x32> + 41a6: 0e 94 c5 21 call 0x438a ; 0x438a <__mulsi_const_10> + 41aa: 61 0f add r22, r17 + 41ac: 71 1d adc r23, r1 + 41ae: 81 1d adc r24, r1 + 41b0: 91 1d adc r25, r1 + 41b2: 11 91 ld r17, Z+ + 41b4: 10 53 subi r17, 0x30 ; 48 + 41b6: 1a 30 cpi r17, 0x0A ; 10 + 41b8: b0 f3 brcs .-20 ; 0x41a6 <atol+0x26> + 41ba: 3e f4 brtc .+14 ; 0x41ca <atol+0x4a> + 41bc: 90 95 com r25 + 41be: 80 95 com r24 + 41c0: 70 95 com r23 + 41c2: 61 95 neg r22 + 41c4: 7f 4f sbci r23, 0xFF ; 255 + 41c6: 8f 4f sbci r24, 0xFF ; 255 + 41c8: 9f 4f sbci r25, 0xFF ; 255 + 41ca: 1f 91 pop r17 + 41cc: 08 95 ret + +000041ce <isspace>: + 41ce: 91 11 cpse r25, r1 + 41d0: 16 c1 rjmp .+556 ; 0x43fe <__ctype_isfalse> + 41d2: 80 32 cpi r24, 0x20 ; 32 + 41d4: 19 f0 breq .+6 ; 0x41dc <isspace+0xe> + 41d6: 89 50 subi r24, 0x09 ; 9 + 41d8: 85 50 subi r24, 0x05 ; 5 + 41da: d0 f7 brcc .-12 ; 0x41d0 <isspace+0x2> + 41dc: 08 95 ret + +000041de <tolower>: + 41de: 91 11 cpse r25, r1 + 41e0: 08 95 ret + 41e2: 81 54 subi r24, 0x41 ; 65 + 41e4: 8a 51 subi r24, 0x1A ; 26 + 41e6: 08 f4 brcc .+2 ; 0x41ea <tolower+0xc> + 41e8: 80 5e subi r24, 0xE0 ; 224 + 41ea: 85 5a subi r24, 0xA5 ; 165 + 41ec: 08 95 ret + +000041ee <toupper>: + 41ee: 91 11 cpse r25, r1 + 41f0: 08 95 ret + 41f2: 81 56 subi r24, 0x61 ; 97 + 41f4: 8a 51 subi r24, 0x1A ; 26 + 41f6: 08 f4 brcc .+2 ; 0x41fa <toupper+0xc> + 41f8: 80 52 subi r24, 0x20 ; 32 + 41fa: 85 58 subi r24, 0x85 ; 133 + 41fc: 08 95 ret + +000041fe <memcpy>: + 41fe: fb 01 movw r30, r22 + 4200: dc 01 movw r26, r24 + 4202: 02 c0 rjmp .+4 ; 0x4208 <memcpy+0xa> + 4204: 01 90 ld r0, Z+ + 4206: 0d 92 st X+, r0 + 4208: 41 50 subi r20, 0x01 ; 1 + 420a: 50 40 sbci r21, 0x00 ; 0 + 420c: d8 f7 brcc .-10 ; 0x4204 <memcpy+0x6> + 420e: 08 95 ret + +00004210 <strcat>: + 4210: fb 01 movw r30, r22 + 4212: dc 01 movw r26, r24 + 4214: 0d 90 ld r0, X+ + 4216: 00 20 and r0, r0 + 4218: e9 f7 brne .-6 ; 0x4214 <strcat+0x4> + 421a: 11 97 sbiw r26, 0x01 ; 1 + 421c: 01 90 ld r0, Z+ + 421e: 0d 92 st X+, r0 + 4220: 00 20 and r0, r0 + 4222: e1 f7 brne .-8 ; 0x421c <strcat+0xc> + 4224: 08 95 ret + +00004226 <strchr>: + 4226: fc 01 movw r30, r24 + 4228: 81 91 ld r24, Z+ + 422a: 86 17 cp r24, r22 + 422c: 21 f0 breq .+8 ; 0x4236 <strchr+0x10> + 422e: 88 23 and r24, r24 + 4230: d9 f7 brne .-10 ; 0x4228 <strchr+0x2> + 4232: 99 27 eor r25, r25 + 4234: 08 95 ret + 4236: 31 97 sbiw r30, 0x01 ; 1 + 4238: cf 01 movw r24, r30 + 423a: 08 95 ret + +0000423c <strcmp>: + 423c: fb 01 movw r30, r22 + 423e: dc 01 movw r26, r24 + 4240: 8d 91 ld r24, X+ + 4242: 01 90 ld r0, Z+ + 4244: 80 19 sub r24, r0 + 4246: 01 10 cpse r0, r1 + 4248: d9 f3 breq .-10 ; 0x4240 <strcmp+0x4> + 424a: 99 0b sbc r25, r25 + 424c: 08 95 ret + +0000424e <strcpy>: + 424e: fb 01 movw r30, r22 + 4250: dc 01 movw r26, r24 + 4252: 01 90 ld r0, Z+ + 4254: 0d 92 st X+, r0 + 4256: 00 20 and r0, r0 + 4258: e1 f7 brne .-8 ; 0x4252 <strcpy+0x4> + 425a: 08 95 ret + +0000425c <strncmp>: + 425c: fb 01 movw r30, r22 + 425e: dc 01 movw r26, r24 + 4260: 41 50 subi r20, 0x01 ; 1 + 4262: 50 40 sbci r21, 0x00 ; 0 + 4264: 30 f0 brcs .+12 ; 0x4272 <strncmp+0x16> + 4266: 8d 91 ld r24, X+ + 4268: 01 90 ld r0, Z+ + 426a: 80 19 sub r24, r0 + 426c: 19 f4 brne .+6 ; 0x4274 <strncmp+0x18> + 426e: 00 20 and r0, r0 + 4270: b9 f7 brne .-18 ; 0x4260 <strncmp+0x4> + 4272: 88 1b sub r24, r24 + 4274: 99 0b sbc r25, r25 + 4276: 08 95 ret + +00004278 <strncpy>: + 4278: fb 01 movw r30, r22 + 427a: dc 01 movw r26, r24 + 427c: 41 50 subi r20, 0x01 ; 1 + 427e: 50 40 sbci r21, 0x00 ; 0 + 4280: 48 f0 brcs .+18 ; 0x4294 <strncpy+0x1c> + 4282: 01 90 ld r0, Z+ + 4284: 0d 92 st X+, r0 + 4286: 00 20 and r0, r0 + 4288: c9 f7 brne .-14 ; 0x427c <strncpy+0x4> + 428a: 01 c0 rjmp .+2 ; 0x428e <strncpy+0x16> + 428c: 1d 92 st X+, r1 + 428e: 41 50 subi r20, 0x01 ; 1 + 4290: 50 40 sbci r21, 0x00 ; 0 + 4292: e0 f7 brcc .-8 ; 0x428c <strncpy+0x14> + 4294: 08 95 ret + +00004296 <strrchr>: + 4296: fc 01 movw r30, r24 + 4298: 81 e0 ldi r24, 0x01 ; 1 + 429a: 90 e0 ldi r25, 0x00 ; 0 + 429c: 01 90 ld r0, Z+ + 429e: 06 16 cp r0, r22 + 42a0: 09 f4 brne .+2 ; 0x42a4 <strrchr+0xe> + 42a2: cf 01 movw r24, r30 + 42a4: 00 20 and r0, r0 + 42a6: d1 f7 brne .-12 ; 0x429c <strrchr+0x6> + 42a8: 01 97 sbiw r24, 0x01 ; 1 + 42aa: 08 95 ret + +000042ac <strstr>: + 42ac: fb 01 movw r30, r22 + 42ae: 51 91 ld r21, Z+ + 42b0: 55 23 and r21, r21 + 42b2: a9 f0 breq .+42 ; 0x42de <strstr+0x32> + 42b4: bf 01 movw r22, r30 + 42b6: dc 01 movw r26, r24 + 42b8: 4d 91 ld r20, X+ + 42ba: 45 17 cp r20, r21 + 42bc: 41 11 cpse r20, r1 + 42be: e1 f7 brne .-8 ; 0x42b8 <strstr+0xc> + 42c0: 59 f4 brne .+22 ; 0x42d8 <strstr+0x2c> + 42c2: cd 01 movw r24, r26 + 42c4: 01 90 ld r0, Z+ + 42c6: 00 20 and r0, r0 + 42c8: 49 f0 breq .+18 ; 0x42dc <strstr+0x30> + 42ca: 4d 91 ld r20, X+ + 42cc: 40 15 cp r20, r0 + 42ce: 41 11 cpse r20, r1 + 42d0: c9 f3 breq .-14 ; 0x42c4 <strstr+0x18> + 42d2: fb 01 movw r30, r22 + 42d4: 41 11 cpse r20, r1 + 42d6: ef cf rjmp .-34 ; 0x42b6 <strstr+0xa> + 42d8: 81 e0 ldi r24, 0x01 ; 1 + 42da: 90 e0 ldi r25, 0x00 ; 0 + 42dc: 01 97 sbiw r24, 0x01 ; 1 + 42de: 08 95 ret + +000042e0 <itoa>: + 42e0: fb 01 movw r30, r22 + 42e2: 9f 01 movw r18, r30 + 42e4: e8 94 clt + 42e6: 42 30 cpi r20, 0x02 ; 2 + 42e8: c4 f0 brlt .+48 ; 0x431a <itoa+0x3a> + 42ea: 45 32 cpi r20, 0x25 ; 37 + 42ec: b4 f4 brge .+44 ; 0x431a <itoa+0x3a> + 42ee: 4a 30 cpi r20, 0x0A ; 10 + 42f0: 29 f4 brne .+10 ; 0x42fc <itoa+0x1c> + 42f2: 97 fb bst r25, 7 + 42f4: 1e f4 brtc .+6 ; 0x42fc <itoa+0x1c> + 42f6: 90 95 com r25 + 42f8: 81 95 neg r24 + 42fa: 9f 4f sbci r25, 0xFF ; 255 + 42fc: 64 2f mov r22, r20 + 42fe: 77 27 eor r23, r23 + 4300: 0e 94 12 22 call 0x4424 ; 0x4424 <__udivmodhi4> + 4304: 80 5d subi r24, 0xD0 ; 208 + 4306: 8a 33 cpi r24, 0x3A ; 58 + 4308: 0c f0 brlt .+2 ; 0x430c <itoa+0x2c> + 430a: 89 5d subi r24, 0xD9 ; 217 + 430c: 81 93 st Z+, r24 + 430e: cb 01 movw r24, r22 + 4310: 00 97 sbiw r24, 0x00 ; 0 + 4312: a1 f7 brne .-24 ; 0x42fc <itoa+0x1c> + 4314: 16 f4 brtc .+4 ; 0x431a <itoa+0x3a> + 4316: 5d e2 ldi r21, 0x2D ; 45 + 4318: 51 93 st Z+, r21 + 431a: 10 82 st Z, r1 + 431c: c9 01 movw r24, r18 + 431e: 0c 94 02 22 jmp 0x4404 ; 0x4404 <strrev> + +00004322 <ltoa>: + 4322: fa 01 movw r30, r20 + 4324: cf 93 push r28 + 4326: ff 93 push r31 + 4328: ef 93 push r30 + 432a: 22 30 cpi r18, 0x02 ; 2 + 432c: 44 f1 brlt .+80 ; 0x437e <ltoa+0x5c> + 432e: 25 32 cpi r18, 0x25 ; 37 + 4330: 34 f5 brge .+76 ; 0x437e <ltoa+0x5c> + 4332: c2 2f mov r28, r18 + 4334: e8 94 clt + 4336: ca 30 cpi r28, 0x0A ; 10 + 4338: 49 f4 brne .+18 ; 0x434c <ltoa+0x2a> + 433a: 97 fb bst r25, 7 + 433c: 3e f4 brtc .+14 ; 0x434c <ltoa+0x2a> + 433e: 90 95 com r25 + 4340: 80 95 com r24 + 4342: 70 95 com r23 + 4344: 61 95 neg r22 + 4346: 7f 4f sbci r23, 0xFF ; 255 + 4348: 8f 4f sbci r24, 0xFF ; 255 + 434a: 9f 4f sbci r25, 0xFF ; 255 + 434c: 2c 2f mov r18, r28 + 434e: 33 27 eor r19, r19 + 4350: 44 27 eor r20, r20 + 4352: 55 27 eor r21, r21 + 4354: ff 93 push r31 + 4356: ef 93 push r30 + 4358: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 435c: ef 91 pop r30 + 435e: ff 91 pop r31 + 4360: 60 5d subi r22, 0xD0 ; 208 + 4362: 6a 33 cpi r22, 0x3A ; 58 + 4364: 0c f0 brlt .+2 ; 0x4368 <ltoa+0x46> + 4366: 69 5d subi r22, 0xD9 ; 217 + 4368: 61 93 st Z+, r22 + 436a: b9 01 movw r22, r18 + 436c: ca 01 movw r24, r20 + 436e: 60 50 subi r22, 0x00 ; 0 + 4370: 70 40 sbci r23, 0x00 ; 0 + 4372: 80 40 sbci r24, 0x00 ; 0 + 4374: 90 40 sbci r25, 0x00 ; 0 + 4376: 51 f7 brne .-44 ; 0x434c <ltoa+0x2a> + 4378: 16 f4 brtc .+4 ; 0x437e <ltoa+0x5c> + 437a: cd e2 ldi r28, 0x2D ; 45 + 437c: c1 93 st Z+, r28 + 437e: 10 82 st Z, r1 + 4380: 8f 91 pop r24 + 4382: 9f 91 pop r25 + 4384: cf 91 pop r28 + 4386: 0c 94 02 22 jmp 0x4404 ; 0x4404 <strrev> + +0000438a <__mulsi_const_10>: + 438a: 59 2f mov r21, r25 + 438c: 48 2f mov r20, r24 + 438e: 37 2f mov r19, r23 + 4390: 26 2f mov r18, r22 + 4392: 66 0f add r22, r22 + 4394: 77 1f adc r23, r23 + 4396: 88 1f adc r24, r24 + 4398: 99 1f adc r25, r25 + 439a: 66 0f add r22, r22 + 439c: 77 1f adc r23, r23 + 439e: 88 1f adc r24, r24 + 43a0: 99 1f adc r25, r25 + 43a2: 62 0f add r22, r18 + 43a4: 73 1f adc r23, r19 + 43a6: 84 1f adc r24, r20 + 43a8: 95 1f adc r25, r21 + 43aa: 66 0f add r22, r22 + 43ac: 77 1f adc r23, r23 + 43ae: 88 1f adc r24, r24 + 43b0: 99 1f adc r25, r25 + 43b2: 08 95 ret + +000043b4 <ultoa>: + 43b4: fa 01 movw r30, r20 + 43b6: cf 93 push r28 + 43b8: ff 93 push r31 + 43ba: ef 93 push r30 + 43bc: 22 30 cpi r18, 0x02 ; 2 + 43be: cc f0 brlt .+50 ; 0x43f2 <ultoa+0x3e> + 43c0: 25 32 cpi r18, 0x25 ; 37 + 43c2: bc f4 brge .+46 ; 0x43f2 <ultoa+0x3e> + 43c4: c2 2f mov r28, r18 + 43c6: 2c 2f mov r18, r28 + 43c8: 33 27 eor r19, r19 + 43ca: 44 27 eor r20, r20 + 43cc: 55 27 eor r21, r21 + 43ce: ff 93 push r31 + 43d0: ef 93 push r30 + 43d2: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 43d6: ef 91 pop r30 + 43d8: ff 91 pop r31 + 43da: 60 5d subi r22, 0xD0 ; 208 + 43dc: 6a 33 cpi r22, 0x3A ; 58 + 43de: 0c f0 brlt .+2 ; 0x43e2 <ultoa+0x2e> + 43e0: 69 5d subi r22, 0xD9 ; 217 + 43e2: 61 93 st Z+, r22 + 43e4: b9 01 movw r22, r18 + 43e6: ca 01 movw r24, r20 + 43e8: 60 50 subi r22, 0x00 ; 0 + 43ea: 70 40 sbci r23, 0x00 ; 0 + 43ec: 80 40 sbci r24, 0x00 ; 0 + 43ee: 90 40 sbci r25, 0x00 ; 0 + 43f0: 51 f7 brne .-44 ; 0x43c6 <ultoa+0x12> + 43f2: 10 82 st Z, r1 + 43f4: 8f 91 pop r24 + 43f6: 9f 91 pop r25 + 43f8: cf 91 pop r28 + 43fa: 0c 94 02 22 jmp 0x4404 ; 0x4404 <strrev> + +000043fe <__ctype_isfalse>: + 43fe: 99 27 eor r25, r25 + 4400: 88 27 eor r24, r24 + +00004402 <__ctype_istrue>: + 4402: 08 95 ret + +00004404 <strrev>: + 4404: dc 01 movw r26, r24 + 4406: fc 01 movw r30, r24 + 4408: 67 2f mov r22, r23 + 440a: 71 91 ld r23, Z+ + 440c: 77 23 and r23, r23 + 440e: e1 f7 brne .-8 ; 0x4408 <strrev+0x4> + 4410: 32 97 sbiw r30, 0x02 ; 2 + 4412: 04 c0 rjmp .+8 ; 0x441c <strrev+0x18> + 4414: 7c 91 ld r23, X + 4416: 6d 93 st X+, r22 + 4418: 70 83 st Z, r23 + 441a: 62 91 ld r22, -Z + 441c: ae 17 cp r26, r30 + 441e: bf 07 cpc r27, r31 + 4420: c8 f3 brcs .-14 ; 0x4414 <strrev+0x10> + 4422: 08 95 ret + +00004424 <__udivmodhi4>: + 4424: aa 1b sub r26, r26 + 4426: bb 1b sub r27, r27 + 4428: 51 e1 ldi r21, 0x11 ; 17 + 442a: 07 c0 rjmp .+14 ; 0x443a <__udivmodhi4_ep> + +0000442c <__udivmodhi4_loop>: + 442c: aa 1f adc r26, r26 + 442e: bb 1f adc r27, r27 + 4430: a6 17 cp r26, r22 + 4432: b7 07 cpc r27, r23 + 4434: 10 f0 brcs .+4 ; 0x443a <__udivmodhi4_ep> + 4436: a6 1b sub r26, r22 + 4438: b7 0b sbc r27, r23 + +0000443a <__udivmodhi4_ep>: + 443a: 88 1f adc r24, r24 + 443c: 99 1f adc r25, r25 + 443e: 5a 95 dec r21 + 4440: a9 f7 brne .-22 ; 0x442c <__udivmodhi4_loop> + 4442: 80 95 com r24 + 4444: 90 95 com r25 + 4446: bc 01 movw r22, r24 + 4448: cd 01 movw r24, r26 + 444a: 08 95 ret + +0000444c <_exit>: + 444c: f8 94 cli + +0000444e <__stop_program>: + 444e: ff cf rjmp .-2 ; 0x444e <__stop_program> diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map new file mode 100644 index 0000000..c87bfd3 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map @@ -0,0 +1,1399 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + obj/Release/arduinoSrc0022/Tone.o (__mulsi3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + obj/Release/arduinoSrc0022/HardwareSerial.o (__udivmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc0022/WMath.o (__divmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + obj/Release/adapticsBT.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + obj/Release/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + obj/Release/arduinoSrc0022/HardwareSerial.o (__do_global_ctors) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o (__fixunssfsi) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc0022/Print.o (__subsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc0022/Print.o (__mulsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc0022/Print.o (__divsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) (__gesf2) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc0022/Print.o (__ltsf2) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc0022/Print.o (__floatsisf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Release/arduinoSrc0022/Print.o (__fixsfsi) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc0022/Print.o (__floatunsisf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) (__clzsi2) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) (__fpcmp_parts_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) (__clz_tab) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduinoSrc0022/WString.o (malloc) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o (random) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o (realloc) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc0022/WString.o (atol) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc0022/WString.o (isspace) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc0022/WString.o (tolower) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc0022/WString.o (toupper) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) (memcpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + obj/Release/arduinoSrc0022/WString.o (strcat) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc0022/WString.o (strchr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc0022/WString.o (strcmp) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc0022/WString.o (strcpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc0022/WString.o (strncmp) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc0022/WString.o (strncpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc0022/WString.o (strrchr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc0022/WString.o (strstr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc0022/WString.o (itoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc0022/WString.o (ltoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) (__mulsi_const_10) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc0022/WString.o (ultoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) (__ctype_isfalse) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) (strrev) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) (__udivmodhi4) + +Allocating common symbols +Common symbol size file + +__brkval 0x2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__flp 0x2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/adapticsBT.o +LOAD obj/Release/main.o +LOAD obj/Release/arduinoSrc0022/HardwareSerial.o +LOAD obj/Release/arduinoSrc0022/Print.o +LOAD obj/Release/arduinoSrc0022/Tone.o +LOAD obj/Release/arduinoSrc0022/WInterrupts.o +LOAD obj/Release/arduinoSrc0022/WMath.o +LOAD obj/Release/arduinoSrc0022/WString.o +LOAD obj/Release/arduinoSrc0022/pins_arduino.o +LOAD obj/Release/arduinoSrc0022/wiring.o +LOAD obj/Release/arduinoSrc0022/wiring_analog.o +LOAD obj/Release/arduinoSrc0022/wiring_digital.o +LOAD obj/Release/arduinoSrc0022/wiring_pulse.o +LOAD obj/Release/arduinoSrc0022/wiring_shift.o +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x4450 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x1 obj/Release/arduinoSrc0022/Tone.o + .progmem.data 0x00000069 0x5a obj/Release/arduinoSrc0022/pins_arduino.o + 0x00000069 port_to_mode_PGM + 0x00000073 port_to_output_PGM + 0x0000007d port_to_input_PGM + 0x00000087 digital_pin_to_port_PGM + 0x0000009b digital_pin_to_bit_mask_PGM + 0x000000af digital_pin_to_timer_PGM + 0x000000c4 . = ALIGN (0x2) + *fill* 0x000000c3 0x1 00 + 0x000000c4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000c4 0x0 linker stubs + *(.trampolines*) + 0x000000c4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000c4 __ctors_start = . + *(.ctors) + .ctors 0x000000c4 0x2 obj/Release/arduinoSrc0022/HardwareSerial.o + 0x000000c6 __ctors_end = . + 0x000000c6 __dtors_start = . + *(.dtors) + 0x000000c6 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000c6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000c6 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000c6 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000d2 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000d2 __do_copy_data + .init4 0x000000e8 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000e8 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000f8 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + 0x000000f8 __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000010e 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x00000116 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000116 __vector_22 + 0x00000116 __vector_24 + 0x00000116 __vector_12 + 0x00000116 __bad_interrupt + 0x00000116 __vector_6 + 0x00000116 __vector_3 + 0x00000116 __vector_23 + 0x00000116 __vector_25 + 0x00000116 __vector_11 + 0x00000116 __vector_13 + 0x00000116 __vector_17 + 0x00000116 __vector_19 + 0x00000116 __vector_5 + 0x00000116 __vector_4 + 0x00000116 __vector_9 + 0x00000116 __vector_21 + 0x00000116 __vector_15 + 0x00000116 __vector_8 + 0x00000116 __vector_14 + 0x00000116 __vector_10 + 0x00000116 __vector_20 + .text 0x0000011a 0x9a obj/Release/adapticsBT.o + 0x0000011a advertise() + 0x00000150 setupBlueTooth() + .text 0x000001b4 0x474 obj/Release/main.o + 0x000001b4 __cxa_pure_virtual + 0x000001b8 writeStartBit() + 0x000001f2 writeStopBit() + 0x0000021c SCLKcycle_R() + 0x00000246 readByte() + 0x00000288 SCLKcycle_W() + 0x000002b2 writeByte(unsigned char) + 0x000002f0 startRead() + 0x00000302 startWrite() + 0x00000314 writeDMM() + 0x000003de main + .text 0x00000628 0x38e obj/Release/arduinoSrc0022/HardwareSerial.o + 0x00000628 __vector_18 + 0x0000068a HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + 0x000006ea HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + 0x0000074a HardwareSerial::begin(long) + 0x00000812 HardwareSerial::end() + 0x00000866 HardwareSerial::available() + 0x00000888 HardwareSerial::peek() + 0x000008bc HardwareSerial::read() + 0x00000904 HardwareSerial::flush() + 0x0000091c HardwareSerial::write(unsigned char) + .text 0x000009b6 0x5b2 obj/Release/arduinoSrc0022/Print.o + 0x000009b6 Print::write(char const*) + 0x000009e6 Print::write(unsigned char const*, unsigned int) + 0x00000a24 Print::print(char const*) + 0x00000a34 Print::print(String const&) + 0x00000a88 Print::printNumber(unsigned long, unsigned char) + 0x00000bbc Print::print(unsigned long, int) + 0x00000bda Print::print(unsigned int, int) + 0x00000bfc Print::print(unsigned char, int) + 0x00000c20 Print::print(long, int) + 0x00000c8c Print::print(int, int) + 0x00000cb2 Print::print(char, int) + 0x00000cda Print::println() + 0x00000d08 Print::println(unsigned long, int) + 0x00000d1e Print::println(unsigned int, int) + 0x00000d50 Print::println(unsigned char, int) + 0x00000d84 Print::println(char const*) + 0x00000d9a Print::println(String const&) + 0x00000db0 Print::println(long, int) + 0x00000dc6 Print::println(int, int) + 0x00000dfc Print::println(char, int) + 0x00000e34 Print::printFloat(double, unsigned char) + 0x00000f4c Print::print(double, int) + 0x00000f52 Print::println(double, int) + .text 0x00000f68 0x552 obj/Release/arduinoSrc0022/Tone.o + 0x00000f68 disableTimer(unsigned char) + 0x00000faa noTone(unsigned char) + 0x00000fd8 __vector_7 + 0x00001090 tone(unsigned char, unsigned int, unsigned long) + .text 0x000014ba 0x120 obj/Release/arduinoSrc0022/WInterrupts.o + 0x000014ba attachInterrupt + 0x00001500 detachInterrupt + 0x00001526 __vector_1 + 0x00001580 __vector_2 + .text 0x000015da 0x132 obj/Release/arduinoSrc0022/WMath.o + 0x000015da map(long, long, long, long, long) + 0x0000166c makeWord(unsigned int) + 0x0000166e makeWord(unsigned char, unsigned char) + 0x0000167c random(long) + 0x000016c0 random(long, long) + 0x000016fc randomSeed(unsigned int) + .text 0x0000170c 0x103c obj/Release/arduinoSrc0022/WString.o + 0x0000170c String::charAt(unsigned int) const + 0x0000171c String::setCharAt(unsigned int, char) + 0x0000173e String::operator[](unsigned int) + 0x00001768 String::operator[](unsigned int) const + 0x00001778 String::toInt() + 0x00001784 String::toCharArray(char*, unsigned int) + 0x000017c8 String::getBytes(unsigned char*, unsigned int) + 0x0000180c String::~String() + 0x0000182c String::startsWith(String const&, unsigned int) const + 0x00001868 String::startsWith(String const&) const + 0x0000188e String::lastIndexOf(char, unsigned int) const + 0x000018fc String::lastIndexOf(char) const + 0x0000190c String::indexOf(String const&, unsigned int) const + 0x00001948 String::indexOf(String const&) const + 0x00001952 String::indexOf(char, unsigned int) const + 0x0000198e String::indexOf(char) const + 0x00001998 String::equals(String const&) const + 0x000019ca String::endsWith(String const&) const + 0x00001a04 String::operator>=(String const&) const + 0x00001a2c String::operator<=(String const&) const + 0x00001a4e String::operator>(String const&) const + 0x00001a70 String::operator<(String const&) const + 0x00001a94 String::operator!=(String const&) const + 0x00001ac4 String::operator==(String const&) const + 0x00001af8 String::compareTo(String const&) const + 0x00001b0a String::operator+=(String const&) + 0x00001b7a String::concat(String const&) + 0x00001b80 String::getBuffer(unsigned int) + 0x00001ba8 String::operator=(String const&) + 0x00001c08 String::String(unsigned char) + 0x00001c3c String::String(unsigned char) + 0x00001c70 String::String(char) + 0x00001ca4 String::String(char) + 0x00001cd8 String::String(String const&) + 0x00001d0e String::String(String const&) + 0x00001d44 String::String(unsigned long, int) + 0x00001dc2 String::String(unsigned long, int) + 0x00001e40 String::String(unsigned int, int) + 0x00001ebc String::String(unsigned int, int) + 0x00001f38 String::String(char const*) + 0x00001f88 String::toUpperCase() const + 0x00001ffe String::toLowerCase() const + 0x00002074 String::equalsIgnoreCase(String const&) const + 0x0000210c String::substring(unsigned int, unsigned int) const + 0x0000217a String::substring(unsigned int) const + 0x00002192 String::lastIndexOf(String const&, unsigned int) const + 0x0000225c String::lastIndexOf(String const&) const + 0x00002278 String::trim() const + 0x00002356 String::replace(String const&, String const&) + 0x0000248c String::replace(char, char) + 0x00002514 String::String(char const*) + 0x00002564 String::String(long, int) + 0x000025de String::String(long, int) + 0x00002658 String::String(int, int) + 0x000026d0 String::String(int, int) + .text 0x00002748 0x0 obj/Release/arduinoSrc0022/pins_arduino.o + .text 0x00002748 0x1e6 obj/Release/arduinoSrc0022/wiring.o + 0x00002748 __vector_16 + 0x000027f0 millis + 0x0000280c micros + 0x00002858 delay + 0x000028a4 delayMicroseconds + 0x000028b8 init + .text 0x0000292e 0x10a obj/Release/arduinoSrc0022/wiring_analog.o + 0x0000292e analogReference + 0x00002934 analogRead + 0x00002978 analogWrite + .text 0x00002a38 0x170 obj/Release/arduinoSrc0022/wiring_digital.o + 0x00002a38 pinMode + 0x00002ade digitalWrite + 0x00002b48 digitalRead + .text 0x00002ba8 0x142 obj/Release/arduinoSrc0022/wiring_pulse.o + 0x00002ba8 pulseIn + .text 0x00002cea 0x104 obj/Release/arduinoSrc0022/wiring_shift.o + 0x00002cea shiftOut + 0x00002d6e shiftIn + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text 0x00002dee 0x58 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + 0x00002dee __fixunssfsi + .text 0x00002e46 0x354 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + 0x000030de __subsf3 + 0x00003140 __addsf3 + .text 0x0000319a 0x1f4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + 0x0000319a __mulsf3 + .text 0x0000338e 0x158 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + 0x0000338e __divsf3 + .text 0x000034e6 0x60 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + 0x000034e6 __gesf2 + .text 0x00003546 0x60 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + 0x00003546 __ltsf2 + .text 0x000035a6 0xbc /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + 0x000035a6 __floatsisf + .text 0x00003662 0xa8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + 0x00003662 __fixsfsi + .text 0x0000370a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .text 0x0000370a 0xf2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + 0x0000370a __floatunsisf + .text 0x000037fc 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .text 0x000037fc 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .text 0x000037fc 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .text 0x000037fc 0x9e /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + 0x000037fc __clzsi2 + .text 0x0000389a 0x1aa /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + 0x0000389a __pack_f + .text 0x00003a44 0xf0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + 0x00003a44 __unpack_f + .text 0x00003b34 0xb2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + 0x00003b34 __fpcmp_parts_f + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + 0x00003be6 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00003be6 0x3e /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + 0x00003be6 __mulsi3 + .text.libgcc 0x00003c24 0x44 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + 0x00003c24 __udivmodsi4 + .text.libgcc 0x00003c68 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + 0x00003c68 __divmodsi4 + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x00003c9e 0x38 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + 0x00003c9e __prologue_saves__ + .text.libgcc 0x00003cd6 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + 0x00003cd6 __epilogue_restores__ + .text.libgcc 0x00003d0c 0xc /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + 0x00003d0c __tablejump2__ + 0x00003d10 __tablejump__ + .text.avr-libc + 0x00003d18 0x20a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x00003d18 malloc + 0x00003e72 free + .text.avr-libc + 0x00003f22 0xc2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + 0x00003fc2 random_r + 0x00003fc8 random + 0x00003fd2 srandom + .text.avr-libc + 0x00003fe4 0x19c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + 0x00003fe4 realloc + .text.avr-libc + 0x00004180 0x4e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + 0x00004180 atol + .text.avr-libc + 0x000041ce 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + 0x000041ce isspace + .text.avr-libc + 0x000041de 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + 0x000041de tolower + .text.avr-libc + 0x000041ee 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + 0x000041ee toupper + .text.avr-libc + 0x000041fe 0x12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x000041fe memcpy + .text.avr-libc + 0x00004210 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + 0x00004210 strcat + .text.avr-libc + 0x00004226 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + 0x00004226 strchr + .text.avr-libc + 0x0000423c 0x12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x0000423c strcmp + .text.avr-libc + 0x0000424e 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x0000424e strcpy + .text.avr-libc + 0x0000425c 0x1c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + 0x0000425c strncmp + .text.avr-libc + 0x00004278 0x1e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + 0x00004278 strncpy + .text.avr-libc + 0x00004296 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + 0x00004296 strrchr + .text.avr-libc + 0x000042ac 0x34 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + 0x000042ac strstr + .text.avr-libc + 0x000042e0 0x42 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + 0x000042e0 itoa + .text.avr-libc + 0x00004322 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x00004322 ltoa + .text.avr-libc + 0x0000438a 0x2a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x0000438a __mulsi_const_10 + .text.avr-libc + 0x000043b4 0x4a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x000043b4 ultoa + .text.avr-libc + 0x000043fe 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x000043fe __ctype_isfalse + 0x00004402 __ctype_istrue + .text.avr-libc + 0x00004404 0x20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + 0x00004404 strrev + .text.libgcc 0x00004424 0x28 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + 0x00004424 __udivmodhi4 + 0x0000444c . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000444c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x0000444c exit + 0x0000444c _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000444c 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00004450 _etext = . + +.data 0x00800100 0x1ba load address 0x00004450 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x72 obj/Release/adapticsBT.o + .data 0x00800172 0x3 obj/Release/main.o + 0x00800172 packetSize + .data 0x00800175 0x24 obj/Release/arduinoSrc0022/HardwareSerial.o + 0x00800175 vtable for HardwareSerial + 0x00800187 vtable for Stream + .data 0x00800199 0xc obj/Release/arduinoSrc0022/Print.o + 0x0080019b vtable for Print + .data 0x008001a5 0x1 obj/Release/arduinoSrc0022/Tone.o + .data 0x008001a6 0x0 obj/Release/arduinoSrc0022/WInterrupts.o + .data 0x008001a6 0x0 obj/Release/arduinoSrc0022/WMath.o + .data 0x008001a6 0x1 obj/Release/arduinoSrc0022/WString.o + .data 0x008001a7 0x0 obj/Release/arduinoSrc0022/pins_arduino.o + .data 0x008001a7 0x0 obj/Release/arduinoSrc0022/wiring.o + .data 0x008001a7 0x1 obj/Release/arduinoSrc0022/wiring_analog.o + 0x008001a7 analog_reference + .data 0x008001a8 0x0 obj/Release/arduinoSrc0022/wiring_digital.o + .data 0x008001a8 0x0 obj/Release/arduinoSrc0022/wiring_pulse.o + .data 0x008001a8 0x0 obj/Release/arduinoSrc0022/wiring_shift.o + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .data 0x008001a8 0x8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + 0x008001a8 __thenan_sf + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + .data 0x008001b0 0x100 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + 0x008001b0 __clz_tab + .data 0x008002b0 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x008002b0 __malloc_margin + 0x008002b2 __malloc_heap_start + 0x008002b4 __malloc_heap_end + .data 0x008002b6 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x008002ba . = ALIGN (0x2) + 0x008002ba _edata = . + 0x008002ba PROVIDE (__data_end, .) + +.bss 0x008002ba 0xd8 + 0x008002ba PROVIDE (__bss_start, .) + *(.bss) + .bss 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x008002ba 0x0 obj/Release/adapticsBT.o + .bss 0x008002ba 0x1a obj/Release/main.o + 0x008002ba connected + 0x008002bb data + 0x008002c5 CB_SHBP + 0x008002c6 CB_function + 0x008002c7 CB_VARCrange + 0x008002c8 CB_FREQrange + 0x008002c9 CB_BUZfreq + 0x008002ca CB_ADCrate + 0x008002cb CB_ACmode + 0x008002cc CB_PEAKmode + 0x008002cd CB_PCALmode + 0x008002ce CB_LPFbw + 0x008002cf CB_EXTdiode + 0x008002d0 CB_OPconf + 0x008002d1 CB_FREQinprest + 0x008002d2 CB_ADPext + 0x008002d3 CB_DCfs + .bss 0x008002d4 0x97 obj/Release/arduinoSrc0022/HardwareSerial.o + 0x008002d4 rx_buffer + 0x00800358 Serial + .bss 0x0080036b 0x0 obj/Release/arduinoSrc0022/Print.o + .bss 0x0080036b 0x15 obj/Release/arduinoSrc0022/Tone.o + 0x0080036b timer0_toggle_count + 0x0080036f timer0_pin_port + 0x00800371 timer0_pin_mask + 0x00800372 timer1_toggle_count + 0x00800376 timer1_pin_port + 0x00800378 timer1_pin_mask + 0x00800379 timer2_toggle_count + 0x0080037d timer2_pin_port + 0x0080037f timer2_pin_mask + .bss 0x00800380 0x4 obj/Release/arduinoSrc0022/WInterrupts.o + .bss 0x00800384 0x0 obj/Release/arduinoSrc0022/WMath.o + .bss 0x00800384 0x1 obj/Release/arduinoSrc0022/WString.o + .bss 0x00800385 0x0 obj/Release/arduinoSrc0022/pins_arduino.o + .bss 0x00800385 0x9 obj/Release/arduinoSrc0022/wiring.o + 0x00800385 timer0_overflow_count + 0x00800389 timer0_millis + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_analog.o + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_digital.o + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_pulse.o + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_shift.o + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + *(.bss*) + *(COMMON) + COMMON 0x0080038e 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x0080038e __brkval + 0x00800390 __flp + 0x00800392 PROVIDE (__bss_end, .) + 0x00004450 __data_load_start = LOADADDR (.data) + 0x0000460a __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800392 0x0 + 0x00800392 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800392 PROVIDE (__noinit_end, .) + 0x00800392 _end = . + 0x00800392 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x267c + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x6f0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x6fc (size before relaxing) + .stab 0x00000da4 0x2dc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + 0x33c (size before relaxing) + .stab 0x00001080 0x3b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + 0x5ac (size before relaxing) + .stab 0x00001434 0x1e0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + 0x1ec (size before relaxing) + .stab 0x00001614 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + 0xa8 (size before relaxing) + .stab 0x000016b0 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + 0xa8 (size before relaxing) + .stab 0x0000174c 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + 0xa8 (size before relaxing) + .stab 0x000017e8 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x90 (size before relaxing) + .stab 0x0000186c 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + 0xa8 (size before relaxing) + .stab 0x00001908 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + 0xa8 (size before relaxing) + .stab 0x000019a4 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x90 (size before relaxing) + .stab 0x00001a28 0x6c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x78 (size before relaxing) + .stab 0x00001a94 0xc0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + 0xcc (size before relaxing) + .stab 0x00001b54 0xcc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + 0xd8 (size before relaxing) + .stab 0x00001c20 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + 0xa8 (size before relaxing) + .stab 0x00001cbc 0x150 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + 0x15c (size before relaxing) + .stab 0x00001e0c 0x1b0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + 0x1bc (size before relaxing) + .stab 0x00001fbc 0x294 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x2a0 (size before relaxing) + .stab 0x00002250 0x114 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x120 (size before relaxing) + .stab 0x00002364 0x1e0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x1ec (size before relaxing) + .stab 0x00002544 0x60 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x6c (size before relaxing) + .stab 0x000025a4 0xd8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + 0xe4 (size before relaxing) + +.stabstr 0x00000000 0xcf1 + *(.stabstr) + .stabstr 0x00000000 0xcf1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges + *(.debug_aranges) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info + *(.debug_info) + *(.gnu.linkonce.wi.*) + +.debug_abbrev + *(.debug_abbrev) + +.debug_line + *(.debug_line) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Release/ESS1995test_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +CB_ACmode obj/Release/main.o +CB_ADCrate obj/Release/main.o +CB_ADPext obj/Release/main.o +CB_BUZfreq obj/Release/main.o +CB_DCfs obj/Release/main.o +CB_EXTdiode obj/Release/main.o +CB_FREQinprest obj/Release/main.o +CB_FREQrange obj/Release/main.o +CB_LPFbw obj/Release/main.o +CB_OPconf obj/Release/main.o +CB_PCALmode obj/Release/main.o +CB_PEAKmode obj/Release/main.o +CB_SHBP obj/Release/main.o +CB_VARCrange obj/Release/main.o +CB_function obj/Release/main.o +HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::available() obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +HardwareSerial::begin(long) obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::end() obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::flush() obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::peek() obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::read() obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +HardwareSerial::write(unsigned char) obj/Release/arduinoSrc0022/HardwareSerial.o +Print::print(String const&) obj/Release/arduinoSrc0022/Print.o +Print::print(char const*) obj/Release/arduinoSrc0022/Print.o + obj/Release/adapticsBT.o +Print::print(char, int) obj/Release/arduinoSrc0022/Print.o +Print::print(double, int) obj/Release/arduinoSrc0022/Print.o +Print::print(int, int) obj/Release/arduinoSrc0022/Print.o +Print::print(long, int) obj/Release/arduinoSrc0022/Print.o +Print::print(unsigned char, int) obj/Release/arduinoSrc0022/Print.o +Print::print(unsigned int, int) obj/Release/arduinoSrc0022/Print.o +Print::print(unsigned long, int) obj/Release/arduinoSrc0022/Print.o +Print::printFloat(double, unsigned char) obj/Release/arduinoSrc0022/Print.o +Print::printNumber(unsigned long, unsigned char) obj/Release/arduinoSrc0022/Print.o +Print::println() obj/Release/arduinoSrc0022/Print.o +Print::println(String const&) obj/Release/arduinoSrc0022/Print.o +Print::println(char const*) obj/Release/arduinoSrc0022/Print.o +Print::println(char, int) obj/Release/arduinoSrc0022/Print.o +Print::println(double, int) obj/Release/arduinoSrc0022/Print.o +Print::println(int, int) obj/Release/arduinoSrc0022/Print.o +Print::println(long, int) obj/Release/arduinoSrc0022/Print.o +Print::println(unsigned char, int) obj/Release/arduinoSrc0022/Print.o +Print::println(unsigned int, int) obj/Release/arduinoSrc0022/Print.o +Print::println(unsigned long, int) obj/Release/arduinoSrc0022/Print.o +Print::write(char const*) obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o +Print::write(unsigned char const*, unsigned int) obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +SCLKcycle_R() obj/Release/main.o +SCLKcycle_W() obj/Release/main.o +Serial obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +String::String(String const&) obj/Release/arduinoSrc0022/WString.o +String::String(String const&) obj/Release/arduinoSrc0022/WString.o +String::String(char const*) obj/Release/arduinoSrc0022/WString.o +String::String(char const*) obj/Release/arduinoSrc0022/WString.o +String::String(char) obj/Release/arduinoSrc0022/WString.o +String::String(char) obj/Release/arduinoSrc0022/WString.o +String::String(int, int) obj/Release/arduinoSrc0022/WString.o +String::String(int, int) obj/Release/arduinoSrc0022/WString.o +String::String(long, int) obj/Release/arduinoSrc0022/WString.o +String::String(long, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned char) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned char) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned int, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned int, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned long, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned long, int) obj/Release/arduinoSrc0022/WString.o +String::charAt(unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::compareTo(String const&) const obj/Release/arduinoSrc0022/WString.o +String::concat(String const&) obj/Release/arduinoSrc0022/WString.o +String::endsWith(String const&) const obj/Release/arduinoSrc0022/WString.o +String::equals(String const&) const obj/Release/arduinoSrc0022/WString.o +String::equalsIgnoreCase(String const&) const obj/Release/arduinoSrc0022/WString.o +String::getBuffer(unsigned int) obj/Release/arduinoSrc0022/WString.o +String::getBytes(unsigned char*, unsigned int) obj/Release/arduinoSrc0022/WString.o +String::indexOf(String const&) const obj/Release/arduinoSrc0022/WString.o +String::indexOf(String const&, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::indexOf(char) const obj/Release/arduinoSrc0022/WString.o +String::indexOf(char, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(String const&) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(String const&, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(char) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(char, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::operator!=(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator+=(String const&) obj/Release/arduinoSrc0022/WString.o +String::operator<(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator<=(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator=(String const&) obj/Release/arduinoSrc0022/WString.o +String::operator==(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator>(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator>=(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator[](unsigned int) obj/Release/arduinoSrc0022/WString.o +String::operator[](unsigned int) const obj/Release/arduinoSrc0022/WString.o + obj/Release/arduinoSrc0022/Print.o +String::replace(String const&, String const&) obj/Release/arduinoSrc0022/WString.o +String::replace(char, char) obj/Release/arduinoSrc0022/WString.o +String::setCharAt(unsigned int, char) obj/Release/arduinoSrc0022/WString.o +String::startsWith(String const&) const obj/Release/arduinoSrc0022/WString.o +String::startsWith(String const&, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::substring(unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::substring(unsigned int, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::toCharArray(char*, unsigned int) obj/Release/arduinoSrc0022/WString.o +String::toInt() obj/Release/arduinoSrc0022/WString.o +String::toLowerCase() const obj/Release/arduinoSrc0022/WString.o +String::toUpperCase() const obj/Release/arduinoSrc0022/WString.o +String::trim() const obj/Release/arduinoSrc0022/WString.o +String::~String() obj/Release/arduinoSrc0022/WString.o +__addsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc0022/Print.o +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__brkval /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__clz_tab /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) +__clzsi2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) +__ctors_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__ctype_isfalse /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) +__ctype_istrue /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) +__cxa_pure_virtual obj/Release/main.o + obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__divmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o +__divsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc0022/Print.o +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduinoSrc0022/wiring.o + obj/Release/arduinoSrc0022/WString.o + obj/Release/arduinoSrc0022/WInterrupts.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + obj/Release/arduinoSrc0022/wiring_analog.o + obj/Release/arduinoSrc0022/WString.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +__do_global_ctors /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + obj/Release/arduinoSrc0022/HardwareSerial.o +__epilogue_restores__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o +__fixunssfsi /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o +__floatsisf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc0022/Print.o +__floatunsisf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc0022/Print.o +__flp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__fpcmp_parts_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) +__gesf2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__heap_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__ltsf2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc0022/Print.o +__malloc_heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) +__malloc_heap_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__malloc_margin /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) +__mulsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc0022/Print.o +__mulsi3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/WMath.o + obj/Release/arduinoSrc0022/Tone.o +__mulsi_const_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) +__pack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o +__tablejump2__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) +__udivmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o +__unpack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__vector_1 obj/Release/arduinoSrc0022/WInterrupts.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 obj/Release/arduinoSrc0022/wiring.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 obj/Release/arduinoSrc0022/HardwareSerial.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 obj/Release/arduinoSrc0022/WInterrupts.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 obj/Release/arduinoSrc0022/Tone.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +advertise() obj/Release/adapticsBT.o + obj/Release/main.o +analogRead obj/Release/arduinoSrc0022/wiring_analog.o +analogReference obj/Release/arduinoSrc0022/wiring_analog.o +analogWrite obj/Release/arduinoSrc0022/wiring_analog.o +analog_reference obj/Release/arduinoSrc0022/wiring_analog.o +atol /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc0022/WString.o +attachInterrupt obj/Release/arduinoSrc0022/WInterrupts.o +connected obj/Release/main.o +data obj/Release/main.o +delay obj/Release/arduinoSrc0022/wiring.o + obj/Release/main.o + obj/Release/adapticsBT.o +delayMicroseconds obj/Release/arduinoSrc0022/wiring.o + obj/Release/main.o +detachInterrupt obj/Release/arduinoSrc0022/WInterrupts.o +digitalRead obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_shift.o + obj/Release/main.o +digitalWrite obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_shift.o + obj/Release/arduinoSrc0022/wiring_analog.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/main.o +digital_pin_to_bit_mask_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/Tone.o +digital_pin_to_port_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/Tone.o +digital_pin_to_timer_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_analog.o +disableTimer(unsigned char) obj/Release/arduinoSrc0022/Tone.o +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +free /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o +init obj/Release/arduinoSrc0022/wiring.o + obj/Release/main.o +isspace /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc0022/WString.o +itoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc0022/WString.o +ltoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc0022/WString.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +makeWord(unsigned char, unsigned char) obj/Release/arduinoSrc0022/WMath.o +makeWord(unsigned int) obj/Release/arduinoSrc0022/WMath.o +malloc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o +map(long, long, long, long, long) obj/Release/arduinoSrc0022/WMath.o +memcpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) +micros obj/Release/arduinoSrc0022/wiring.o +millis obj/Release/arduinoSrc0022/wiring.o +noTone(unsigned char) obj/Release/arduinoSrc0022/Tone.o +packetSize obj/Release/main.o +pinMode obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_analog.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/main.o + obj/Release/adapticsBT.o +port_to_input_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/wiring_digital.o +port_to_mode_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_digital.o +port_to_output_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/Tone.o +pulseIn obj/Release/arduinoSrc0022/wiring_pulse.o +random /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o +random(long) obj/Release/arduinoSrc0022/WMath.o +random(long, long) obj/Release/arduinoSrc0022/WMath.o +randomSeed(unsigned int) obj/Release/arduinoSrc0022/WMath.o +random_r /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) +readByte() obj/Release/main.o +realloc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o +rx_buffer obj/Release/arduinoSrc0022/HardwareSerial.o +setupBlueTooth() obj/Release/adapticsBT.o + obj/Release/main.o +shiftIn obj/Release/arduinoSrc0022/wiring_shift.o +shiftOut obj/Release/arduinoSrc0022/wiring_shift.o +srandom /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o +startRead() obj/Release/main.o +startWrite() obj/Release/main.o +strcat /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + obj/Release/arduinoSrc0022/WString.o +strchr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc0022/WString.o +strcmp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc0022/WString.o +strcpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc0022/WString.o +strncmp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc0022/WString.o +strncpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc0022/WString.o +strrchr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc0022/WString.o +strrev /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) +strstr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc0022/WString.o +timer0_millis obj/Release/arduinoSrc0022/wiring.o +timer0_overflow_count obj/Release/arduinoSrc0022/wiring.o +timer0_pin_mask obj/Release/arduinoSrc0022/Tone.o +timer0_pin_port obj/Release/arduinoSrc0022/Tone.o +timer0_toggle_count obj/Release/arduinoSrc0022/Tone.o +timer1_pin_mask obj/Release/arduinoSrc0022/Tone.o +timer1_pin_port obj/Release/arduinoSrc0022/Tone.o +timer1_toggle_count obj/Release/arduinoSrc0022/Tone.o +timer2_pin_mask obj/Release/arduinoSrc0022/Tone.o +timer2_pin_port obj/Release/arduinoSrc0022/Tone.o +timer2_toggle_count obj/Release/arduinoSrc0022/Tone.o +tolower /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc0022/WString.o +tone(unsigned char, unsigned int, unsigned long) obj/Release/arduinoSrc0022/Tone.o +toupper /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc0022/WString.o +ultoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc0022/WString.o +vtable for HardwareSerial obj/Release/arduinoSrc0022/HardwareSerial.o +vtable for Print obj/Release/arduinoSrc0022/Print.o +vtable for Stream obj/Release/arduinoSrc0022/HardwareSerial.o +writeByte(unsigned char) obj/Release/main.o +writeDMM() obj/Release/main.o +writeStartBit() obj/Release/main.o +writeStopBit() obj/Release/main.o diff --git a/ESS1995test_328p/burn b/ESS1995test_328p/burn new file mode 100755 index 0000000..04ef732 --- /dev/null +++ b/ESS1995test_328p/burn @@ -0,0 +1 @@ +avrdude -p m328p -c avrispmkII -P usb -b 1000000 -F -u -U flash:w:bin/Release/ESS1995test_328p.elf.hex diff --git a/ESS1995test_328p/electic.h b/ESS1995test_328p/electic.h new file mode 100644 index 0000000..326f900 --- /dev/null +++ b/ESS1995test_328p/electic.h @@ -0,0 +1,72 @@ +/* + ESS1995 communications test + + should the bitfields be parsed in the MCU or the app? + + the device needs to be able to do the ranging itself. + + data format- + + ACK is necessary + + write per read? or is it a delay thing + + +*/ + +#include <WProgram.h> //main Arduino header file +#include "adapticsBT.h" + +#define DATA_NEW 2 +#define SCLK 3 +#define SDATA 4 +#define CS 5 + +//feedback leds +#define OUTPUT1 12 +#define OUTPUT2 13 + +#define WRITE_ID 0b11001000 +#define READ_ID 0b11001001 + +//clock delays are doubled for 8MHZ chip - CPUSPD isnt working +//6 and 3 = 83kHz, doesn't work with ISP plugged in +//500Hz works with ISP (sometimes) + +#define CLOCK_DELAY 20 +#define START_DELAY 10 + +const uint16_t ELECTIC_ID = 0xF0; +uint8_t packetSize = 7; +bool connected=false; + +uint8_t data[10]; + +//default write values +uint8_t CB_SHBP = 0b0; +uint8_t CB_function = 0b0000; //0b0000 voltage mode +uint8_t CB_VARCrange = 0b000; //0b001 6v +uint8_t CB_FREQrange = 0b000; +uint8_t CB_BUZfreq = 0b000; +uint8_t CB_ADCrate = 0b00; //0b11 fastest 50hz +uint8_t CB_ACmode = 0b0; +uint8_t CB_PEAKmode = 0b0; +uint8_t CB_PCALmode = 0b0; +uint8_t CB_LPFbw = 0b000; +uint8_t CB_EXTdiode = 0b0; +uint8_t CB_OPconf = 0b00; +uint8_t CB_FREQinprest = 0b0; +uint8_t CB_ADPext = 0b0; +uint8_t CB_DCfs = 0b0; + + +void SCLKcycle_W(); +void SCLKcycle_R(); +void startRead(); +void startWrite(); +void writeByte(uint8_t data); +void writeStartBit(); +void writeStopBit(); +uint8_t readByte(); +void writeDMM(); +int main(); diff --git a/ESS1995test_328p/main.cpp b/ESS1995test_328p/main.cpp new file mode 100644 index 0000000..66dd792 --- /dev/null +++ b/ESS1995test_328p/main.cpp @@ -0,0 +1,254 @@ + +/* + ESS1995 communications test + + proof of concept + + +*/ + +#include "electic.h" + +extern "C" void __cxa_pure_virtual() +{ + cli(); + for (;;); +} + +int main(){ + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + + pinMode(CS,OUTPUT); + digitalWrite(CS,LOW); //turn off DMM, maybe it doesn't like waiting around + + setupBlueTooth(); + + pinMode(DATA_NEW,INPUT); + pinMode(SCLK,OUTPUT); + pinMode(BTC,INPUT); + + pinMode(OUTPUT1, OUTPUT); + pinMode(OUTPUT2, OUTPUT); + + digitalWrite(OUTPUT2,HIGH); + + digitalWrite(CS,HIGH); //select DMM + + + + + + uint16_t delayMillis=250; + + //send 1st write to initiate readings - not necessary - what is default mode? + + + + +/* +writeDMM(); + delay(delayMillis); + startWrite(); + writeStartBit(); + writeByte(WRITE_ID); + writeByte(WB1); + writeByte(WB2); + writeByte(WB3); + writeByte(WB4); + writeStopBit(); //is ACK already the same as stop bit? + */ + + + + + + + + //variables to read + uint8_t DB_STATUS; + /* + uint8_t DB_ASIGN; + uint8_t DB_BSIGN; + uint8_t DB_PMAX; + uint8_t DB_PMIN; + uint8_t DB_BTS; + uint8_t DB_ALARM; + uint8_t DB_HF; + uint8_t DB_LF; + uint8_t DB_LDUTY; + uint8_t DB_STA; + uint8_t DB_F_FIN; + */ + uint32_t DB_D0; + uint16_t DB_D1; + uint32_t DB_D2; + uint32_t DB_D3; + + delay(delayMillis); + writeDMM(); + + while(1) { + if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to send data + digitalWrite(OUTPUT1,HIGH); + digitalWrite(OUTPUT2,LOW); + startWrite(); + writeStartBit(); + writeByte(READ_ID); + if (digitalRead(DATA_NEW)==LOW){ //ID confirmed + digitalWrite(OUTPUT2,HIGH); + startRead(); + for (int i=0;i<10;i++) { + data[i] = readByte(); + } + //stop bit comes from the MPU? does seem to be necessary. + startWrite(); + writeStopBit(); + + //parse data + DB_STATUS=data[0]; + /* + DB_ASIGN=data[0]>>7; + DB_BSIGN=(data[0]>>6) & 0b01; + DB_PMAX=(data[0]>>5) & 0b01; + DB_PMIN=(data[0]>>4) & 0b01; + DB_BTS=(data[0]>>2) & 0b11; + DB_ALARM=data[0]& 0b01; + DB_HF=data[1]>>7; + DB_LF=(data[1]>>6) & 0b01; + DB_LDUTY=(data[1]>>5) & 0b01; + DB_STA=((data[1]>>3) & 0b10)|((data[0]>>1) & 0b01); + DB_F_FIN=(data[1]>>3) & 0b01; + */ + DB_D0=(((uint32_t)( data[1] & 0b111))<<16)|(((uint32_t)data[2])<<8)|data[3]; + DB_D1=(((uint16_t)data[4])<<2)|((data[5] & 0b11000000)>>6); + DB_D2=(((uint32_t)( data[5] & 0b111111))<<13)|(((uint32_t) data[6] )<<5)|(((uint32_t)( data[7] & 0b11111000))>>3); + DB_D3=(((uint32_t)( data[7] & 0b111))<<16)|(((uint32_t) data[8])<<8)|data[9]; + + + while (Serial.available() > 0) { + // get incoming byte: + uint8_t sampleCode = Serial.read(); + switch (sampleCode) { + case 1: + delayMillis=1000; + break; + case 2: + delayMillis=250; + break; + case 3: + delayMillis=50; + break; + } + } + + + if (digitalRead(BTC)){ + if (!connected) connected=true; + // data packet : + // ID (2 byte) + // no of bytes (max 255) + // data bytes + Serial.write((uint8_t*)&ELECTIC_ID,2); + Serial.write((uint8_t*)&packetSize,1); + Serial.write((uint8_t*)&DB_STATUS,1); + Serial.write((uint8_t*)&DB_D0,4); + Serial.write((uint8_t*)&DB_D1,2); + } + else { + if (connected) { + advertise(); + connected=false; + } + } + } + } + + delay(delayMillis); + digitalWrite(OUTPUT1,LOW); + digitalWrite(OUTPUT2,LOW); + //delay(delayMillis); + } +} +void startWrite() { + pinMode(SDATA,OUTPUT); + digitalWrite(SCLK, HIGH); +} +void startRead() { + pinMode(SDATA,INPUT); + digitalWrite(SCLK, HIGH); +} +void SCLKcycle_W() { + //insert a high clock cycle, normally LOW + delayMicroseconds(START_DELAY); + digitalWrite(SCLK, HIGH); + delayMicroseconds(CLOCK_DELAY); + digitalWrite(SCLK, LOW); + delayMicroseconds(START_DELAY); +} +void SCLKcycle_R() { + //insert a low clock cycle, normally HIGH + delayMicroseconds(START_DELAY); + digitalWrite(SCLK, LOW); + delayMicroseconds(CLOCK_DELAY); + digitalWrite(SCLK, HIGH); + delayMicroseconds(START_DELAY); +} +void writeByte(uint8_t data){ + + for (uint8_t i=0,bit=7;i<8;i++,bit--) { + digitalWrite(SDATA,(data>>bit)&0b01); + SCLKcycle_W(); + } + digitalWrite(SDATA,HIGH); //ACK/ stopbit should be HIGH? + SCLKcycle_W(); //ACK INTERVAL +} +void writeStopBit(){ + digitalWrite(SDATA,LOW); //prepare SDATA + delayMicroseconds(START_DELAY); + digitalWrite(SCLK,HIGH); + delayMicroseconds(START_DELAY); + digitalWrite(SDATA,HIGH); //stop bit +} +void writeStartBit(){ + digitalWrite(SDATA, HIGH); //should be anyway + digitalWrite(SCLK, HIGH); + delayMicroseconds(START_DELAY); + digitalWrite(SDATA,LOW); //start bit + delayMicroseconds(START_DELAY); + digitalWrite(SCLK, LOW); + delayMicroseconds(START_DELAY); +} +uint8_t readByte(){ + uint8_t data=0; + uint8_t thisdata; + //delayMicroseconds(START_DELAY); + //digitalWrite(SCLK, HIGH); //load first bit + delayMicroseconds(START_DELAY); + for (uint8_t i=0,bit=7;i<8;i++,bit--) { + thisdata=digitalRead(SDATA); + data = data | (thisdata<<bit); + digitalWrite(OUTPUT1,thisdata); + SCLKcycle_R(); + } + SCLKcycle_R(); //ACK + return data; +} +void writeDMM(){ + uint8_t WB1 = (CB_SHBP << 7) | (CB_function << 3) | (CB_VARCrange); + uint8_t WB2 = (CB_BUZfreq << 5) | (CB_ADCrate << 3) | (CB_FREQrange); + uint8_t WB3 = (CB_ACmode << 7) | (CB_EXTdiode << 4) | (CB_DCfs << 3) | (CB_LPFbw << 1) | (CB_FREQinprest); + uint8_t WB4 = (CB_PEAKmode << 7) | (CB_PCALmode << 6) | (CB_OPconf << 2) | (CB_ADPext); + + startWrite(); + writeStartBit(); + writeByte(WRITE_ID); + writeByte(WB1); + writeByte(WB2); + writeByte(WB3); + writeByte(WB4); + writeStopBit(); + +} + + diff --git a/ESS1995test_328p/obj/Debug/main.o b/ESS1995test_328p/obj/Debug/main.o Binary files differnew file mode 100644 index 0000000..6af3ec1 --- /dev/null +++ b/ESS1995test_328p/obj/Debug/main.o diff --git a/ESS1995test_328p/obj/Release/ESS1995test_328p/adapticsBT.o b/ESS1995test_328p/obj/Release/ESS1995test_328p/adapticsBT.o Binary files differnew file mode 100644 index 0000000..cf0e7d9 --- /dev/null +++ b/ESS1995test_328p/obj/Release/ESS1995test_328p/adapticsBT.o diff --git a/ESS1995test_328p/obj/Release/adapticsBT.o b/ESS1995test_328p/obj/Release/adapticsBT.o Binary files differnew file mode 100644 index 0000000..2b53513 --- /dev/null +++ b/ESS1995test_328p/obj/Release/adapticsBT.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/HardwareSerial.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/HardwareSerial.o Binary files differnew file mode 100644 index 0000000..dcda4a1 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/HardwareSerial.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/Print.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/Print.o Binary files differnew file mode 100644 index 0000000..ae0a510 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/Print.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/Tone.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/Tone.o Binary files differnew file mode 100644 index 0000000..a4f6579 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/Tone.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/WInterrupts.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/WInterrupts.o Binary files differnew file mode 100644 index 0000000..97dcc3a --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/WInterrupts.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/WMath.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/WMath.o Binary files differnew file mode 100644 index 0000000..2cfc23c --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/WMath.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/WString.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/WString.o Binary files differnew file mode 100644 index 0000000..04d6aa3 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/WString.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/main.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/main.o Binary files differnew file mode 100644 index 0000000..647ae11 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/main.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/pins_arduino.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/pins_arduino.o Binary files differnew file mode 100644 index 0000000..a88dbe9 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/pins_arduino.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring.o Binary files differnew file mode 100644 index 0000000..bf476a1 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_analog.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_analog.o Binary files differnew file mode 100644 index 0000000..4eeadd0 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_analog.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_digital.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_digital.o Binary files differnew file mode 100644 index 0000000..919bb9e --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_digital.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_pulse.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_pulse.o Binary files differnew file mode 100644 index 0000000..70b4435 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_pulse.o diff --git a/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_shift.o b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_shift.o Binary files differnew file mode 100644 index 0000000..dae11d4 --- /dev/null +++ b/ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_shift.o diff --git a/ESS1995test_328p/obj/Release/main.o b/ESS1995test_328p/obj/Release/main.o Binary files differnew file mode 100644 index 0000000..ae50387 --- /dev/null +++ b/ESS1995test_328p/obj/Release/main.o diff --git a/arduinoSrc0022/HardwareSerial.cpp b/arduinoSrc0022/HardwareSerial.cpp new file mode 100644 index 0000000..4397efb --- /dev/null +++ b/arduinoSrc0022/HardwareSerial.cpp @@ -0,0 +1,303 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul +*/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <inttypes.h> +#include "wiring.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#if (RAMEND < 1000) + #define RX_BUFFER_SIZE 32 +#else + #define RX_BUFFER_SIZE 128 +#endif + +struct ring_buffer +{ + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *rx_buffer) +{ + int i = (unsigned int)(rx_buffer->head + 1) % RX_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer->tail) { + rx_buffer->buffer[rx_buffer->head] = c; + rx_buffer->head = i; + } +} + +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) + { + #if defined(UDR0) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; // atmega8535 + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#elif defined(SIG_USART0_RECV) && defined(UDR0) + SIGNAL(SIG_USART0_RECV) + { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } +#elif defined(SIG_UART0_RECV) && defined(UDR0) + SIGNAL(SIG_UART0_RECV) + { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } +//#elif defined(SIG_USART_RECV) +#elif defined(USART0_RX_vect) + // fixed by Mark Sproul this is on the 644/644p + //SIGNAL(SIG_USART_RECV) + SIGNAL(USART0_RX_vect) + { + #if defined(UDR0) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; // atmega8, atmega32 + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#elif defined(SIG_UART_RECV) + // this is for atmega8 + SIGNAL(SIG_UART_RECV) + { + #if defined(UDR0) + unsigned char c = UDR0; // atmega645 + #elif defined(UDR) + unsigned char c = UDR; // atmega8 + #endif + store_char(c, &rx_buffer); + } +#elif defined(USBCON) + #warning No interrupt handler for usart 0 + #warning Serial(0) is on USB interface +#else + #error No interrupt handler for usart 0 +#endif + +//#if defined(SIG_USART1_RECV) +#if defined(USART1_RX_vect) + //SIGNAL(SIG_USART1_RECV) + SIGNAL(USART1_RX_vect) + { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + SIGNAL(USART2_RX_vect) + { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + SIGNAL(USART3_RX_vect) + { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udre = udre; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); +} + +void HardwareSerial::end() +{ + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % RX_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + _rx_buffer->head = _rx_buffer->tail; +} + +void HardwareSerial::write(uint8_t c) +{ + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0); +#elif defined(USBCON) + #warning no serial port defined (port 0) +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3); +#endif + +#endif // whole file + diff --git a/arduinoSrc0022/HardwareSerial.h b/arduinoSrc0022/HardwareSerial.h new file mode 100644 index 0000000..3efa775 --- /dev/null +++ b/arduinoSrc0022/HardwareSerial.h @@ -0,0 +1,76 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include <inttypes.h> + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udre; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); + void begin(long); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual void write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "usb_api.h" +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +#endif diff --git a/arduinoSrc0022/Print.cpp b/arduinoSrc0022/Print.cpp new file mode 100644 index 0000000..4ee556d --- /dev/null +++ b/arduinoSrc0022/Print.cpp @@ -0,0 +1,220 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <math.h> +#include "wiring.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +void Print::write(const char *str) +{ + while (*str) + write(*str++); +} + +/* default implementation: may be overridden */ +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) + write(*buffer++); +} + +void Print::print(const String &s) +{ + for (int i = 0; i < s.length(); i++) { + write(s[i]); + } +} + +void Print::print(const char str[]) +{ + write(str); +} + +void Print::print(char c, int base) +{ + print((long) c, base); +} + +void Print::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Print::print(int n, int base) +{ + print((long) n, base); +} + +void Print::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Print::print(long n, int base) +{ + if (base == 0) { + write(n); + } else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void Print::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Print::print(double n, int digits) +{ + printFloat(n, digits); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(const String &s) +{ + print(s); + println(); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(char c, int base) +{ + print(c, base); + println(); +} + +void Print::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Print::println(int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n, int digits) +{ + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i<digits; ++i) + rounding /= 10.0; + + number += rounding; + + // Extract the integer part of the number and print it + unsigned long int_part = (unsigned long)number; + double remainder = number - (double)int_part; + print(int_part); + + // Print the decimal point, but only if there are digits beyond + if (digits > 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/arduinoSrc0022/Print.h b/arduinoSrc0022/Print.h new file mode 100644 index 0000000..b092ae5 --- /dev/null +++ b/arduinoSrc0022/Print.h @@ -0,0 +1,66 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include <inttypes.h> +#include <stdio.h> // for size_t + +#include "WString.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + virtual void write(uint8_t) = 0; + virtual void write(const char *str); + virtual void write(const uint8_t *buffer, size_t size); + + void print(const String &); + void print(const char[]); + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + + void println(const String &s); + void println(const char[]); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); +}; + +#endif diff --git a/arduinoSrc0022/Stream.h b/arduinoSrc0022/Stream.h new file mode 100644 index 0000000..93d8275 --- /dev/null +++ b/arduinoSrc0022/Stream.h @@ -0,0 +1,35 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Stream_h +#define Stream_h + +#include <inttypes.h> +#include "Print.h" + +class Stream : public Print +{ + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; +}; + +#endif diff --git a/arduinoSrc0022/Tone.cpp b/arduinoSrc0022/Tone.cpp new file mode 100644 index 0000000..c3910e7 --- /dev/null +++ b/arduinoSrc0022/Tone.cpp @@ -0,0 +1,601 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +*************************************************/ + +#include <avr/interrupt.h> +#include <avr/pgmspace.h> +#include "wiring.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +// MLS: This does not make sense, the 3 options are the same +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/arduinoSrc0022/WCharacter.h b/arduinoSrc0022/WCharacter.h new file mode 100644 index 0000000..79733b5 --- /dev/null +++ b/arduinoSrc0022/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include <ctype.h> + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif
\ No newline at end of file diff --git a/arduinoSrc0022/WConstants.h b/arduinoSrc0022/WConstants.h new file mode 100644 index 0000000..3e19ac4 --- /dev/null +++ b/arduinoSrc0022/WConstants.h @@ -0,0 +1 @@ +#include "wiring.h" diff --git a/arduinoSrc0022/WInterrupts.c b/arduinoSrc0022/WInterrupts.c new file mode 100644 index 0000000..3b3e0c9 --- /dev/null +++ b/arduinoSrc0022/WInterrupts.c @@ -0,0 +1,249 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include <inttypes.h> +#include <avr/io.h> +#include <avr/interrupt.h> +#include <avr/pgmspace.h> +#include <stdio.h> + +#include "WConstants.h" +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 3: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 4: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; + case 5: + EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30); + EIMSK |= (1 << INT3); + break; + case 0: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 1: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; +#else + case 0: + #if defined(EICRA) && defined(ISC00) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GICR |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GIMSK |= (1 << INT0); + #else + #error attachInterrupt not finished for this CPU (case 0) + #endif + break; + + case 1: + #if defined(EICRA) && defined(ISC10) && defined(ISC11) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(ISC11) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GICR |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(GIMSK) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GIMSK |= (1 << INT1); + #else + #warning attachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + } +} + +void detachInterrupt(uint8_t interruptNum) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + // Disable the interrupt. (We can't assume that interruptNum is equal + // to the number of the EIMSK bit to clear, as this isn't true on the + // ATmega8. There, INT0 is 6 and INT1 is 7.) + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EIMSK &= ~(1 << INT0); + break; + case 3: + EIMSK &= ~(1 << INT1); + break; + case 4: + EIMSK &= ~(1 << INT2); + break; + case 5: + EIMSK &= ~(1 << INT3); + break; + case 0: + EIMSK &= ~(1 << INT4); + break; + case 1: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; +#else + case 0: + #if defined(EIMSK) && defined(INT0) + EIMSK &= ~(1 << INT0); + #elif defined(GICR) && defined(ISC00) + GICR &= ~(1 << INT0); // atmega32 + #elif defined(GIMSK) && defined(INT0) + GIMSK &= ~(1 << INT0); + #else + #error detachInterrupt not finished for this cpu + #endif + break; + + case 1: + #if defined(EIMSK) && defined(INT1) + EIMSK &= ~(1 << INT1); + #elif defined(GICR) && defined(INT1) + GICR &= ~(1 << INT1); // atmega32 + #elif defined(GIMSK) && defined(INT1) + GIMSK &= ~(1 << INT1); + #else + #warning detachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + + intFunc[interruptNum] = 0; + } +} + +/* +void attachInterruptTwi(void (*userFunc)(void) ) { + twiIntFunc = userFunc; +} +*/ + +#if defined(EICRA) && defined(EICRB) + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_4]) + intFunc[EXTERNAL_INT_4](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_5]) + intFunc[EXTERNAL_INT_5](); +} + +SIGNAL(INT4_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT5_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT6_vect) { + if(intFunc[EXTERNAL_INT_6]) + intFunc[EXTERNAL_INT_6](); +} + +SIGNAL(INT7_vect) { + if(intFunc[EXTERNAL_INT_7]) + intFunc[EXTERNAL_INT_7](); +} + +#else + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +#endif + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/arduinoSrc0022/WMath.cpp b/arduinoSrc0022/WMath.cpp new file mode 100644 index 0000000..2120c4c --- /dev/null +++ b/arduinoSrc0022/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0) { + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }
\ No newline at end of file diff --git a/arduinoSrc0022/WProgram.h b/arduinoSrc0022/WProgram.h new file mode 100644 index 0000000..f73e760 --- /dev/null +++ b/arduinoSrc0022/WProgram.h @@ -0,0 +1,63 @@ +#ifndef WProgram_h +#define WProgram_h + +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <avr/interrupt.h> + +#include "wiring.h" + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const static uint8_t A0 = 54; +const static uint8_t A1 = 55; +const static uint8_t A2 = 56; +const static uint8_t A3 = 57; +const static uint8_t A4 = 58; +const static uint8_t A5 = 59; +const static uint8_t A6 = 60; +const static uint8_t A7 = 61; +const static uint8_t A8 = 62; +const static uint8_t A9 = 63; +const static uint8_t A10 = 64; +const static uint8_t A11 = 65; +const static uint8_t A12 = 66; +const static uint8_t A13 = 67; +const static uint8_t A14 = 68; +const static uint8_t A15 = 69; +#else +const static uint8_t A0 = 14; +const static uint8_t A1 = 15; +const static uint8_t A2 = 16; +const static uint8_t A3 = 17; +const static uint8_t A4 = 18; +const static uint8_t A5 = 19; +const static uint8_t A6 = 20; +const static uint8_t A7 = 21; +#endif + +#endif + +#endif
\ No newline at end of file diff --git a/arduinoSrc0022/WString.cpp b/arduinoSrc0022/WString.cpp new file mode 100644 index 0000000..db5a441 --- /dev/null +++ b/arduinoSrc0022/WString.cpp @@ -0,0 +1,443 @@ +/* + WString.cpp - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include <stdlib.h> +#include "WProgram.h" +#include "WString.h" + + +String::String( const char *value ) +{ + if ( value == NULL ) + value = ""; + getBuffer( _length = strlen( value ) ); + if ( _buffer != NULL ) + strcpy( _buffer, value ); +} + +String::String( const String &value ) +{ + getBuffer( _length = value._length ); + if ( _buffer != NULL ) + strcpy( _buffer, value._buffer ); +} + +String::String( const char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL ) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const unsigned char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const int value, const int base ) +{ + char buf[33]; + itoa((signed long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned int value, const int base ) +{ + char buf[33]; + ultoa((unsigned long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const long value, const int base ) +{ + char buf[33]; + ltoa(value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned long value, const int base ) +{ + char buf[33]; + ultoa(value, buf, 10); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +char String::charAt( unsigned int loc ) const +{ + return operator[]( loc ); +} + +void String::setCharAt( unsigned int loc, const char aChar ) +{ + if(_buffer == NULL) return; + if(_length > loc) { + _buffer[loc] = aChar; + } +} + +int String::compareTo( const String &s2 ) const +{ + return strcmp( _buffer, s2._buffer ); +} + +const String & String::concat( const String &s2 ) +{ + return (*this) += s2; +} + +const String & String::operator=( const String &rhs ) +{ + if ( this == &rhs ) + return *this; + + if ( rhs._length > _length ) + { + free(_buffer); + getBuffer( rhs._length ); + } + + if ( _buffer != NULL ) { + _length = rhs._length; + strcpy( _buffer, rhs._buffer ); + } + return *this; +} + +//const String & String::operator+=( const char aChar ) +//{ +// if ( _length == _capacity ) +// doubleBuffer(); +// +// _buffer[ _length++ ] = aChar; +// _buffer[ _length ] = '\0'; +// return *this; +//} + +const String & String::operator+=( const String &other ) +{ + _length += other._length; + if ( _length > _capacity ) + { + char *temp = (char *)realloc(_buffer, _length + 1); + if ( temp != NULL ) { + _buffer = temp; + _capacity = _length; + } else { + _length -= other._length; + return *this; + } + } + strcat( _buffer, other._buffer ); + return *this; +} + + +int String::operator==( const String &rhs ) const +{ + return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 ); +} + +int String::operator!=( const String &rhs ) const +{ + return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 ); +} + +int String::operator<( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) < 0; +} + +int String::operator>( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) > 0; +} + +int String::operator<=( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) <= 0; +} + +int String::operator>=( const String & rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) >= 0; +} + +char & String::operator[]( unsigned int index ) +{ + static char dummy_writable_char; + if (index >= _length || !_buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return _buffer[ index ]; +} + +char String::operator[]( unsigned int index ) const +{ + // need to check for valid index, to do later + return _buffer[ index ]; +} + +boolean String::endsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0; +} + +boolean String::equals( const String &s2 ) const +{ + return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 ); +} + +boolean String::equalsIgnoreCase( const String &s2 ) const +{ + if ( this == &s2 ) + return true; //1; + else if ( _length != s2._length ) + return false; //0; + + return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0; +} + +String String::replace( char findChar, char replaceChar ) +{ + if ( _buffer == NULL ) return *this; + String theReturn = _buffer; + char* temp = theReturn._buffer; + while( (temp = strchr( temp, findChar )) != 0 ) + *temp = replaceChar; + + return theReturn; +} + +String String::replace( const String& match, const String& replace ) +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer, newString; + + int loc; + while ( (loc = temp.indexOf( match )) != -1 ) + { + newString += temp.substring( 0, loc ); + newString += replace; + temp = temp.substring( loc + match._length ); + } + newString += temp; + return newString; +} + +int String::indexOf( char temp ) const +{ + return indexOf( temp, 0 ); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char* temp = strchr( &_buffer[fromIndex], ch ); + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::indexOf( const String &s2 ) const +{ + return indexOf( s2, 0 ); +} + +int String::indexOf( const String &s2, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer ); + + if ( theFind == NULL ) + return -1; + + return theFind - _buffer; // pointer subtraction +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf( theChar, _length - 1 ); +} + +int String::lastIndexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + char tempchar = _buffer[fromIndex + 1]; + _buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( _buffer, ch ); + _buffer[fromIndex + 1] = tempchar; + + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::lastIndexOf( const String &s2 ) const +{ + return lastIndexOf( s2, _length - s2._length ); +} + +int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const +{ + // check for empty strings + if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length ) + return -1; + + // matching first character + char temp = s2[ 0 ]; + + for ( int i = fromIndex; i >= 0; i-- ) + { + if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) ) + return i; + } + return -1; +} + +boolean String::startsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return startsWith( s2, 0 ); +} + +boolean String::startsWith( const String &s2, unsigned int offset ) const +{ + if ( offset > _length - s2._length ) + return 0; + + return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0; +} + +String String::substring( unsigned int left ) const +{ + return substring( left, _length ); +} + +String String::substring( unsigned int left, unsigned int right ) const +{ + if ( left > right ) + { + int temp = right; + right = left; + left = temp; + } + + if ( right > _length ) + { + right = _length; + } + + char temp = _buffer[ right ]; // save the replaced character + _buffer[ right ] = '\0'; + String outPut = ( _buffer + left ); // pointer arithmetic + _buffer[ right ] = temp; //restore character + return outPut; +} + +String String::toLowerCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] ); + return temp; +} + +String String::toUpperCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] ); + return temp; +} + +String String::trim() const +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer; + unsigned int i,j; + + for ( i = 0; i < _length; i++ ) + { + if ( !isspace(_buffer[i]) ) + break; + } + + for ( j = temp._length - 1; j > i; j-- ) + { + if ( !isspace(_buffer[j]) ) + break; + } + + return temp.substring( i, j + 1); +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy((char *)buf, _buffer, len); + buf[len] = 0; +} + +void String::toCharArray(char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy(buf, _buffer, len); + buf[len] = 0; +} + + +long String::toInt() { + return atol(_buffer); +} diff --git a/arduinoSrc0022/WString.h b/arduinoSrc0022/WString.h new file mode 100644 index 0000000..cadddb9 --- /dev/null +++ b/arduinoSrc0022/WString.h @@ -0,0 +1,112 @@ +/* + WString.h - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_h +#define String_h + +//#include "WProgram.h" +#include <stdlib.h> +#include <string.h> +#include <ctype.h> + +class String +{ + public: + // constructors + String( const char *value = "" ); + String( const String &value ); + String( const char ); + String( const unsigned char ); + String( const int, const int base=10); + String( const unsigned int, const int base=10 ); + String( const long, const int base=10 ); + String( const unsigned long, const int base=10 ); + ~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0; + + // operators + const String & operator = ( const String &rhs ); + const String & operator +=( const String &rhs ); + //const String & operator +=( const char ); + int operator ==( const String &rhs ) const; + int operator !=( const String &rhs ) const; + int operator < ( const String &rhs ) const; + int operator > ( const String &rhs ) const; + int operator <=( const String &rhs ) const; + int operator >=( const String &rhs ) const; + char operator []( unsigned int index ) const; + char& operator []( unsigned int index ); + //operator const char *() const { return _buffer; } + + // general methods + char charAt( unsigned int index ) const; + int compareTo( const String &anotherString ) const; + unsigned char endsWith( const String &suffix ) const; + unsigned char equals( const String &anObject ) const; + unsigned char equalsIgnoreCase( const String &anotherString ) const; + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + const unsigned int length( ) const { return _length; } + void setCharAt(unsigned int index, const char ch); + unsigned char startsWith( const String &prefix ) const; + unsigned char startsWith( const String &prefix, unsigned int toffset ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + String toLowerCase( ) const; + String toUpperCase( ) const; + String trim( ) const; + void getBytes(unsigned char *buf, unsigned int bufsize); + void toCharArray(char *buf, unsigned int bufsize); + long toInt( ); + const String& concat( const String &str ); + String replace( char oldChar, char newChar ); + String replace( const String& match, const String& replace ); + friend String operator + ( String lhs, const String &rhs ); + + protected: + char *_buffer; // the actual char array + unsigned int _capacity; // the array length minus one (for the '\0') + unsigned int _length; // the String length (not counting the '\0') + + void getBuffer(unsigned int maxStrLen); + + private: + +}; + +// allocate buffer space +inline void String::getBuffer(unsigned int maxStrLen) +{ + _capacity = maxStrLen; + _buffer = (char *) malloc(_capacity + 1); + if (_buffer == NULL) _length = _capacity = 0; +} + +inline String operator+( String lhs, const String &rhs ) +{ + return lhs += rhs; +} + + +#endif diff --git a/arduinoSrc0022/binary.h b/arduinoSrc0022/binary.h new file mode 100644 index 0000000..af14980 --- /dev/null +++ b/arduinoSrc0022/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/arduinoSrc0022/main.cpp b/arduinoSrc0022/main.cpp new file mode 100644 index 0000000..cc6e81d --- /dev/null +++ b/arduinoSrc0022/main.cpp @@ -0,0 +1,14 @@ +#include <WProgram.h> + +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/arduinoSrc0022/pins_arduino.c b/arduinoSrc0022/pins_arduino.c new file mode 100644 index 0000000..0c816e9 --- /dev/null +++ b/arduinoSrc0022/pins_arduino.c @@ -0,0 +1,465 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include <avr/io.h> +#include "wiring_private.h" +#include "pins_arduino.h" + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA8 & 168 / ARDUINO +// +// +-\/-+ +// PC6 1| |28 PC5 (AI 5) +// (D 0) PD0 2| |27 PC4 (AI 4) +// (D 1) PD1 3| |26 PC3 (AI 3) +// (D 2) PD2 4| |25 PC2 (AI 2) +// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) +// (D 4) PD4 6| |23 PC0 (AI 0) +// VCC 7| |22 GND +// GND 8| |21 AREF +// PB6 9| |20 AVCC +// PB7 10| |19 PB5 (D 13) +// PWM+ (D 5) PD5 11| |18 PB4 (D 12) +// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM +// (D 7) PD7 13| |16 PB2 (D 10) PWM +// (D 8) PB0 14| |15 PB1 (D 9) PWM +// +----+ +// +// (PWM+ indicates the additional PWM pins on the ATmega168.) + +// ATMEL ATMEGA1280 / ARDUINO +// +// 0-7 PE0-PE7 works +// 8-13 PB0-PB5 works +// 14-21 PA0-PA7 works +// 22-29 PH0-PH7 works +// 30-35 PG5-PG0 works +// 36-43 PC7-PC0 works +// 44-51 PJ7-PJ0 works +// 52-59 PL7-PL0 works +// 60-67 PD7-PD0 works +// A0-A7 PF0-PF7 +// A8-A15 PK0-PK7 + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + &DDRA, + &DDRB, + &DDRC, + &DDRD, + &DDRE, + &DDRF, + &DDRG, + &DDRH, + NOT_A_PORT, + &DDRJ, + &DDRK, + &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + &PORTA, + &PORTB, + &PORTC, + &PORTD, + &PORTE, + &PORTF, + &PORTG, + &PORTH, + NOT_A_PORT, + &PORTJ, + &PORTK, + &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + &PINA, + &PINB, + &PINC, + &PIND, + &PINE, + &PINF, + &PING, + &PINH, + NOT_A_PIN, + &PINJ, + &PINK, + &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 +}; +#else +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &DDRB, + &DDRC, + &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PORTB, + &PORTC, + &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PINB, + &PINC, + &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, /* 0 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PB, /* 8 */ + PB, + PB, + PB, + PB, + PB, + PC, /* 14 */ + PC, + PC, + PC, + PC, + PC, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(0), /* 14, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - port D */ + NOT_ON_TIMER, + NOT_ON_TIMER, + // on the ATmega168, digital pin 3 has hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, +#else + TIMER2B, +#endif + NOT_ON_TIMER, + // on the ATmega168, digital pins 5 and 6 have hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, + NOT_ON_TIMER, +#else + TIMER0B, + TIMER0A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, /* 8 - port B */ + TIMER1A, + TIMER1B, +#if defined(__AVR_ATmega8__) + TIMER2, +#else + TIMER2A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, /* 14 - port C */ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; +#endif diff --git a/arduinoSrc0022/pins_arduino.h b/arduinoSrc0022/pins_arduino.h new file mode 100644 index 0000000..bc931c5 --- /dev/null +++ b/arduinoSrc0022/pins_arduino.h @@ -0,0 +1,88 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include <avr/pgmspace.h> + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER5A 14 +#define TIMER5B 15 +#define TIMER5C 16 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const static uint8_t SS = 53; +const static uint8_t MOSI = 51; +const static uint8_t MISO = 50; +const static uint8_t SCK = 52; +#else +const static uint8_t SS = 10; +const static uint8_t MOSI = 11; +const static uint8_t MISO = 12; +const static uint8_t SCK = 13; +#endif + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#endif diff --git a/arduinoSrc0022/wiring.c b/arduinoSrc0022/wiring.c new file mode 100644 index 0000000..b90d07e --- /dev/null +++ b/arduinoSrc0022/wiring.c @@ -0,0 +1,289 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +SIGNAL(TIMER0_OVF_vect) +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); + +#if F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + + TCCR1B = 0; + + // set timer 1 prescale factor to 64 +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + sbi(TCCR1B, CS11); + sbi(TCCR1B, CS10); +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); + sbi(TCCR1, CS10); +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/arduinoSrc0022/wiring.h b/arduinoSrc0022/wiring.h new file mode 100644 index 0000000..e29959b --- /dev/null +++ b/arduinoSrc0022/wiring.h @@ -0,0 +1,135 @@ +/* + wiring.h - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#ifndef Wiring_h +#define Wiring_h + +#include <avr/io.h> +#include <stdlib.h> +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( ((a) * 1000L) / (F_CPU / 1000L) ) +#define microsecondsToClockCycles(a) ( ((a) * (F_CPU / 1000L)) / 1000L ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduinoSrc0022/wiring_analog.c b/arduinoSrc0022/wiring_analog.c new file mode 100644 index 0000000..d248f4c --- /dev/null +++ b/arduinoSrc0022/wiring_analog.c @@ -0,0 +1,259 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: + // connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} diff --git a/arduinoSrc0022/wiring_digital.c b/arduinoSrc0022/wiring_digital.c new file mode 100644 index 0000000..0949da4 --- /dev/null +++ b/arduinoSrc0022/wiring_digital.c @@ -0,0 +1,166 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + if (val == LOW) { + uint8_t oldSREG = SREG; + cli(); + *out &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *out |= bit; + SREG = oldSREG; + } +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/arduinoSrc0022/wiring_private.h b/arduinoSrc0022/wiring_private.h new file mode 100644 index 0000000..11f6f00 --- /dev/null +++ b/arduinoSrc0022/wiring_private.h @@ -0,0 +1,68 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include <avr/io.h> +#include <avr/interrupt.h> +#include <avr/delay.h> +#include <stdio.h> +#include <stdarg.h> + +#include "wiring.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduinoSrc0022/wiring_pulse.c b/arduinoSrc0022/wiring_pulse.c new file mode 100644 index 0000000..0d96886 --- /dev/null +++ b/arduinoSrc0022/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/arduinoSrc0022/wiring_shift.c b/arduinoSrc0022/wiring_shift.c new file mode 100644 index 0000000..cfe7867 --- /dev/null +++ b/arduinoSrc0022/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/arduino_libs/ArduinoSerialManager.zip b/arduino_libs/ArduinoSerialManager.zip Binary files differnew file mode 100644 index 0000000..7693b72 --- /dev/null +++ b/arduino_libs/ArduinoSerialManager.zip diff --git a/arduino_libs/ByteBuffer/.svn/all-wcprops b/arduino_libs/ByteBuffer/.svn/all-wcprops new file mode 100755 index 0000000..de5c62d --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/r/prg/!svn/ver/5368/trunk/arduino/libraries/ByteBuffer +END +ByteBuffer.h +K 25 +svn:wc:ra_dav:version-url +V 68 +/r/prg/!svn/ver/5368/trunk/arduino/libraries/ByteBuffer/ByteBuffer.h +END +ByteBuffer.cpp +K 25 +svn:wc:ra_dav:version-url +V 70 +/r/prg/!svn/ver/5812/trunk/arduino/libraries/ByteBuffer/ByteBuffer.cpp +END diff --git a/arduino_libs/ByteBuffer/.svn/entries b/arduino_libs/ByteBuffer/.svn/entries new file mode 100755 index 0000000..4c4a628 --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/entries @@ -0,0 +1,120 @@ +10 + +dir +5368 +https://svn.media.mit.edu/r/prg/trunk/arduino/libraries/ByteBuffer +https://svn.media.mit.edu/r/prg + + + +2010-07-20T00:54:42.918731Z +5368 +siggi + + + + + + + + + + + + + + +bd000cc4-1869-4481-ad02-c3af97ea9c83 + +ByteBuffer.h +file + + + + +2010-07-19T22:27:55.000000Z +3b6d84df8e69905675772beb574cce67 +2010-07-20T00:54:42.918731Z +5368 +siggi + + + + + + + + + + + + + + + + + + + + + +844 + +SerialPacketHandler.cpp +file +5810 + + + + + + + + + + + + + + + + + + + +deleted + +ByteBuffer.cpp +file +5812 + + + +2010-09-02T16:31:44.000000Z +d95900d573ac73c8ccf95b384f8ec258 +2010-09-02T18:42:42.362483Z +5812 +siggi + + + + + + + + + + + + + + + + + + + + + +3483 + diff --git a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base new file mode 100755 index 0000000..b91a586 --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base @@ -0,0 +1,205 @@ +/* + ByteBuffer.cpp - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + */ + +#include "WProgram.h" +#include "ByteBuffer.h" + + +ByteBuffer::ByteBuffer(){ + +} + +void ByteBuffer::init(unsigned int buf_length){ + data = (byte*)malloc(sizeof(byte)*buf_length); + float_bytes = (byte*)malloc(sizeof(byte)*8); + capacity = buf_length; + position = 0; + length = 0; +} + +void ByteBuffer::clear(){ + position = 0; + length = 0; +} + +int ByteBuffer::getSize(){ + return length; +} + +int ByteBuffer::getCapacity(){ + return capacity; +} + +byte ByteBuffer::peek(unsigned int index){ + byte b = data[(position+index)%capacity]; + return b; +} + +int ByteBuffer::put(byte in){ + if(length < capacity){ + // save data byte at end of buffer + data[(position+length) % capacity] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +int ByteBuffer::putInFront(byte in){ + if(length < capacity){ + // save data byte at end of buffer + if( position == 0 ) + position = capacity-1; + else + position = (position-1)%capacity; + data[position] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +byte ByteBuffer::get(){ + byte b = 0; + if(length > 0){ + b = data[position]; + // move index down and decrement length + position = (position+1)%capacity; + length--; + } + + return b; +} + +byte ByteBuffer::getFromBack(){ + byte b = 0; + if(length > 0){ + b = data[(position+length-1)%capacity]; + length--; + } + + return b; +} + +// +// Ints +// + +int ByteBuffer::putIntInFront(int in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); +} + +int ByteBuffer::putInt(int in){ + byte *pointer = (byte *)∈ + put(pointer[1]); + put(pointer[0]); +} + + +int ByteBuffer::getInt(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +int ByteBuffer::getIntFromBack(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + return ret; +} + +// +// Longs +// + +int ByteBuffer::putLongInFront(long in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putLong(long in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + + +long ByteBuffer::getLong(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +long ByteBuffer::getLongFromBack(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + +// +// Floats +// + +int ByteBuffer::putFloatInFront(float in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putFloat(float in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + +float ByteBuffer::getFloat(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +float ByteBuffer::getFloatFromBack(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + diff --git a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base new file mode 100755 index 0000000..b100c2f --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base @@ -0,0 +1,57 @@ +/* + ByteBuffer.h - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + */ +#ifndef ByteBuffer_h +#define ByteBuffer_h + +#include "WProgram.h" + +class ByteBuffer +{ +public: + ByteBuffer(); + + void init(unsigned int buf_size); + + void clear(); + int getSize(); + int getCapacity(); + + int putInFront(byte in); + int put(byte in); + + byte get(); + byte getFromBack(); + + byte peek(unsigned int index); + + int putIntInFront(int in); + int putInt(int in); + + int putLongInFront(long in); + int putLong(long in); + + int getInt(); + int getIntFromBack(); + + long getLong(); + long getLongFromBack(); + + int putFloatInFront(float in); + int putFloat(float in); + + float getFloat(); + float getFloatFromBack(); + +private: + byte* data; + byte* float_bytes; + + unsigned int capacity; + unsigned int position; + unsigned int length; +}; + +#endif + diff --git a/arduino_libs/ByteBuffer/ByteBuffer.cpp b/arduino_libs/ByteBuffer/ByteBuffer.cpp new file mode 100755 index 0000000..b151cef --- /dev/null +++ b/arduino_libs/ByteBuffer/ByteBuffer.cpp @@ -0,0 +1,212 @@ +/* + ByteBuffer.cpp - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + siggi@mit.edu + */ + +#include <util/atomic.h> +#include "WProgram.h" +#include "ByteBuffer.h" + + +ByteBuffer::ByteBuffer(){ + +} + +void ByteBuffer::init(unsigned int buf_length){ + data = (byte*)malloc(sizeof(byte)*buf_length); + capacity = buf_length; + position = 0; + length = 0; +} + +void ByteBuffer::deAllocate(){ + free(data); +} + +void ByteBuffer::clear(){ + position = 0; + length = 0; +} + +int ByteBuffer::getSize(){ + return length; +} + +int ByteBuffer::getCapacity(){ + return capacity; +} + +byte ByteBuffer::peek(unsigned int index){ + byte b = data[(position+index)%capacity]; + return b; +} + +int ByteBuffer::put(byte in){ + if(length < capacity){ + // save data byte at end of buffer + data[(position+length) % capacity] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +int ByteBuffer::putInFront(byte in){ + if(length < capacity){ + // save data byte at end of buffer + if( position == 0 ) + position = capacity-1; + else + position = (position-1)%capacity; + data[position] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +byte ByteBuffer::get(){ + byte b = 0; + + + if(length > 0){ + b = data[position]; + // move index down and decrement length + position = (position+1)%capacity; + length--; + } + + return b; +} + +byte ByteBuffer::getFromBack(){ + byte b = 0; + if(length > 0){ + b = data[(position+length-1)%capacity]; + length--; + } + + return b; +} + +// +// Ints +// + +int ByteBuffer::putIntInFront(int in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); +} + +int ByteBuffer::putInt(int in){ + byte *pointer = (byte *)∈ + put(pointer[1]); + put(pointer[0]); +} + + +int ByteBuffer::getInt(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +int ByteBuffer::getIntFromBack(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + return ret; +} + +// +// Longs +// + +int ByteBuffer::putLongInFront(long in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putLong(long in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + + +long ByteBuffer::getLong(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +long ByteBuffer::getLongFromBack(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + +// +// Floats +// + +int ByteBuffer::putFloatInFront(float in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putFloat(float in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + +float ByteBuffer::getFloat(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +float ByteBuffer::getFloatFromBack(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + diff --git a/arduino_libs/ByteBuffer/ByteBuffer.h b/arduino_libs/ByteBuffer/ByteBuffer.h new file mode 100755 index 0000000..f6b4e48 --- /dev/null +++ b/arduino_libs/ByteBuffer/ByteBuffer.h @@ -0,0 +1,74 @@ +/* + ByteBuffer.h - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + siggi@mit.edu + */ + +#ifndef ByteBuffer_h +#define ByteBuffer_h + +#include "WProgram.h" + +class ByteBuffer +{ +public: + ByteBuffer(); + + // This method initializes the datastore of the buffer to a certain sizem the buffer should NOT be used before this call is made + void init(unsigned int buf_size); + + // This method resets the buffer into an original state (with no data) + void clear(); + + // This releases resources for this buffer, after this has been called the buffer should NOT be used + void deAllocate(); + + // Returns how much space is left in the buffer for more data + int getSize(); + + // Returns the maximum capacity of the buffer + int getCapacity(); + + // This method returns the byte that is located at index in the buffer but doesn't modify the buffer like the get methods (doesn't remove the retured byte from the buffer) + byte peek(unsigned int index); + + // + // Put methods, either a regular put in back or put in front + // + int putInFront(byte in); + int put(byte in); + + int putIntInFront(int in); + int putInt(int in); + + int putLongInFront(long in); + int putLong(long in); + + int putFloatInFront(float in); + int putFloat(float in); + + // + // Get methods, either a regular get from front or from back + // + byte get(); + byte getFromBack(); + + int getInt(); + int getIntFromBack(); + + long getLong(); + long getLongFromBack(); + + float getFloat(); + float getFloatFromBack(); + +private: + byte* data; + + unsigned int capacity; + unsigned int position; + unsigned int length; +}; + +#endif + diff --git a/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde b/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde new file mode 100644 index 0000000..0d9e815 --- /dev/null +++ b/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde @@ -0,0 +1,25 @@ +
+#include <NewSoftSerial.h>
+
+NewSoftSerial mySerial(2, 3);
+
+void setup()
+{
+ Serial.begin(57600);
+ Serial.println("Goodnight moon!");
+
+ // set the data rate for the NewSoftSerial port
+ mySerial.begin(4800);
+ mySerial.println("Hello, world?");
+}
+
+void loop() // run over and over again
+{
+
+ if (mySerial.available()) {
+ Serial.print((char)mySerial.read());
+ }
+ if (Serial.available()) {
+ mySerial.print((char)Serial.read());
+ }
+}
diff --git a/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde b/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde new file mode 100644 index 0000000..73aa991 --- /dev/null +++ b/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde @@ -0,0 +1,33 @@ +#include <NewSoftSerial.h>
+
+NewSoftSerial nss(2, 3);
+NewSoftSerial nss2(4, 5);
+
+void setup()
+{
+ nss2.begin(4800);
+ nss.begin(4800);
+ Serial.begin(115200);
+}
+
+void loop()
+{
+ // Every 10 seconds switch from
+ // one serial GPS device to the other
+ if ((millis() / 10000) % 2 == 0)
+ {
+ if (nss.available())
+ {
+ Serial.print(nss.read(), BYTE);
+ }
+ }
+
+ else
+ {
+ if (nss2.available())
+ {
+ Serial.print(nss2.read(), BYTE);
+ }
+ }
+}
+
diff --git a/arduino_libs/NewSoftSerial/NewSoftSerial.cpp b/arduino_libs/NewSoftSerial/NewSoftSerial.cpp new file mode 100644 index 0000000..463ab01 --- /dev/null +++ b/arduino_libs/NewSoftSerial/NewSoftSerial.cpp @@ -0,0 +1,539 @@ +/*
+NewSoftSerial.cpp - Multi-instance software serial library
+Copyright (c) 2006 David A. Mellis. All rights reserved.
+-- Interrupt-driven receive and other improvements by ladyada
+-- Tuning, circular buffer, derivation from class Print,
+ multi-instance support, porting to 8MHz processors,
+ various optimizations, PROGMEM delay tables, inverse logic and
+ direct port writing by Mikal Hart
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+The latest version of this library can always be found at
+http://arduiniana.org.
+*/
+
+// When set, _DEBUG co-opts pins 11 and 13 for debugging with an
+// oscilloscope or logic analyzer. Beware: it also slightly modifies
+// the bit times, so don't rely on it too much at high baud rates
+#define _DEBUG 0
+#define _DEBUG_PIN1 11
+#define _DEBUG_PIN2 13
+//
+// Includes
+//
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+#include "WConstants.h"
+#include "pins_arduino.h"
+#include "NewSoftSerial.h"
+
+// Abstractions for maximum portability between processors
+// These are macros to associate pins to pin change interrupts
+#if !defined(digitalPinToPCICR) // Courtesy Paul Stoffregen
+#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
+#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)NULL))
+#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1))
+#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)NULL))))
+#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
+#else
+#define digitalPinToPCICR(p) ((uint8_t *)NULL)
+#define digitalPinToPCICRbit(p) 0
+#define digitalPinToPCMSK(p) ((uint8_t *)NULL)
+#define digitalPinToPCMSKbit(p) 0
+#endif
+#endif
+
+//
+// Lookup table
+//
+typedef struct _DELAY_TABLE
+{
+ long baud;
+ unsigned short rx_delay_centering;
+ unsigned short rx_delay_intrabit;
+ unsigned short rx_delay_stopbit;
+ unsigned short tx_delay;
+} DELAY_TABLE;
+
+#if F_CPU == 16000000
+
+static const DELAY_TABLE PROGMEM table[] =
+{
+ // baud rxcenter rxintra rxstop tx
+ { 115200, 1, 17, 17, 12, },
+ { 57600, 10, 37, 37, 33, },
+ { 38400, 25, 57, 57, 54, },
+ { 31250, 31, 70, 70, 68, },
+ { 28800, 34, 77, 77, 74, },
+ { 19200, 54, 117, 117, 114, },
+ { 14400, 74, 156, 156, 153, },
+ { 9600, 114, 236, 236, 233, },
+ { 4800, 233, 474, 474, 471, },
+ { 2400, 471, 950, 950, 947, },
+ { 1200, 947, 1902, 1902, 1899, },
+ { 300, 3804, 7617, 7617, 7614, },
+};
+
+const int XMIT_START_ADJUSTMENT = 5;
+
+#elif F_CPU == 8000000
+
+static const DELAY_TABLE table[] PROGMEM =
+{
+ // baud rxcenter rxintra rxstop tx
+ { 115200, 1, 5, 5, 3, },
+ { 57600, 1, 15, 15, 13, },
+ { 38400, 2, 25, 26, 23, },
+ { 31250, 7, 32, 33, 29, },
+ { 28800, 11, 35, 35, 32, },
+ { 19200, 20, 55, 55, 52, },
+ { 14400, 30, 75, 75, 72, },
+ { 9600, 50, 114, 114, 112, },
+ { 4800, 110, 233, 233, 230, },
+ { 2400, 229, 472, 472, 469, },
+ { 1200, 467, 948, 948, 945, },
+ { 300, 1895, 3805, 3805, 3802, },
+};
+
+const int XMIT_START_ADJUSTMENT = 4;
+
+#elif F_CPU == 20000000
+
+// 20MHz support courtesy of the good people at macegr.com.
+// Thanks, Garrett!
+
+static const DELAY_TABLE PROGMEM table[] =
+{
+ // baud rxcenter rxintra rxstop tx
+ { 115200, 3, 21, 21, 18, },
+ { 57600, 20, 43, 43, 41, },
+ { 38400, 37, 73, 73, 70, },
+ { 31250, 45, 89, 89, 88, },
+ { 28800, 46, 98, 98, 95, },
+ { 19200, 71, 148, 148, 145, },
+ { 14400, 96, 197, 197, 194, },
+ { 9600, 146, 297, 297, 294, },
+ { 4800, 296, 595, 595, 592, },
+ { 2400, 592, 1189, 1189, 1186, },
+ { 1200, 1187, 2379, 2379, 2376, },
+ { 300, 4759, 9523, 9523, 9520, },
+};
+
+const int XMIT_START_ADJUSTMENT = 6;
+
+#else
+
+#error This version of NewSoftSerial supports only 20, 16 and 8MHz processors
+
+#endif
+
+//
+// Statics
+//
+NewSoftSerial *NewSoftSerial::active_object = 0;
+char NewSoftSerial::_receive_buffer[_NewSS_MAX_RX_BUFF];
+volatile uint8_t NewSoftSerial::_receive_buffer_tail = 0;
+volatile uint8_t NewSoftSerial::_receive_buffer_head = 0;
+
+//
+// Debugging
+//
+// This function generates a brief pulse
+// for debugging or measuring on an oscilloscope.
+inline void DebugPulse(uint8_t pin, uint8_t count)
+{
+#if _DEBUG
+ volatile uint8_t *pport = portOutputRegister(digitalPinToPort(pin));
+
+ uint8_t val = *pport;
+ while (count--)
+ {
+ *pport = val | digitalPinToBitMask(pin);
+ *pport = val;
+ }
+#endif
+}
+
+//
+// Private methods
+//
+
+/* static */
+inline void NewSoftSerial::tunedDelay(uint16_t delay) {
+ uint8_t tmp=0;
+
+ asm volatile("sbiw %0, 0x01 \n\t"
+ "ldi %1, 0xFF \n\t"
+ "cpi %A0, 0xFF \n\t"
+ "cpc %B0, %1 \n\t"
+ "brne .-10 \n\t"
+ : "+r" (delay), "+a" (tmp)
+ : "0" (delay)
+ );
+}
+
+// This function sets the current object as the "active"
+// one and returns true if it replaces another
+bool NewSoftSerial::activate(void)
+{
+ if (active_object != this)
+ {
+ _buffer_overflow = false;
+ uint8_t oldSREG = SREG;
+ cli();
+ _receive_buffer_head = _receive_buffer_tail = 0;
+ active_object = this;
+ SREG = oldSREG;
+ return true;
+ }
+
+ return false;
+}
+
+//
+// The receive routine called by the interrupt handler
+//
+void NewSoftSerial::recv()
+{
+
+#if GCC_VERSION < 40302
+// Work-around for avr-gcc 4.3.0 OSX version bug
+// Preserve the registers that the compiler misses
+// (courtesy of Arduino forum user *etracer*)
+ asm volatile(
+ "push r18 \n\t"
+ "push r19 \n\t"
+ "push r20 \n\t"
+ "push r21 \n\t"
+ "push r22 \n\t"
+ "push r23 \n\t"
+ "push r26 \n\t"
+ "push r27 \n\t"
+ ::);
+#endif
+
+ uint8_t d = 0;
+
+ // If RX line is high, then we don't see any start bit
+ // so interrupt is probably not for us
+ if (_inverse_logic ? rx_pin_read() : !rx_pin_read())
+ {
+ // Wait approximately 1/2 of a bit width to "center" the sample
+ tunedDelay(_rx_delay_centering);
+ DebugPulse(_DEBUG_PIN2, 1);
+
+ // Read each of the 8 bits
+ for (uint8_t i=0x1; i; i <<= 1)
+ {
+ tunedDelay(_rx_delay_intrabit);
+ DebugPulse(_DEBUG_PIN2, 1);
+ uint8_t noti = ~i;
+ if (rx_pin_read())
+ d |= i;
+ else // else clause added to ensure function timing is ~balanced
+ d &= noti;
+ }
+
+ // skip the stop bit
+ tunedDelay(_rx_delay_stopbit);
+ DebugPulse(_DEBUG_PIN2, 1);
+
+ if (_inverse_logic)
+ d = ~d;
+
+ // if buffer full, set the overflow flag and return
+ if ((_receive_buffer_tail + 1) % _NewSS_MAX_RX_BUFF != _receive_buffer_head)
+ {
+ // save new data in buffer: tail points to where byte goes
+ _receive_buffer[_receive_buffer_tail] = d; // save new byte
+ _receive_buffer_tail = (_receive_buffer_tail + 1) % _NewSS_MAX_RX_BUFF;
+ }
+ else
+ {
+#if _DEBUG // for scope: pulse pin as overflow indictator
+ DebugPulse(_DEBUG_PIN1, 1);
+#endif
+ _buffer_overflow = true;
+ }
+ }
+
+#if GCC_VERSION < 40302
+// Work-around for avr-gcc 4.3.0 OSX version bug
+// Restore the registers that the compiler misses
+ asm volatile(
+ "pop r27 \n\t"
+ "pop r26 \n\t"
+ "pop r23 \n\t"
+ "pop r22 \n\t"
+ "pop r21 \n\t"
+ "pop r20 \n\t"
+ "pop r19 \n\t"
+ "pop r18 \n\t"
+ ::);
+#endif
+}
+
+void NewSoftSerial::tx_pin_write(uint8_t pin_state)
+{
+ if (pin_state == LOW)
+ *_transmitPortRegister &= ~_transmitBitMask;
+ else
+ *_transmitPortRegister |= _transmitBitMask;
+}
+
+uint8_t NewSoftSerial::rx_pin_read()
+{
+ return *_receivePortRegister & _receiveBitMask;
+}
+
+//
+// Interrupt handling
+//
+
+/* static */
+inline void NewSoftSerial::handle_interrupt()
+{
+ if (active_object)
+ {
+ active_object->recv();
+ }
+}
+
+#if defined(PCINT0_vect)
+ISR(PCINT0_vect)
+{
+ NewSoftSerial::handle_interrupt();
+}
+#endif
+
+#if defined(PCINT1_vect)
+ISR(PCINT1_vect)
+{
+ NewSoftSerial::handle_interrupt();
+}
+#endif
+
+#if defined(PCINT2_vect)
+ISR(PCINT2_vect)
+{
+ NewSoftSerial::handle_interrupt();
+}
+#endif
+
+#if defined(PCINT3_vect)
+ISR(PCINT3_vect)
+{
+ NewSoftSerial::handle_interrupt();
+}
+#endif
+
+//
+// Constructor
+//
+NewSoftSerial::NewSoftSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic /* = false */) :
+ _rx_delay_centering(0),
+ _rx_delay_intrabit(0),
+ _rx_delay_stopbit(0),
+ _tx_delay(0),
+ _buffer_overflow(false),
+ _inverse_logic(inverse_logic)
+{
+ setTX(transmitPin);
+ setRX(receivePin);
+}
+
+//
+// Destructor
+//
+NewSoftSerial::~NewSoftSerial()
+{
+ end();
+}
+
+void NewSoftSerial::setTX(uint8_t tx)
+{
+ pinMode(tx, OUTPUT);
+ digitalWrite(tx, HIGH);
+ _transmitBitMask = digitalPinToBitMask(tx);
+ uint8_t port = digitalPinToPort(tx);
+ _transmitPortRegister = portOutputRegister(port);
+}
+
+void NewSoftSerial::setRX(uint8_t rx)
+{
+ pinMode(rx, INPUT);
+ if (!_inverse_logic)
+ digitalWrite(rx, HIGH); // pullup for normal logic!
+ _receivePin = rx;
+ _receiveBitMask = digitalPinToBitMask(rx);
+ uint8_t port = digitalPinToPort(rx);
+ _receivePortRegister = portInputRegister(port);
+}
+
+//
+// Public methods
+//
+
+void NewSoftSerial::begin(long speed)
+{
+ _rx_delay_centering = _rx_delay_intrabit = _rx_delay_stopbit = _tx_delay = 0;
+
+ for (unsigned i=0; i<sizeof(table)/sizeof(table[0]); ++i)
+ {
+ long baud = pgm_read_dword(&table[i].baud);
+ if (baud == speed)
+ {
+ _rx_delay_centering = pgm_read_word(&table[i].rx_delay_centering);
+ _rx_delay_intrabit = pgm_read_word(&table[i].rx_delay_intrabit);
+ _rx_delay_stopbit = pgm_read_word(&table[i].rx_delay_stopbit);
+ _tx_delay = pgm_read_word(&table[i].tx_delay);
+ break;
+ }
+ }
+
+ // Set up RX interrupts, but only if we have a valid RX baud rate
+ if (_rx_delay_stopbit)
+ {
+ if (digitalPinToPCICR(_receivePin))
+ {
+ *digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
+ *digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin));
+ }
+ tunedDelay(_tx_delay); // if we were low this establishes the end
+ }
+
+#if _DEBUG
+ pinMode(_DEBUG_PIN1, OUTPUT);
+ pinMode(_DEBUG_PIN2, OUTPUT);
+#endif
+
+ activate();
+}
+
+void NewSoftSerial::end()
+{
+ if (digitalPinToPCMSK(_receivePin))
+ *digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin));
+}
+
+
+// Read data from buffer
+int NewSoftSerial::read(void)
+{
+ uint8_t d;
+
+ // A newly activated object never has any rx data
+ if (activate())
+ return -1;
+
+ // Empty buffer?
+ if (_receive_buffer_head == _receive_buffer_tail)
+ return -1;
+
+ // Read from "head"
+ d = _receive_buffer[_receive_buffer_head]; // grab next byte
+ _receive_buffer_head = (_receive_buffer_head + 1) % _NewSS_MAX_RX_BUFF;
+ return d;
+}
+
+uint8_t NewSoftSerial::available(void)
+{
+ // A newly activated object never has any rx data
+ if (activate())
+ return 0;
+
+ return (_receive_buffer_tail + _NewSS_MAX_RX_BUFF - _receive_buffer_head) % _NewSS_MAX_RX_BUFF;
+}
+
+void NewSoftSerial::write(uint8_t b)
+{
+ if (_tx_delay == 0)
+ return;
+
+ activate();
+
+ uint8_t oldSREG = SREG;
+ cli(); // turn off interrupts for a clean txmit
+
+ // Write the start bit
+ tx_pin_write(_inverse_logic ? HIGH : LOW);
+ tunedDelay(_tx_delay + XMIT_START_ADJUSTMENT);
+
+ // Write each of the 8 bits
+ if (_inverse_logic)
+ {
+ for (byte mask = 0x01; mask; mask <<= 1)
+ {
+ if (b & mask) // choose bit
+ tx_pin_write(LOW); // send 1
+ else
+ tx_pin_write(HIGH); // send 0
+
+ tunedDelay(_tx_delay);
+ }
+
+ tx_pin_write(LOW); // restore pin to natural state
+ }
+ else
+ {
+ for (byte mask = 0x01; mask; mask <<= 1)
+ {
+ if (b & mask) // choose bit
+ tx_pin_write(HIGH); // send 1
+ else
+ tx_pin_write(LOW); // send 0
+
+ tunedDelay(_tx_delay);
+ }
+
+ tx_pin_write(HIGH); // restore pin to natural state
+ }
+
+ SREG = oldSREG; // turn interrupts back on
+ tunedDelay(_tx_delay);
+}
+
+#if !defined(cbi)
+#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
+#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
+#endif
+
+void NewSoftSerial::enable_timer0(bool enable)
+{
+ if (enable)
+#if defined(__AVR_ATmega8__)
+ sbi(TIMSK, TOIE0);
+#else
+ sbi(TIMSK0, TOIE0);
+#endif
+ else
+#if defined(__AVR_ATmega8__)
+ cbi(TIMSK, TOIE0);
+#else
+ cbi(TIMSK0, TOIE0);
+#endif
+}
+
+void NewSoftSerial::flush()
+{
+ if (active_object == this)
+ {
+ uint8_t oldSREG = SREG;
+ cli();
+ _receive_buffer_head = _receive_buffer_tail = 0;
+ SREG = oldSREG;
+ }
+}
diff --git a/arduino_libs/NewSoftSerial/NewSoftSerial.h b/arduino_libs/NewSoftSerial/NewSoftSerial.h new file mode 100644 index 0000000..1e39201 --- /dev/null +++ b/arduino_libs/NewSoftSerial/NewSoftSerial.h @@ -0,0 +1,107 @@ +/*
+NewSoftSerial.h - Multi-instance software serial library
+Copyright (c) 2006 David A. Mellis. All rights reserved.
+-- Interrupt-driven receive and other improvements by ladyada
+-- Tuning, circular buffer, derivation from class Print,
+ multi-instance support, porting to 8MHz processors,
+ various optimizations, PROGMEM delay tables, inverse logic and
+ direct port writing by Mikal Hart
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+The latest version of this library can always be found at
+http://arduiniana.org.
+*/
+
+#ifndef NewSoftSerial_h
+#define NewSoftSerial_h
+
+#include <inttypes.h>
+#include "Print.h"
+
+/******************************************************************************
+* Definitions
+******************************************************************************/
+
+#define _NewSS_MAX_RX_BUFF 64 // RX buffer size
+#define _NewSS_VERSION 10 // software version of this library
+#ifndef GCC_VERSION
+#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+class NewSoftSerial : public Print
+{
+private:
+ // per object data
+ uint8_t _receivePin;
+ uint8_t _receiveBitMask;
+ volatile uint8_t *_receivePortRegister;
+ uint8_t _transmitBitMask;
+ volatile uint8_t *_transmitPortRegister;
+
+ uint16_t _rx_delay_centering;
+ uint16_t _rx_delay_intrabit;
+ uint16_t _rx_delay_stopbit;
+ uint16_t _tx_delay;
+
+ uint16_t _buffer_overflow:1;
+ uint16_t _inverse_logic:1;
+
+ // static data
+ static char _receive_buffer[_NewSS_MAX_RX_BUFF];
+ static volatile uint8_t _receive_buffer_tail;
+ static volatile uint8_t _receive_buffer_head;
+ static NewSoftSerial *active_object;
+
+ // private methods
+ void recv();
+ bool activate();
+ virtual void write(uint8_t byte);
+ uint8_t rx_pin_read();
+ void tx_pin_write(uint8_t pin_state);
+ void setTX(uint8_t transmitPin);
+ void setRX(uint8_t receivePin);
+
+ // private static method for timing
+ static inline void tunedDelay(uint16_t delay);
+
+public:
+ // public methods
+ NewSoftSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false);
+ ~NewSoftSerial();
+ void begin(long speed);
+ void end();
+ int read();
+ uint8_t available(void);
+ bool active() { return this == active_object; }
+ bool overflow() { bool ret = _buffer_overflow; _buffer_overflow = false; return ret; }
+ static int library_version() { return _NewSS_VERSION; }
+ static void enable_timer0(bool enable);
+ void flush();
+
+ // public only for easy access by interrupt handlers
+ static inline void handle_interrupt();
+};
+
+// Arduino 0012 workaround
+#undef int
+#undef char
+#undef long
+#undef byte
+#undef float
+#undef abs
+#undef round
+
+#endif
diff --git a/arduino_libs/NewSoftSerial/keywords.txt b/arduino_libs/NewSoftSerial/keywords.txt new file mode 100644 index 0000000..0a39bea --- /dev/null +++ b/arduino_libs/NewSoftSerial/keywords.txt @@ -0,0 +1,30 @@ +####################################### +# Syntax Coloring Map for NewSoftSerial +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +NewSoftSerial KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +setTX KEYWORD2 +setRX KEYWORD2 +begin KEYWORD2 +end KEYWORD2 +read KEYWORD2 +available KEYWORD2 +active KEYWORD2 +overflow KEYWORD2 +library_version KEYWORD2 +enable_timer0 KEYWORD2 +flush KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/arduino_libs/SerialManager/.DS_Store b/arduino_libs/SerialManager/.DS_Store Binary files differnew file mode 100755 index 0000000..5008ddf --- /dev/null +++ b/arduino_libs/SerialManager/.DS_Store diff --git a/arduino_libs/SerialManager/.svn/all-wcprops b/arduino_libs/SerialManager/.svn/all-wcprops new file mode 100755 index 0000000..e920984 --- /dev/null +++ b/arduino_libs/SerialManager/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/r/prg/!svn/ver/5369/trunk/arduino/libraries/SerialManager +END +SerialManager.h +K 25 +svn:wc:ra_dav:version-url +V 74 +/r/prg/!svn/ver/5812/trunk/arduino/libraries/SerialManager/SerialManager.h +END +SerialManager.cpp +K 25 +svn:wc:ra_dav:version-url +V 76 +/r/prg/!svn/ver/5812/trunk/arduino/libraries/SerialManager/SerialManager.cpp +END diff --git a/arduino_libs/SerialManager/.svn/entries b/arduino_libs/SerialManager/.svn/entries new file mode 100755 index 0000000..a965507 --- /dev/null +++ b/arduino_libs/SerialManager/.svn/entries @@ -0,0 +1,144 @@ +10 + +dir +5369 +https://svn.media.mit.edu/r/prg/trunk/arduino/libraries/SerialManager +https://svn.media.mit.edu/r/prg + + + +2010-07-20T00:55:06.830758Z +5369 +siggi + + + + + + + + + + + + + + +bd000cc4-1869-4481-ad02-c3af97ea9c83 + +SerialManager.h +file +5812 + + + +2010-09-02T16:01:59.000000Z +81120736a5f09269c146fab073728dcf +2010-09-02T18:42:42.362483Z +5812 +siggi + + + + + + + + + + + + + + + + + + + + + +1242 + +SerialPacketHandler.cpp +file +5812 + + + + + + + + + + + + + + + + + + + +deleted + +SerialManager.cpp +file +5812 + + + +2010-09-02T16:02:09.000000Z +d7812d43c015d22e6970f3b8884d9b37 +2010-09-02T18:42:42.362483Z +5812 +siggi + + + + + + + + + + + + + + + + + + + + + +4793 + +SerialPacketHandler.h +file +5812 + + + + + + + + + + + + + + + + + + + +deleted + diff --git a/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base b/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base new file mode 100755 index 0000000..ed06dbc --- /dev/null +++ b/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base @@ -0,0 +1,197 @@ +/* + SerialManager.cpp - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + */ + +#include "WProgram.h" +#include "SerialManager.h" +#include "ByteBuffer.h" + + +SerialManager::SerialManager(unsigned int in_buf_size, unsigned int out_buf_size){ + serial_in_checksum = 0; + + incoming_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + outgoing_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + temp_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + + incoming_buffer->init(in_buf_size); + outgoing_buffer->init(out_buf_size); + temp_buffer->init(10); + + byte1 = 0; + byte2 = 0; + byte3 = 0; + byte4 = 0; + + handlePacketFunction = 0; +} + +void SerialManager::init(int serial_port, int baud_rate){ + _serial_port = serial_port; + + if( serial_port == 0) + Serial.begin(baud_rate); +#if defined(__AVR_ATmega1280__) + else if( serial_port == 1) + Serial1.begin(baud_rate); + else if( serial_port == 2) + Serial2.begin(baud_rate); + else if( serial_port == 3) + Serial3.begin(baud_rate); +#endif +} + + + +bool SerialManager::isBusySending(){ + return ( outgoing_buffer->getSize() > 0 ); +} + +// Sends a single byte +int SerialManager::sendSerialByte(byte b){ + return outgoing_buffer->put(b); +} + +// Sends a packet with a header and a checksum +int SerialManager::sendSerialPacket(ByteBuffer* packet_buffer){ + // Copy buffer and calc checksum + byte checksum = 0; + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + checksum += b; + } + + outgoing_buffer->put( checksum ); + outgoing_buffer->put( 1 ); + outgoing_buffer->put( 2 ); + outgoing_buffer->put( 3 ); + outgoing_buffer->put( 4 ); + + return 0; +} + +// Sends a raw packet with no header or checksum +int SerialManager::sendRawSerial(ByteBuffer* packet_buffer){ + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + } + + return 0; +} + +void SerialManager::update(){ + + // If we have received stuff + if( _serial_port == 0 ){ + while( Serial.available() != 0 ) { + byte incoming = Serial.read(); + handleIncomingByte(incoming); + } + } + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ){ + while( Serial1.available() != 0 ) { + byte incoming = Serial1.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 2 ){ + while( Serial2.available() != 0 ) { + byte incoming = Serial2.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 3 ){ + while( Serial3.available() != 0 ) { + byte incoming = Serial3.read(); + handleIncomingByte(incoming); + } + } +#endif + + + // If we should be sending stuff + if( outgoing_buffer->getSize() > 0 ){ + // If serial port not currently busy + if( _serial_port == 0 ) + if(((UCSRA) & (1 << UDRE)) ) Serial.write( outgoing_buffer->get() ); + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ) + if(((UCSRA1) & (1 << UDRE1)) ) Serial1.write( outgoing_buffer->get() ); + else if( _serial_port == 2 ) + if(((UCSRA2) & (1 << UDRE2)) ) Serial2.write( outgoing_buffer->get() ); + else if( _serial_port == 3 ) + if(((UCSRA3) & (1 << UDRE3)) ) Serial3.write( outgoing_buffer->get() ); +#endif + } +} + +void SerialManager::setPacketHandler(void (*packetHandlerFunction)(ByteBuffer*)){ + handlePacketFunction = packetHandlerFunction; +} + + +void SerialManager::handleIncomingByte(byte incoming){ + + // If buffer overflows then reset (we could do something smarter here) +// if( incoming_buffer->getSize() == incoming_buffer->getCapacity() ){ +// incoming_buffer->clear(); +// } + + incoming_buffer->put( incoming ); + serial_in_checksum += incoming; + + byte1 = byte2; + byte2 = byte3; + byte3 = byte4; + byte4 = incoming; + + // If we have a full packet ready + if( byte1==1 && byte2==2 && byte3==3 && byte4==4 ){ + // Remove header from buffer + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + + byte checksum_received = incoming_buffer->getFromBack(); + + // Remove the whole header from the calculated checksum + serial_in_checksum -= checksum_received + 10; + + // If checksums don't match, then do something () + if( checksum_received != serial_in_checksum ){ + temp_buffer->clear(); + temp_buffer->put(123); + temp_buffer->put(234); + temp_buffer->put( checksum_received ); + temp_buffer->put( serial_in_checksum ); + sendSerialPacket(temp_buffer); + } + + // We have a successful packet + else{ + + if( handlePacketFunction != 0 ) + handlePacketFunction(incoming_buffer); + else + handlePacketDefault(incoming_buffer); + } + + // Clear variables + incoming_buffer->clear(); + serial_in_checksum = 0; + } + +} + +void SerialManager::handlePacketDefault(ByteBuffer* packet){ + // We could do something here like send the data to the host again for debug + // Or just do nothing + return; +} diff --git a/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base b/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base new file mode 100755 index 0000000..dcbdba6 --- /dev/null +++ b/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base @@ -0,0 +1,63 @@ +/* + SerialManager.h - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + */ +#ifndef SerialManager_h +#define SerialManager_h + +#include "ByteBuffer.h" +#include "WProgram.h" + +typedef void (*voidFuncPtr)(ByteBuffer*); + +#if defined(__AVR_ATmega8__) + #define UCSRA UCSRA + #define UDRE UDRE +#else + #define UCSRA UCSR0A + #define UDRE UDRE0 +#endif + +#if defined(__AVR_ATmega1280__) + #define UCSRA1 UCSR1A + #define UDRE1 UDRE1 + #define UCSRA2 UCSR2A + #define UDRE2 UDRE2 + #define UCSRA3 UCSR3A + #define UDRE3 UDRE3 +#endif + + +class SerialManager +{ +public: + SerialManager(unsigned int in_buf_size, unsigned int out_buf_size); + void init(int serial_port, int baud_rate); + void setPacketHandler(void (*rx_func)(ByteBuffer*)); + + void update(); + bool isBusySending(); + + int sendSerialByte(byte b); + int sendSerialPacket(ByteBuffer* packet); + int sendRawSerial(ByteBuffer* packet); + +private: + void handleIncomingByte(byte incoming); + void handlePacketDefault(ByteBuffer* packet); + + voidFuncPtr handlePacketFunction; + + byte _serial_port; + ByteBuffer* incoming_buffer; + ByteBuffer* outgoing_buffer; + ByteBuffer* temp_buffer; + byte serial_in_checksum; + byte byte1; + byte byte2; + byte byte3; + byte byte4; +}; + +#endif + diff --git a/arduino_libs/SerialManager/SerialManager.cpp b/arduino_libs/SerialManager/SerialManager.cpp new file mode 100755 index 0000000..2e2d306 --- /dev/null +++ b/arduino_libs/SerialManager/SerialManager.cpp @@ -0,0 +1,193 @@ +/* + SerialManager.cpp - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + siggi@mit.edu + */ + +#include "WProgram.h" +#include "SerialManager.h" +#include "ByteBuffer.h" + + +SerialManager::SerialManager(unsigned int in_buf_size, unsigned int out_buf_size){ + serial_in_checksum = 0; + + incoming_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + outgoing_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + temp_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + + incoming_buffer->init(in_buf_size); + outgoing_buffer->init(out_buf_size); + temp_buffer->init(10); + + byte1 = 0; + byte2 = 0; + byte3 = 0; + byte4 = 0; + + handlePacketFunction = 0; +} + +void SerialManager::init(int serial_port, int baud_rate){ + _serial_port = serial_port; + + if( serial_port == 0) + Serial.begin(baud_rate); +#if defined(__AVR_ATmega1280__) + else if( serial_port == 1) + Serial1.begin(baud_rate); + else if( serial_port == 2) + Serial2.begin(baud_rate); + else if( serial_port == 3) + Serial3.begin(baud_rate); +#endif +} + + + +bool SerialManager::isBusySending(){ + return ( outgoing_buffer->getSize() > 0 ); +} + +// Sends a single byte +int SerialManager::sendSerialByte(byte b){ + return outgoing_buffer->put(b); +} + +// Sends a packet with a header and a checksum +int SerialManager::sendSerialPacket(ByteBuffer* packet_buffer){ + // Copy buffer and calc checksum + byte checksum = 0; + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + checksum += b; + } + + outgoing_buffer->put( checksum ); + outgoing_buffer->put( 1 ); + outgoing_buffer->put( 2 ); + outgoing_buffer->put( 3 ); + outgoing_buffer->put( 4 ); + + return 0; +} + +// Sends a raw packet with no header or checksum +int SerialManager::sendRawSerial(ByteBuffer* packet_buffer){ + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + } + + return 0; +} + +void SerialManager::update(){ + + // If we have received stuff + if( _serial_port == 0 ){ + while( Serial.available() != 0 ) { + byte incoming = Serial.read(); + handleIncomingByte(incoming); + } + } + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ){ + while( Serial1.available() != 0 ) { + byte incoming = Serial1.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 2 ){ + while( Serial2.available() != 0 ) { + byte incoming = Serial2.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 3 ){ + while( Serial3.available() != 0 ) { + byte incoming = Serial3.read(); + handleIncomingByte(incoming); + } + } +#endif + + + // If we should be sending stuff + if( outgoing_buffer->getSize() > 0 ){ + // If serial port not currently busy + if( _serial_port == 0 ) + if(((UCSRA) & (1 << UDRE)) ) Serial.write( outgoing_buffer->get() ); + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ) + if(((UCSR1A) & (1 << UDRE1)) ) Serial1.write( outgoing_buffer->get() ); + else if( _serial_port == 2 ) + if(((UCSR2A) & (1 << UDRE2)) ) Serial2.write( outgoing_buffer->get() ); + else if( _serial_port == 3 ) + if(((UCSR3A) & (1 << UDRE3)) ) Serial3.write( outgoing_buffer->get() ); +#endif + } +} + +void SerialManager::setPacketHandler(void (*packetHandlerFunction)(ByteBuffer*)){ + handlePacketFunction = packetHandlerFunction; +} + + +void SerialManager::handleIncomingByte(byte incoming){ + + // If buffer overflows then reset (we could do something smarter here) + if( incoming_buffer->getSize() == incoming_buffer->getCapacity() ){ + incoming_buffer->clear(); + } + + incoming_buffer->put( incoming ); + serial_in_checksum += incoming; + + byte1 = byte2; + byte2 = byte3; + byte3 = byte4; + byte4 = incoming; + + // If we have a full packet ready + if( byte1==1 && byte2==2 && byte3==3 && byte4==4 ){ + // Remove header from buffer + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + + byte checksum_received = incoming_buffer->getFromBack(); + + // Remove the whole header from the calculated checksum + serial_in_checksum -= checksum_received + 10; + + // If checksums don't match, then do something () + if( checksum_received != serial_in_checksum ){ + ; // We could do something about this here + } + + // We have a successful packet + else{ + + if( handlePacketFunction != 0 ) + handlePacketFunction(incoming_buffer); + else + handlePacketDefault(incoming_buffer); + } + + // Clear variables + incoming_buffer->clear(); + serial_in_checksum = 0; + } + +} + +void SerialManager::handlePacketDefault(ByteBuffer* packet){ + // We could do something here like send the data to the host again for debug + // Or just do nothing + return; +} diff --git a/arduino_libs/SerialManager/SerialManager.h b/arduino_libs/SerialManager/SerialManager.h new file mode 100755 index 0000000..f1474c5 --- /dev/null +++ b/arduino_libs/SerialManager/SerialManager.h @@ -0,0 +1,62 @@ +/* + SerialManager.h - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + siggi@mit.edu + */ + +#ifndef SerialManager_h +#define SerialManager_h + +#include "ByteBuffer.h" +#include "WProgram.h" + +typedef void (*voidFuncPtr)(ByteBuffer*); + +#if defined(__AVR_ATmega8__) + #define UCSRA UCSRA + #define UDRE UDRE +#else + #define UCSRA UCSR0A + #define UDRE UDRE0 +#endif + +#if defined(__AVR_ATmega1280__) + #define UCSRA1 UCSR1A + #define UCSRA2 UCSR2A + #define UCSRA3 UCSR3A +#endif + + +class SerialManager +{ +public: + SerialManager(unsigned int in_buf_size, unsigned int out_buf_size); + void init(int serial_port, int baud_rate); + void setPacketHandler(void (*rx_func)(ByteBuffer*)); + + void update(); + bool isBusySending(); + + int sendSerialByte(byte b); + int sendSerialPacket(ByteBuffer* packet); + int sendRawSerial(ByteBuffer* packet); + +private: + void handleIncomingByte(byte incoming); + void handlePacketDefault(ByteBuffer* packet); + + voidFuncPtr handlePacketFunction; + + byte _serial_port; + ByteBuffer* incoming_buffer; + ByteBuffer* outgoing_buffer; + ByteBuffer* temp_buffer; + byte serial_in_checksum; + byte byte1; + byte byte2; + byte byte3; + byte byte4; +}; + +#endif + diff --git a/arduino_libs/core0022_2560.a b/arduino_libs/core0022_2560.a Binary files differnew file mode 100644 index 0000000..39936f0 --- /dev/null +++ b/arduino_libs/core0022_2560.a diff --git a/arduino_libs/core0022_328p.a b/arduino_libs/core0022_328p.a Binary files differnew file mode 100644 index 0000000..0141d8c --- /dev/null +++ b/arduino_libs/core0022_328p.a diff --git a/avr_libs/uartlib/doxygen.css b/avr_libs/uartlib/doxygen.css new file mode 100644 index 0000000..8cb8b2e --- /dev/null +++ b/avr_libs/uartlib/doxygen.css @@ -0,0 +1,49 @@ +H1 { text-align: center; } +CAPTION { font-weight: bold } +A.qindex {} +A.qindexRef {} +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code { text-decoration: none; font-weight: normal; color: #4444ee } +A.codeRef { font-weight: normal; color: #4444ee } +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +DIV.fragment { width: 100%; border: none; background-color: #eeeeee } +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #f2f2ff; font-weight: bold; } +TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; } +TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } +DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } +BODY { background: white; color: black } +TD.indexkey { + background-color: #eeeeff; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} +TD.indexvalue { + background-color: #eeeeff; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} +span.keyword { color: #008000 } +span.keywordtype { color: #604020 } +span.keywordflow { color: #e08000 } +span.comment { color: #800000 } +span.preprocessor { color: #806020 } +span.stringliteral { color: #002080 } +span.charliteral { color: #008080 } diff --git a/avr_libs/uartlib/doxygen.png b/avr_libs/uartlib/doxygen.png Binary files differnew file mode 100644 index 0000000..f0a274b --- /dev/null +++ b/avr_libs/uartlib/doxygen.png diff --git a/avr_libs/uartlib/group__pfleury__uart.html b/avr_libs/uartlib/group__pfleury__uart.html new file mode 100644 index 0000000..7ab9c45 --- /dev/null +++ b/avr_libs/uartlib/group__pfleury__uart.html @@ -0,0 +1,560 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>AVR-GCC libraries: UART Library</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.4.1 --> +<h1>UART Library</h1><hr><a name="_details"></a><h2>Detailed Description</h2> +Interrupt UART library using the built-in UART with transmit and receive circular buffers. +<p> +<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <uart.h></span> +</pre></div><p> +This library can be used to transmit and receive data through the built in UART.<p> +An interrupt is generated when the UART has finished transmitting or receiving a byte. The interrupt handling routines use circular buffers for buffering received and transmitted data.<p> +The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define the size of the circular buffers in bytes. Note that these constants must be a power of 2. You may need to adapt this constants to your target and your application by adding CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile.<p> +<dl compact><dt><b>Note:</b></dt><dd>Based on Atmel Application Note AVR306 </dd></dl> +<dl compact><dt><b>Author:</b></dt><dd>Peter Fleury <a href="mailto:pfleury@gmx.ch">pfleury@gmx.ch</a> <a href="http://jump.to/fleury">http://jump.to/fleury</a> </dd></dl> + +<p> +<table border="0" cellpadding="0" cellspacing="0"> +<tr><td></td></tr> +<tr><td colspan="2"><br><h2>Defines</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga10">UART_BAUD_SELECT</a>(baudRate, xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">UART Baudrate Expression. <a href="#ga10"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga11">UART_BAUD_SELECT_DOUBLE_SPEED</a>(baudRate, xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">UART Baudrate Expression for ATmega double speed mode. <a href="#ga11"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga12">UART_RX_BUFFER_SIZE</a> 32</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga13">UART_TX_BUFFER_SIZE</a> 32</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga14" doxytag="pfleury_uart::UART_FRAME_ERROR"></a> +#define </td><td class="memItemRight" valign="bottom"><b>UART_FRAME_ERROR</b> 0x0800</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga15" doxytag="pfleury_uart::UART_OVERRUN_ERROR"></a> +#define </td><td class="memItemRight" valign="bottom"><b>UART_OVERRUN_ERROR</b> 0x0400</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga16" doxytag="pfleury_uart::UART_BUFFER_OVERFLOW"></a> +#define </td><td class="memItemRight" valign="bottom"><b>UART_BUFFER_OVERFLOW</b> 0x0200</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga17" doxytag="pfleury_uart::UART_NO_DATA"></a> +#define </td><td class="memItemRight" valign="bottom"><b>UART_NO_DATA</b> 0x0100</td></tr> + +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga18" doxytag="pfleury_uart::uart_puts_P"></a> +#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga18">uart_puts_P</a>(__s) uart_puts_p(PSTR(__s))</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Macro to automatically put a string constant into program memory. <br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga19" doxytag="pfleury_uart::uart1_puts_P"></a> +#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga19">uart1_puts_P</a>(__s) uart1_puts_p(PSTR(__s))</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Macro to automatically put a string constant into program memory. <br></td></tr> +<tr><td colspan="2"><br><h2>Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga0">uart_init</a> (unsigned int baudrate)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize UART and set baudrate. <a href="#ga0"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga1">uart_getc</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Get received byte from ringbuffer. <a href="#ga1"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga2">uart_putc</a> (unsigned char data)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Put byte to ringbuffer for transmitting via UART. <a href="#ga2"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga3">uart_puts</a> (const char *s)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Put string to ringbuffer for transmitting via UART. <a href="#ga3"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga4">uart_puts_p</a> (const char *s)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Put string from program memory to ringbuffer for transmitting via UART. <a href="#ga4"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga5">uart1_init</a> (unsigned int baudrate)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize USART1 (only available on selected ATmegas). <a href="#ga5"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga6">uart1_getc</a> (void)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Get received byte of USART1 from ringbuffer. (only available on selected ATmega). <a href="#ga6"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga7">uart1_putc</a> (unsigned char data)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega). <a href="#ga7"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga8">uart1_puts</a> (const char *s)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega). <a href="#ga8"></a><br></td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__uart.html#ga9">uart1_puts_p</a> (const char *s)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega). <a href="#ga9"></a><br></td></tr> +</table> +<hr><h2>Define Documentation</h2> +<a class="anchor" name="ga10" doxytag="uart.h::UART_BAUD_SELECT"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">#define UART_BAUD_SELECT </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">baudRate, <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>xtalCpu </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> ((xtalCpu)/((baudRate)*16l)-1)</td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +UART Baudrate Expression. +<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>xtalcpu</em> </td><td>system clock in Mhz, e.g. 4000000L for 4Mhz </td></tr> + <tr><td valign="top"></td><td valign="top"><em>baudrate</em> </td><td>baudrate in bps, e.g. 1200, 2400, 9600 </td></tr> + </table> +</dl> + </td> + </tr> +</table> +<a class="anchor" name="ga11" doxytag="uart.h::UART_BAUD_SELECT_DOUBLE_SPEED"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">#define UART_BAUD_SELECT_DOUBLE_SPEED </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">baudRate, <tr> + <td class="md" nowrap align="right"></td> + <td class="md"></td> + <td class="md" nowrap>xtalCpu </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> (((xtalCpu)/((baudRate)*8l)-1)|0x8000)</td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +UART Baudrate Expression for ATmega double speed mode. +<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>xtalcpu</em> </td><td>system clock in Mhz, e.g. 4000000L for 4Mhz </td></tr> + <tr><td valign="top"></td><td valign="top"><em>baudrate</em> </td><td>baudrate in bps, e.g. 1200, 2400, 9600 </td></tr> + </table> +</dl> + </td> + </tr> +</table> +<a class="anchor" name="ga12" doxytag="uart.h::UART_RX_BUFFER_SIZE"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">#define UART_RX_BUFFER_SIZE 32 </td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Size of the circular receive buffer, must be power of 2 </td> + </tr> +</table> +<a class="anchor" name="ga13" doxytag="uart.h::UART_TX_BUFFER_SIZE"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">#define UART_TX_BUFFER_SIZE 32 </td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Size of the circular transmit buffer, must be power of 2 </td> + </tr> +</table> +<hr><h2>Function Documentation</h2> +<a class="anchor" name="ga0" doxytag="uart.h::uart_init"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart_init </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">unsigned int </td> + <td class="mdname1" valign="top" nowrap> <em>baudrate</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialize UART and set baudrate. +<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>baudrate</em> </td><td>Specify baudrate using macro <a class="el" href="group__pfleury__uart.html#ga10">UART_BAUD_SELECT()</a> </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga1" doxytag="uart.h::uart_getc"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">unsigned int uart_getc </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Get received byte from ringbuffer. +<p> +Returns in the lower byte the received character and in the higher byte the last receive error. UART_NO_DATA is returned when no data is available.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>void</em> </td><td></td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>lower byte: received byte from ringbuffer <p> +higher byte: last receive status<ul> +<li><b>0</b> successfully received data from UART</li><li><b>UART_NO_DATA</b> <br> +no receive data available</li><li><b>UART_BUFFER_OVERFLOW</b> <br> +Receive ringbuffer overflow. We are not reading the receive buffer fast enough, one or more received character have been dropped</li><li><b>UART_OVERRUN_ERROR</b> <br> +Overrun condition by UART. A character already present in the UART UDR register was not read by the interrupt handler before the next character arrived, one or more received characters have been dropped.</li><li><b>UART_FRAME_ERROR</b> <br> +Framing Error by UART </li></ul> +</dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga2" doxytag="uart.h::uart_putc"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart_putc </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">unsigned char </td> + <td class="mdname1" valign="top" nowrap> <em>data</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Put byte to ringbuffer for transmitting via UART. +<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>byte to be transmitted </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga3" doxytag="uart.h::uart_puts"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart_puts </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname1" valign="top" nowrap> <em>s</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Put string to ringbuffer for transmitting via UART. +<p> +The string is buffered by the uart library in a circular buffer and one character at a time is transmitted to the UART using interrupts. Blocks if it can not write the whole string into the circular buffer.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>string to be transmitted </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga4" doxytag="uart.h::uart_puts_p"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart_puts_p </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname1" valign="top" nowrap> <em>s</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Put string from program memory to ringbuffer for transmitting via UART. +<p> +The string is buffered by the uart library in a circular buffer and one character at a time is transmitted to the UART using interrupts. Blocks if it can not write the whole string into the circular buffer.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>program memory string to be transmitted </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__pfleury__uart.html#ga18">uart_puts_P</a> </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga5" doxytag="uart.h::uart1_init"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart1_init </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">unsigned int </td> + <td class="mdname1" valign="top" nowrap> <em>baudrate</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Initialize USART1 (only available on selected ATmegas). +<p> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__pfleury__uart.html#ga0">uart_init</a> </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga6" doxytag="uart.h::uart1_getc"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">unsigned int uart1_getc </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Get received byte of USART1 from ringbuffer. (only available on selected ATmega). +<p> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__pfleury__uart.html#ga1">uart_getc</a> </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga7" doxytag="uart.h::uart1_putc"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart1_putc </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">unsigned char </td> + <td class="mdname1" valign="top" nowrap> <em>data</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega). +<p> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__pfleury__uart.html#ga2">uart_putc</a> </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga8" doxytag="uart.h::uart1_puts"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart1_puts </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname1" valign="top" nowrap> <em>s</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega). +<p> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__pfleury__uart.html#ga3">uart_puts</a> </dd></dl> + </td> + </tr> +</table> +<a class="anchor" name="ga9" doxytag="uart.h::uart1_puts_p"></a><p> +<table class="mdTable" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top">void uart1_puts_p </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const char * </td> + <td class="mdname1" valign="top" nowrap> <em>s</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + </table> + </td> + </tr> +</table> +<table cellspacing="5" cellpadding="0" border="0"> + <tr> + <td> + + </td> + <td> + +<p> +Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega). +<p> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__pfleury__uart.html#ga4">uart_puts_p</a> </dd></dl> + </td> + </tr> +</table> +<hr size="1"><address style="align: right;"><small>Generated on Sun Jul 10 13:47:45 2005 for AVR-GCC libraries by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.1 </small></address> +</body> +</html> diff --git a/avr_libs/uartlib/makefile b/avr_libs/uartlib/makefile new file mode 100644 index 0000000..b90c0c4 --- /dev/null +++ b/avr_libs/uartlib/makefile @@ -0,0 +1,508 @@ +# ----------------------------------------------------------------------------
+# Makefile to compile and link the UART library and test program
+# Author: Peter Fleury
+# File: $Id: makefile.uart,v 1.3 2005/04/09 07:56:09 Peter Exp $
+# based on WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
+#
+# Adjust F_CPU below to the clock frequency in Mhz of your AVR target
+#
+# Adjust the size of the receive and transmit ringbuffer in bytes using the
+# defines -DUART_RX_BUFFER_SIZE=128 and -DUART_TX_BUFFER_SIZE=128 in the
+# CDEF section below
+#
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device, using avrdude.
+# Please customize the avrdude settings below first!
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+# with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+# bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+
+# MCU name
+MCU = at90s8515
+
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+F_CPU = 4000000
+
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+
+# Target file name (without extension).
+TARGET = test_uart
+
+
+# List C source files here. (C dependencies are automatically generated.)
+SRC = $(TARGET).c uart.c
+
+
+# List Assembler source files here.
+# Make them always end in a capital .S. Files ending in a lowercase .s
+# will not be considered source files but generated files (assembler
+# output from the compiler), and will be deleted upon "make clean"!
+# Even though the DOS/Win* filesystem matches both .s and .S the same,
+# it will preserve the spelling of the filenames, and gcc itself does
+# care about how the name is spelled on its command-line.
+ASRC =
+
+
+# Optimization level, can be [0, 1, 2, 3, s].
+# 0 = turn off optimization. s = optimize for size.
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+
+
+# Debugging format.
+# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
+# AVR Studio 4.10 requires dwarf-2.
+# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
+DEBUG = dwarf-2
+
+
+# List any extra directories to look for include files here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRAINCDIRS =
+
+
+# Compiler flag to set the C Standard level.
+# c89 = "ANSI" C
+# gnu89 = c89 plus GCC extensions
+# c99 = ISO C99 standard (not yet fully implemented)
+# gnu99 = c99 plus GCC extensions
+CSTANDARD = -std=gnu99
+
+
+# Place -D or -U options here
+CDEFS = -DF_CPU=$(F_CPU)UL
+
+# uncomment and adapt these line if you want different UART library buffer size
+#CDEFS += -DUART_RX_BUFFER_SIZE=128
+#CDEFS += -DUART_TX_BUFFER_SIZE=128
+
+
+# Place -I options here
+CINCS =
+
+
+
+#---------------- Compiler Options ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CFLAGS = -g$(DEBUG)
+CFLAGS += $(CDEFS) $(CINCS)
+CFLAGS += -O$(OPT)
+CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
+CFLAGS += -Wall -Wstrict-prototypes
+CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS += $(CSTANDARD)
+
+
+#---------------- Assembler Options ----------------
+# -Wa,...: tell GCC to pass this to the assembler.
+# -ahlms: create listing
+# -gstabs: have the assembler create line number information; note that
+# for use in COFF files, additional information about filenames
+# and function names needs to be present in the assembler source
+# files -- see avr-libc docs [FIXME: not yet described there]
+ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
+
+
+#---------------- Library Options ----------------
+# Minimalistic printf version
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
+
+# Floating point printf version (requires MATH_LIB = -lm below)
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
+
+# If this is left blank, then it will use the Standard printf version.
+PRINTF_LIB =
+#PRINTF_LIB = $(PRINTF_LIB_MIN)
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
+
+
+# Minimalistic scanf version
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
+
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
+
+# If this is left blank, then it will use the Standard scanf version.
+SCANF_LIB =
+#SCANF_LIB = $(SCANF_LIB_MIN)
+#SCANF_LIB = $(SCANF_LIB_FLOAT)
+
+
+MATH_LIB = -lm
+
+
+
+#---------------- External Memory Options ----------------
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# used for variables (.data/.bss) and heap (malloc()).
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# only used for heap (malloc()).
+#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
+
+EXTMEMOPTS =
+
+
+
+#---------------- Linker Options ----------------
+# -Wl,...: tell GCC to pass this to linker.
+# -Map: create map file
+# --cref: add cross reference to map file
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
+LDFLAGS += $(EXTMEMOPTS)
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
+
+
+
+#---------------- Programming Options (avrdude) ----------------
+
+# Programming hardware: alf avr910 avrisp bascom bsd
+# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
+#
+# Type: avrdude -c ?
+# to get a full listing.
+#
+AVRDUDE_PROGRAMMER = stk500
+
+# com1 = serial port. Use lpt1 to connect to parallel port.
+AVRDUDE_PORT = com1 # programmer connected to serial device
+
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE_COUNTER = -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_NO_VERIFY = -V
+
+# Increase verbosity level. Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
+# to submit bug reports.
+#AVRDUDE_VERBOSE = -v -v
+
+AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
+
+
+
+#---------------- Debugging Options ----------------
+
+# For simulavr only - target MCU frequency.
+DEBUG_MFREQ = $(F_CPU)
+
+# Set the DEBUG_UI to either gdb or insight.
+# DEBUG_UI = gdb
+DEBUG_UI = insight
+
+# Set the debugging back-end to either avarice, simulavr.
+DEBUG_BACKEND = avarice
+#DEBUG_BACKEND = simulavr
+
+# GDB Init Filename.
+GDBINIT_FILE = __avr_gdbinit
+
+# When using avarice settings for the JTAG
+JTAG_DEV = /dev/com1
+
+# Debugging port used to communicate between GDB / avarice / simulavr.
+DEBUG_PORT = 4242
+
+# Debugging host used to communicate between GDB / avarice / simulavr, normally
+# just set to localhost unless doing some sort of crazy debugging when
+# avarice is running on a different computer.
+DEBUG_HOST = localhost
+
+
+
+#============================================================================
+
+
+# Define programs and commands.
+SHELL = sh
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+NM = avr-nm
+AVRDUDE = avrdude
+REMOVE = rm -f
+COPY = cp
+WINSHELL = cmd
+
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_BEGIN = -------- begin --------
+MSG_END = -------- end --------
+MSG_SIZE_BEFORE = Size before:
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for Flash:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+
+
+
+
+# Define all object files.
+OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
+
+# Define all listing files.
+LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
+
+
+# Compiler flags to generate dependency files.
+GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
+
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+
+
+
+# Default target.
+all: begin gccversion sizebefore build sizeafter end
+
+build: elf hex eep lss sym
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lss: $(TARGET).lss
+sym: $(TARGET).sym
+
+
+
+# Eye candy.
+# AVR Studio 3.x does not check make's exit code but relies on
+# the following magic strings to be generated by the compile job.
+begin:
+ @echo
+ @echo $(MSG_BEGIN)
+
+end:
+ @echo $(MSG_END)
+ @echo
+
+
+# Display size of file.
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
+ELFSIZE = $(SIZE) -A $(TARGET).elf
+AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
+
+sizebefore:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
+ $(AVRMEM) 2>/dev/null; echo; fi
+
+sizeafter:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
+ $(AVRMEM) 2>/dev/null; echo; fi
+
+
+
+# Display compiler version information.
+gccversion :
+ @$(CC) --version
+
+
+
+# Program the device.
+program: $(TARGET).hex $(TARGET).eep
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
+
+
+# Generate avr-gdb config/init file which does the following:
+# define the reset signal, load the target file, connect to target, and set
+# a breakpoint at main().
+gdb-config:
+ @$(REMOVE) $(GDBINIT_FILE)
+ @echo define reset >> $(GDBINIT_FILE)
+ @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
+ @echo end >> $(GDBINIT_FILE)
+ @echo file $(TARGET).elf >> $(GDBINIT_FILE)
+ @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
+ifeq ($(DEBUG_BACKEND),simulavr)
+ @echo load >> $(GDBINIT_FILE)
+endif
+ @echo break main >> $(GDBINIT_FILE)
+
+debug: gdb-config $(TARGET).elf
+ifeq ($(DEBUG_BACKEND), avarice)
+ @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
+ @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
+ $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
+ @$(WINSHELL) /c pause
+
+else
+ @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
+ $(DEBUG_MFREQ) --port $(DEBUG_PORT)
+endif
+ @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
+
+
+
+
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
+COFFCONVERT=$(OBJCOPY) --debugging \
+--change-section-address .data-0x800000 \
+--change-section-address .bss-0x800000 \
+--change-section-address .noinit-0x800000 \
+--change-section-address .eeprom-0x810000
+
+
+coff: $(TARGET).elf
+ @echo
+ @echo $(MSG_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
+
+
+extcoff: $(TARGET).elf
+ @echo
+ @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
+
+
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+ @echo
+ @echo $(MSG_FLASH) $@
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
+
+%.eep: %.elf
+ @echo
+ @echo $(MSG_EEPROM) $@
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+ --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+ @echo
+ @echo $(MSG_EXTENDED_LISTING) $@
+ $(OBJDUMP) -h -S $< > $@
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+ @echo
+ @echo $(MSG_SYMBOL_TABLE) $@
+ $(NM) -n $< > $@
+
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(TARGET).elf
+.PRECIOUS : $(OBJ)
+%.elf: $(OBJ)
+ @echo
+ @echo $(MSG_LINKING) $@
+ $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
+
+
+# Compile: create object files from C source files.
+%.o : %.c
+ @echo
+ @echo $(MSG_COMPILING) $<
+ $(CC) -c $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C source files.
+%.s : %.c
+ $(CC) -S $(ALL_CFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files.
+%.o : %.S
+ @echo
+ @echo $(MSG_ASSEMBLING) $<
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+# Create preprocessed source for use in sending a bug report.
+%.i : %.c
+ $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
+
+
+# Target: clean project.
+clean: begin clean_list end
+
+clean_list :
+ @echo
+ @echo $(MSG_CLEANING)
+ $(REMOVE) $(TARGET).hex
+ $(REMOVE) $(TARGET).eep
+ $(REMOVE) $(TARGET).cof
+ $(REMOVE) $(TARGET).elf
+ $(REMOVE) $(TARGET).map
+ $(REMOVE) $(TARGET).sym
+ $(REMOVE) $(TARGET).lss
+ $(REMOVE) $(OBJ)
+ $(REMOVE) $(LST)
+ $(REMOVE) $(SRC:.c=.s)
+ $(REMOVE) $(SRC:.c=.d)
+ $(REMOVE) .dep/*
+
+
+
+# Include the dependency files.
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
+
+
+# Listing of phony targets.
+.PHONY : all begin finish end sizebefore sizeafter gccversion \
+build elf hex eep lss sym coff extcoff \
+clean clean_list program debug gdb-config
+
diff --git a/avr_libs/uartlib/test_uart.c b/avr_libs/uartlib/test_uart.c new file mode 100644 index 0000000..44346b0 --- /dev/null +++ b/avr_libs/uartlib/test_uart.c @@ -0,0 +1,130 @@ +/*************************************************************************
+Title: example program for the Interrupt controlled UART library
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: test_uart.c,v 1.4 2005/07/10 11:46:30 Peter Exp $
+Software: AVR-GCC 3.3
+Hardware: any AVR with built-in UART, tested on AT90S8515 at 4 Mhz
+
+DESCRIPTION:
+ This example shows how to use the UART library uart.c
+
+*************************************************************************/
+#include <stdlib.h>
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/signal.h>
+#include <avr/pgmspace.h>
+
+#include "uart.h"
+
+
+/* define CPU frequency in Mhz here if not defined in Makefile */
+#ifndef F_CPU
+#define F_CPU 4000000UL
+#endif
+
+/* 9600 baud */
+#define UART_BAUD_RATE 9600
+
+
+int main(void)
+{
+ unsigned int c;
+ char buffer[7];
+ int num=134;
+
+
+ /*
+ * Initialize UART library, pass baudrate and AVR cpu clock
+ * with the macro
+ * UART_BAUD_SELECT() (normal speed mode )
+ * or
+ * UART_BAUD_SELECT_DOUBLE_SPEED() ( double speed mode)
+ */
+ uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
+
+ /*
+ * now enable interrupt, since UART library is interrupt controlled
+ */
+ sei();
+
+ /*
+ * Transmit string to UART
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * uart_puts() blocks if it can not write the whole string to the circular
+ * buffer
+ */
+ uart_puts("String stored in SRAM\n");
+
+ /*
+ * Transmit string from program memory to UART
+ */
+ uart_puts_P("String stored in FLASH\n");
+
+
+ /*
+ * Use standard avr-libc functions to convert numbers into string
+ * before transmitting via UART
+ */
+ itoa( num, buffer, 10); // convert interger into string (decimal format)
+ uart_puts(buffer); // and transmit string to UART
+
+
+ /*
+ * Transmit single character to UART
+ */
+ uart_putc('\r');
+
+ for(;;)
+ {
+ /*
+ * Get received character from ringbuffer
+ * uart_getc() returns in the lower byte the received character and
+ * in the higher byte (bitmask) the last receive error
+ * UART_NO_DATA is returned when no data is available.
+ *
+ */
+ c = uart_getc();
+ if ( c & UART_NO_DATA )
+ {
+ /*
+ * no data available from UART
+ */
+ }
+ else
+ {
+ /*
+ * new data available from UART
+ * check for Frame or Overrun error
+ */
+ if ( c & UART_FRAME_ERROR )
+ {
+ /* Framing Error detected, i.e no stop bit detected */
+ uart_puts_P("UART Frame Error: ");
+ }
+ if ( c & UART_OVERRUN_ERROR )
+ {
+ /*
+ * Overrun, a character already present in the UART UDR register was
+ * not read by the interrupt handler before the next character arrived,
+ * one or more received characters have been dropped
+ */
+ uart_puts_P("UART Overrun Error: ");
+ }
+ if ( c & UART_BUFFER_OVERFLOW )
+ {
+ /*
+ * We are not reading the receive buffer fast enough,
+ * one or more received character have been dropped
+ */
+ uart_puts_P("Buffer overflow error: ");
+ }
+ /*
+ * send received character back
+ */
+ uart_putc( (unsigned char)c );
+ }
+ }
+
+}
diff --git a/avr_libs/uartlib/uart.c b/avr_libs/uartlib/uart.c new file mode 100644 index 0000000..6034070 --- /dev/null +++ b/avr_libs/uartlib/uart.c @@ -0,0 +1,651 @@ +/*************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.c,v 1.6.2.2 2009/11/29 08:56:12 Peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4.6 or higher
+Hardware: any AVR with built-in UART,
+License: GNU General Public License
+
+DESCRIPTION:
+ An interrupt is generated when the UART has finished transmitting or
+ receiving a byte. The interrupt handling routines use circular buffers
+ for buffering received and transmitted data.
+
+ The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE variables define
+ the buffer size in bytes. Note that these variables must be a
+ power of 2.
+
+USAGE:
+ Refere to the header file uart.h for a description of the routines.
+ See also example test_uart.c.
+
+NOTES:
+ Based on Atmel Application Note AVR306
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+*************************************************************************/
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+#include "uart.h"
+
+
+/*
+ * constants and macros
+ */
+
+/* size of RX/TX buffers */
+#define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1)
+#define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1)
+
+#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK )
+#error RX buffer size is not a power of 2
+#endif
+#if ( UART_TX_BUFFER_SIZE & UART_TX_BUFFER_MASK )
+#error TX buffer size is not a power of 2
+#endif
+
+#if defined(__AVR_AT90S2313__) \
+ || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \
+ || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \
+ || defined(__AVR_ATmega103__)
+ /* old AVR classic or ATmega103 with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS USR
+ #define UART0_CONTROL UCR
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__)
+ /* old AVR classic with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \
+ || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) \
+ || defined(__AVR_ATmega323__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega163__)
+ /* ATmega163 with one UART */
+ #define ATMEGA_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega162__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_UART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_UART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_UART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega161__)
+ /* ATmega with UART */
+ #error "AVR ATmega161 currently not supported by this libaray !"
+#elif defined(__AVR_ATmega169__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATtiny2313__)
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RX
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_UDRE
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega329__) ||defined(__AVR_ATmega3290__) ||\
+ defined(__AVR_ATmega649__) ||defined(__AVR_ATmega6490__) ||\
+ defined(__AVR_ATmega325__) ||defined(__AVR_ATmega3250__) ||\
+ defined(__AVR_ATmega645__) ||defined(__AVR_ATmega6450__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega640__)
+/* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega644__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega644P__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#else
+ #error "no UART definition for MCU available"
+#endif
+
+
+/*
+ * module global variables
+ */
+static volatile unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART_TxHead;
+static volatile unsigned char UART_TxTail;
+static volatile unsigned char UART_RxHead;
+static volatile unsigned char UART_RxTail;
+static volatile unsigned char UART_LastRxError;
+
+#if defined( ATMEGA_USART1 )
+static volatile unsigned char UART1_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART1_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART1_TxHead;
+static volatile unsigned char UART1_TxTail;
+static volatile unsigned char UART1_RxHead;
+static volatile unsigned char UART1_RxTail;
+static volatile unsigned char UART1_LastRxError;
+#endif
+
+
+
+SIGNAL(UART0_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART Receive Complete interrupt
+Purpose: called when the UART has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART0_STATUS;
+ data = UART0_DATA;
+
+ /* */
+#if defined( AT90_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART0 )
+ lastRxError = (usr & (_BV(FE0)|_BV(DOR0)) );
+#elif defined ( ATMEGA_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#endif
+
+ /* calculate buffer index */
+ tmphead = ( UART_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART_RxHead = tmphead;
+ /* store received data in buffer */
+ UART_RxBuf[tmphead] = data;
+ }
+ UART_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART0_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART Data Register Empty interrupt
+Purpose: called when the UART is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART_TxHead != UART_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART0_CONTROL &= ~_BV(UART0_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart_init()
+Purpose: initialize UART and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart_init(unsigned int baudrate)
+{
+ UART_TxHead = 0;
+ UART_TxTail = 0;
+ UART_RxHead = 0;
+ UART_RxTail = 0;
+
+#if defined( AT90_UART )
+ /* set baud rate */
+ UBRR = (unsigned char)baudrate;
+
+ /* enable UART receiver and transmmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
+
+#elif defined (ATMEGA_USART)
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRH = (unsigned char)(baudrate>>8);
+ UBRRL = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL
+ UCSRC = (1<<URSEL)|(3<<UCSZ0);
+ #else
+ UCSRC = (3<<UCSZ0);
+ #endif
+
+#elif defined (ATMEGA_USART0 )
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X0); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR0H = (unsigned char)(baudrate>>8);
+ UBRR0L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL0
+ UCSR0C = (1<<URSEL0)|(3<<UCSZ00);
+ #else
+ UCSR0C = (3<<UCSZ00);
+ #endif
+
+#elif defined ( ATMEGA_UART )
+ /* set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRHI = (unsigned char)(baudrate>>8);
+ UBRR = (unsigned char) baudrate;
+
+ /* Enable UART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+#endif
+
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART_RxHead == UART_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART_RxBuf[tmptail];
+
+ return (UART_LastRxError << 8) + data;
+
+}/* uart_getc */
+
+
+/*************************************************************************
+Function: uart_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART_TxBuf[tmphead] = data;
+ UART_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART0_CONTROL |= _BV(UART0_UDRIE);
+
+}/* uart_putc */
+
+
+/*************************************************************************
+Function: uart_puts()
+Purpose: transmit string to UART
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts(const char *s )
+{
+ while (*s)
+ uart_putc(*s++);
+
+}/* uart_puts */
+
+
+/*************************************************************************
+Function: uart_puts_p()
+Purpose: transmit string from program memory to UART
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart_putc(c);
+
+}/* uart_puts_p */
+
+
+/*
+ * these functions are only for ATmegas with two USART
+ */
+#if defined( ATMEGA_USART1 )
+
+SIGNAL(UART1_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART1 Receive Complete interrupt
+Purpose: called when the UART1 has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART1_STATUS;
+ data = UART1_DATA;
+
+ /* */
+ lastRxError = (usr & (_BV(FE1)|_BV(DOR1)) );
+
+ /* calculate buffer index */
+ tmphead = ( UART1_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART1_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART1_RxHead = tmphead;
+ /* store received data in buffer */
+ UART1_RxBuf[tmphead] = data;
+ }
+ UART1_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART1_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART1 Data Register Empty interrupt
+Purpose: called when the UART1 is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART1_TxHead != UART1_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART1_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART1_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART1_CONTROL &= ~_BV(UART1_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart1_init()
+Purpose: initialize UART1 and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart1_init(unsigned int baudrate)
+{
+ UART1_TxHead = 0;
+ UART1_TxTail = 0;
+ UART1_RxHead = 0;
+ UART1_RxTail = 0;
+
+
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART1_STATUS = (1<<U2X1); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR1H = (unsigned char)(baudrate>>8);
+ UBRR1L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART1_CONTROL = _BV(RXCIE1)|(1<<RXEN1)|(1<<TXEN1);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL1
+ UCSR1C = (1<<URSEL1)|(3<<UCSZ10);
+ #else
+ UCSR1C = (3<<UCSZ10);
+ #endif
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart1_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart1_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART1_RxHead == UART1_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART1_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART1_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART1_RxBuf[tmptail];
+
+ return (UART1_LastRxError << 8) + data;
+
+}/* uart1_getc */
+
+
+/*************************************************************************
+Function: uart1_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART1_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART1_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART1_TxBuf[tmphead] = data;
+ UART1_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART1_CONTROL |= _BV(UART1_UDRIE);
+
+}/* uart1_putc */
+
+
+/*************************************************************************
+Function: uart1_puts()
+Purpose: transmit string to UART1
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts(const char *s )
+{
+ while (*s)
+ uart1_putc(*s++);
+
+}/* uart1_puts */
+
+
+/*************************************************************************
+Function: uart1_puts_p()
+Purpose: transmit string from program memory to UART1
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart1_putc(c);
+
+}/* uart1_puts_p */
+
+
+#endif
diff --git a/avr_libs/uartlib/uart.h b/avr_libs/uartlib/uart.h new file mode 100644 index 0000000..7f4f0be --- /dev/null +++ b/avr_libs/uartlib/uart.h @@ -0,0 +1,194 @@ +#ifndef UART_H
+#define UART_H
+/************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.h,v 1.8.2.1 2007/07/01 11:14:38 peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4
+Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz
+License: GNU General Public License
+Usage: see Doxygen manual
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+************************************************************************/
+
+/**
+ * @defgroup pfleury_uart UART Library
+ * @code #include <uart.h> @endcode
+ *
+ * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers.
+ *
+ * This library can be used to transmit and receive data through the built in UART.
+ *
+ * An interrupt is generated when the UART has finished transmitting or
+ * receiving a byte. The interrupt handling routines use circular buffers
+ * for buffering received and transmitted data.
+ *
+ * The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define
+ * the size of the circular buffers in bytes. Note that these constants must be a power of 2.
+ * You may need to adapt this constants to your target and your application by adding
+ * CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile.
+ *
+ * @note Based on Atmel Application Note AVR306
+ * @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury
+ */
+
+/**@{*/
+
+
+#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
+#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
+#endif
+
+
+/*
+** constants and macros
+*/
+
+/** @brief UART Baudrate Expression
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)
+
+/** @brief UART Baudrate Expression for ATmega double speed mode
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000)
+
+
+/** Size of the circular receive buffer, must be power of 2 */
+#ifndef UART_RX_BUFFER_SIZE
+#define UART_RX_BUFFER_SIZE 32
+#endif
+/** Size of the circular transmit buffer, must be power of 2 */
+#ifndef UART_TX_BUFFER_SIZE
+#define UART_TX_BUFFER_SIZE 32
+#endif
+
+/* test if the size of the circular buffers fits into SRAM */
+#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) )
+#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM"
+#endif
+
+/*
+** high byte error return code of uart_getc()
+*/
+#define UART_FRAME_ERROR 0x0800 /* Framing Error by UART */
+#define UART_OVERRUN_ERROR 0x0400 /* Overrun condition by UART */
+#define UART_BUFFER_OVERFLOW 0x0200 /* receive ringbuffer overflow */
+#define UART_NO_DATA 0x0100 /* no receive data available */
+
+
+/*
+** function prototypes
+*/
+
+/**
+ @brief Initialize UART and set baudrate
+ @param baudrate Specify baudrate using macro UART_BAUD_SELECT()
+ @return none
+*/
+extern void uart_init(unsigned int baudrate);
+
+
+/**
+ * @brief Get received byte from ringbuffer
+ *
+ * Returns in the lower byte the received character and in the
+ * higher byte the last receive error.
+ * UART_NO_DATA is returned when no data is available.
+ *
+ * @param void
+ * @return lower byte: received byte from ringbuffer
+ * @return higher byte: last receive status
+ * - \b 0 successfully received data from UART
+ * - \b UART_NO_DATA
+ * <br>no receive data available
+ * - \b UART_BUFFER_OVERFLOW
+ * <br>Receive ringbuffer overflow.
+ * We are not reading the receive buffer fast enough,
+ * one or more received character have been dropped
+ * - \b UART_OVERRUN_ERROR
+ * <br>Overrun condition by UART.
+ * A character already present in the UART UDR register was
+ * not read by the interrupt handler before the next character arrived,
+ * one or more received characters have been dropped.
+ * - \b UART_FRAME_ERROR
+ * <br>Framing Error by UART
+ */
+extern unsigned int uart_getc(void);
+
+
+/**
+ * @brief Put byte to ringbuffer for transmitting via UART
+ * @param data byte to be transmitted
+ * @return none
+ */
+extern void uart_putc(unsigned char data);
+
+
+/**
+ * @brief Put string to ringbuffer for transmitting via UART
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s string to be transmitted
+ * @return none
+ */
+extern void uart_puts(const char *s );
+
+
+/**
+ * @brief Put string from program memory to ringbuffer for transmitting via UART.
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s program memory string to be transmitted
+ * @return none
+ * @see uart_puts_P
+ */
+extern void uart_puts_p(const char *s );
+
+/**
+ * @brief Macro to automatically put a string constant into program memory
+ */
+#define uart_puts_P(__s) uart_puts_p(PSTR(__s))
+
+
+
+/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */
+extern void uart1_init(unsigned int baudrate);
+/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */
+extern unsigned int uart1_getc(void);
+/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */
+extern void uart1_putc(unsigned char data);
+/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */
+extern void uart1_puts(const char *s );
+/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */
+extern void uart1_puts_p(const char *s );
+/** @brief Macro to automatically put a string constant into program memory */
+#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s))
+
+/**@}*/
+
+
+#endif // UART_H
+
diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.eep.hex b/blinktest_328p/bin/Debug/blinktest_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.hex b/blinktest_328p/bin/Debug/blinktest_328p.elf.hex new file mode 100644 index 0000000..562b5d7 --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.hex @@ -0,0 +1,71 @@ +:100000000C945A000C9477000C9477000C947700B1
+:100010000C9477000C9477000C9477000C94770084
+:100020000C9477000C9477000C9477000C94770074
+:100030000C9477000C9477000C9477000C94770064
+:100040000C9498000C9477000C9477000C94770033
+:100050000C9477000C9477000C9477000C94770044
+:100060000C9477000C947700000024272A000025C8
+:10007000282B000023262904040404040404040299
+:100080000202020202030303030303010204081035
+:100090002040800102040810200102040810200002
+:1000A0000000070002010000030406000000000039
+:1000B0000000000011241FBECFEFD8E0DEBFCDBF8F
+:1000C00011E0A0E0B1E0E8E5F4E002C005900D9297
+:1000D000A030B107D9F711E0A0E0B1E001C01D9256
+:1000E000A830B107E1F70E9479000C942A020C9421
+:1000F0000000DF93CF93CDB7DEB70E943B018DE0C8
+:1001000061E00E9475018DE061E00E94930168EE5C
+:1001100073E080E090E00E9403018DE060E00E94C7
+:10012000930168EE73E080E090E00E940301EBCF62
+:100130001F920F920FB60F9211242F938F939F93BC
+:10014000AF93BF938091000190910101A0910201B2
+:10015000B09103018050904CAF4FBF4F809300018E
+:1001600090930101A0930201B093030127C08091F5
+:10017000000190910101A0910201B091030180580A
+:100180009E43A040B0408093000190930101A09352
+:100190000201B09303018091040190910501A091A7
+:1001A0000601B09107010196A11DB11D80930401C4
+:1001B00090930501A0930601B0930701809100017F
+:1001C00090910101A0910201B091030181589E43D9
+:1001D000A040B04060F6BF91AF919F918F912F9159
+:1001E0000F900FBE0F901F9018958FB7F894209125
+:1001F00004013091050140910601509107018FBF24
+:10020000B901CA010895EF92FF920F931F937B01EA
+:100210008C018FB7F89440910401509105016091D1
+:100220000601709107018FBF2FB7F89480910401E8
+:1002300090910501A0910601B09107012FBF841B89
+:10024000950BA60BB70B8E159F05A007B10760F3A2
+:100250001F910F91FF90EF900895019759F0FC01C5
+:10026000EE0FFF1FEE0FFF1F32978FB7F8943197F5
+:10027000F1F78FBF0895789484B5826084BD84B50A
+:10028000816084BD85B5826085BD85B5816085BD91
+:10029000EEE6F0E0808181608083E1E8F0E080813B
+:1002A00082608083808181608083E0E8F0E08081EB
+:1002B00081608083E1EBF0E0808184608083E0EB0B
+:1002C000F0E0808181608083EAE7F0E080818460F3
+:1002D000808380818260808380818160808380814F
+:1002E000806880831092C1000895282F30E0C901F2
+:1002F00085579F4FFC01949129583F4FF9018491F4
+:10030000882381F0E82FF0E0E859FF4FE491F0E016
+:10031000662329F4808190958923808308958081C4
+:10032000892B80830895482F50E0CA0181569F4F42
+:10033000FC012491CA0185579F4FFC0194914958B3
+:100340005F4FFA0134913323C1F1222331F123307D
+:1003500021F4809180008F7705C0243031F48091A2
+:1003600080008F7D8093800018C0213019F484B5FF
+:100370008F7704C0223021F484B58F7D84BD0DC0F9
+:10038000263021F48091B0008F7705C0273029F402
+:100390008091B0008F7D8093B000E32FF0E0E359AF
+:1003A000FF4FE491F0E0662329F480819095892342
+:1003B000808308958081892B80830895482F50E0A1
+:1003C000CA0181569F4FFC012491CA0185579F4F56
+:1003D000FC01949149585F4FFA013491332319F489
+:1003E00020E030E035C0222331F1233021F4809128
+:1003F00080008F7705C0243031F4809180008F7D9C
+:100400008093800018C0213019F484B58F7704C020
+:10041000223021F484B58F7D84BD0DC0263021F4B7
+:100420008091B0008F7705C0273029F48091B0000B
+:100430008F7D8093B000E32FF0E0EE58FF4FE49102
+:10044000F0E0808120E030E0892311F021E030E00D
+:08045000C9010895F894FFCFE3
+:00000001FF
diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.lss b/blinktest_328p/bin/Debug/blinktest_328p.elf.lss new file mode 100644 index 0000000..bee8588 --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.lss @@ -0,0 +1,539 @@ + +bin/Debug/blinktest_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000458 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .bss 00000008 00800100 00800100 000004cc 2**0 + ALLOC + 2 .stab 00000b28 00000000 00000000 000004cc 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 0000188e 00000000 00000000 00000ff4 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 00000040 00000000 00000000 00002882 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_pubnames 0000016c 00000000 00000000 000028c2 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000006f2 00000000 00000000 00002a2e 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 000002e1 00000000 00000000 00003120 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000551 00000000 00000000 00003401 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000a0 00000000 00000000 00003954 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000227 00000000 00000000 000039f4 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 000001fa 00000000 00000000 00003c1b 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__ctors_end> + 4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 40: 0c 94 98 00 jmp 0x130 ; 0x130 <__vector_16> + 44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + +00000068 <port_to_mode_PGM>: + 68: 00 00 24 27 2a ..$'* + +0000006d <port_to_output_PGM>: + 6d: 00 00 25 28 2b ..%(+ + +00000072 <port_to_input_PGM>: + 72: 00 00 23 26 29 ..#&) + +00000077 <digital_pin_to_port_PGM>: + 77: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 87: 03 03 03 03 .... + +0000008b <digital_pin_to_bit_mask_PGM>: + 8b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + 9b: 04 08 10 20 ... + +0000009f <digital_pin_to_timer_PGM>: + 9f: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + af: 00 00 00 00 00 ..... + +000000b4 <__ctors_end>: + b4: 11 24 eor r1, r1 + b6: 1f be out 0x3f, r1 ; 63 + b8: cf ef ldi r28, 0xFF ; 255 + ba: d8 e0 ldi r29, 0x08 ; 8 + bc: de bf out 0x3e, r29 ; 62 + be: cd bf out 0x3d, r28 ; 61 + +000000c0 <__do_copy_data>: + c0: 11 e0 ldi r17, 0x01 ; 1 + c2: a0 e0 ldi r26, 0x00 ; 0 + c4: b1 e0 ldi r27, 0x01 ; 1 + c6: e8 e5 ldi r30, 0x58 ; 88 + c8: f4 e0 ldi r31, 0x04 ; 4 + ca: 02 c0 rjmp .+4 ; 0xd0 <.do_copy_data_start> + +000000cc <.do_copy_data_loop>: + cc: 05 90 lpm r0, Z+ + ce: 0d 92 st X+, r0 + +000000d0 <.do_copy_data_start>: + d0: a0 30 cpi r26, 0x00 ; 0 + d2: b1 07 cpc r27, r17 + d4: d9 f7 brne .-10 ; 0xcc <.do_copy_data_loop> + +000000d6 <__do_clear_bss>: + d6: 11 e0 ldi r17, 0x01 ; 1 + d8: a0 e0 ldi r26, 0x00 ; 0 + da: b1 e0 ldi r27, 0x01 ; 1 + dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start> + +000000de <.do_clear_bss_loop>: + de: 1d 92 st X+, r1 + +000000e0 <.do_clear_bss_start>: + e0: a8 30 cpi r26, 0x08 ; 8 + e2: b1 07 cpc r27, r17 + e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop> + e6: 0e 94 79 00 call 0xf2 ; 0xf2 <main> + ea: 0c 94 2a 02 jmp 0x454 ; 0x454 <_exit> + +000000ee <__bad_interrupt>: + ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000f2 <main>: + + +#include <WProgram.h> //import main Arduino header file + + +int main(){ + f2: df 93 push r29 + f4: cf 93 push r28 + f6: cd b7 in r28, 0x3d ; 61 + f8: de b7 in r29, 0x3e ; 62 + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + fa: 0e 94 3b 01 call 0x276 ; 0x276 <init> + pinMode(13, OUTPUT); + fe: 8d e0 ldi r24, 0x0D ; 13 + 100: 61 e0 ldi r22, 0x01 ; 1 + 102: 0e 94 75 01 call 0x2ea ; 0x2ea <pinMode> + + + + while(1) { + digitalWrite(13, HIGH); // set the LED on + 106: 8d e0 ldi r24, 0x0D ; 13 + 108: 61 e0 ldi r22, 0x01 ; 1 + 10a: 0e 94 93 01 call 0x326 ; 0x326 <digitalWrite> + delay(1000); // wait for a second + 10e: 68 ee ldi r22, 0xE8 ; 232 + 110: 73 e0 ldi r23, 0x03 ; 3 + 112: 80 e0 ldi r24, 0x00 ; 0 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: 0e 94 03 01 call 0x206 ; 0x206 <delay> + digitalWrite(13, LOW); // set the LED off + 11a: 8d e0 ldi r24, 0x0D ; 13 + 11c: 60 e0 ldi r22, 0x00 ; 0 + 11e: 0e 94 93 01 call 0x326 ; 0x326 <digitalWrite> + delay(1000); // wait for a second + 122: 68 ee ldi r22, 0xE8 ; 232 + 124: 73 e0 ldi r23, 0x03 ; 3 + 126: 80 e0 ldi r24, 0x00 ; 0 + 128: 90 e0 ldi r25, 0x00 ; 0 + 12a: 0e 94 03 01 call 0x206 ; 0x206 <delay> + 12e: eb cf rjmp .-42 ; 0x106 <main+0x14> + +00000130 <__vector_16>: + 130: 1f 92 push r1 + 132: 0f 92 push r0 + 134: 0f b6 in r0, 0x3f ; 63 + 136: 0f 92 push r0 + 138: 11 24 eor r1, r1 + 13a: 2f 93 push r18 + 13c: 8f 93 push r24 + 13e: 9f 93 push r25 + 140: af 93 push r26 + 142: bf 93 push r27 + 144: 80 91 00 01 lds r24, 0x0100 + 148: 90 91 01 01 lds r25, 0x0101 + 14c: a0 91 02 01 lds r26, 0x0102 + 150: b0 91 03 01 lds r27, 0x0103 + 154: 80 50 subi r24, 0x00 ; 0 + 156: 90 4c sbci r25, 0xC0 ; 192 + 158: af 4f sbci r26, 0xFF ; 255 + 15a: bf 4f sbci r27, 0xFF ; 255 + 15c: 80 93 00 01 sts 0x0100, r24 + 160: 90 93 01 01 sts 0x0101, r25 + 164: a0 93 02 01 sts 0x0102, r26 + 168: b0 93 03 01 sts 0x0103, r27 + 16c: 27 c0 rjmp .+78 ; 0x1bc <__vector_16+0x8c> + 16e: 80 91 00 01 lds r24, 0x0100 + 172: 90 91 01 01 lds r25, 0x0101 + 176: a0 91 02 01 lds r26, 0x0102 + 17a: b0 91 03 01 lds r27, 0x0103 + 17e: 80 58 subi r24, 0x80 ; 128 + 180: 9e 43 sbci r25, 0x3E ; 62 + 182: a0 40 sbci r26, 0x00 ; 0 + 184: b0 40 sbci r27, 0x00 ; 0 + 186: 80 93 00 01 sts 0x0100, r24 + 18a: 90 93 01 01 sts 0x0101, r25 + 18e: a0 93 02 01 sts 0x0102, r26 + 192: b0 93 03 01 sts 0x0103, r27 + 196: 80 91 04 01 lds r24, 0x0104 + 19a: 90 91 05 01 lds r25, 0x0105 + 19e: a0 91 06 01 lds r26, 0x0106 + 1a2: b0 91 07 01 lds r27, 0x0107 + 1a6: 01 96 adiw r24, 0x01 ; 1 + 1a8: a1 1d adc r26, r1 + 1aa: b1 1d adc r27, r1 + 1ac: 80 93 04 01 sts 0x0104, r24 + 1b0: 90 93 05 01 sts 0x0105, r25 + 1b4: a0 93 06 01 sts 0x0106, r26 + 1b8: b0 93 07 01 sts 0x0107, r27 + 1bc: 80 91 00 01 lds r24, 0x0100 + 1c0: 90 91 01 01 lds r25, 0x0101 + 1c4: a0 91 02 01 lds r26, 0x0102 + 1c8: b0 91 03 01 lds r27, 0x0103 + 1cc: 81 58 subi r24, 0x81 ; 129 + 1ce: 9e 43 sbci r25, 0x3E ; 62 + 1d0: a0 40 sbci r26, 0x00 ; 0 + 1d2: b0 40 sbci r27, 0x00 ; 0 + 1d4: 60 f6 brcc .-104 ; 0x16e <__vector_16+0x3e> + 1d6: bf 91 pop r27 + 1d8: af 91 pop r26 + 1da: 9f 91 pop r25 + 1dc: 8f 91 pop r24 + 1de: 2f 91 pop r18 + 1e0: 0f 90 pop r0 + 1e2: 0f be out 0x3f, r0 ; 63 + 1e4: 0f 90 pop r0 + 1e6: 1f 90 pop r1 + 1e8: 18 95 reti + +000001ea <millis>: + 1ea: 8f b7 in r24, 0x3f ; 63 + 1ec: f8 94 cli + 1ee: 20 91 04 01 lds r18, 0x0104 + 1f2: 30 91 05 01 lds r19, 0x0105 + 1f6: 40 91 06 01 lds r20, 0x0106 + 1fa: 50 91 07 01 lds r21, 0x0107 + 1fe: 8f bf out 0x3f, r24 ; 63 + 200: b9 01 movw r22, r18 + 202: ca 01 movw r24, r20 + 204: 08 95 ret + +00000206 <delay>: + 206: ef 92 push r14 + 208: ff 92 push r15 + 20a: 0f 93 push r16 + 20c: 1f 93 push r17 + 20e: 7b 01 movw r14, r22 + 210: 8c 01 movw r16, r24 + 212: 8f b7 in r24, 0x3f ; 63 + 214: f8 94 cli + 216: 40 91 04 01 lds r20, 0x0104 + 21a: 50 91 05 01 lds r21, 0x0105 + 21e: 60 91 06 01 lds r22, 0x0106 + 222: 70 91 07 01 lds r23, 0x0107 + 226: 8f bf out 0x3f, r24 ; 63 + 228: 2f b7 in r18, 0x3f ; 63 + 22a: f8 94 cli + 22c: 80 91 04 01 lds r24, 0x0104 + 230: 90 91 05 01 lds r25, 0x0105 + 234: a0 91 06 01 lds r26, 0x0106 + 238: b0 91 07 01 lds r27, 0x0107 + 23c: 2f bf out 0x3f, r18 ; 63 + 23e: 84 1b sub r24, r20 + 240: 95 0b sbc r25, r21 + 242: a6 0b sbc r26, r22 + 244: b7 0b sbc r27, r23 + 246: 8e 15 cp r24, r14 + 248: 9f 05 cpc r25, r15 + 24a: a0 07 cpc r26, r16 + 24c: b1 07 cpc r27, r17 + 24e: 60 f3 brcs .-40 ; 0x228 <delay+0x22> + 250: 1f 91 pop r17 + 252: 0f 91 pop r16 + 254: ff 90 pop r15 + 256: ef 90 pop r14 + 258: 08 95 ret + +0000025a <delayMicroseconds>: + 25a: 01 97 sbiw r24, 0x01 ; 1 + 25c: 59 f0 breq .+22 ; 0x274 <delayMicroseconds+0x1a> + 25e: fc 01 movw r30, r24 + 260: ee 0f add r30, r30 + 262: ff 1f adc r31, r31 + 264: ee 0f add r30, r30 + 266: ff 1f adc r31, r31 + 268: 32 97 sbiw r30, 0x02 ; 2 + 26a: 8f b7 in r24, 0x3f ; 63 + 26c: f8 94 cli + 26e: 31 97 sbiw r30, 0x01 ; 1 + 270: f1 f7 brne .-4 ; 0x26e <delayMicroseconds+0x14> + 272: 8f bf out 0x3f, r24 ; 63 + 274: 08 95 ret + +00000276 <init>: + 276: 78 94 sei + 278: 84 b5 in r24, 0x24 ; 36 + 27a: 82 60 ori r24, 0x02 ; 2 + 27c: 84 bd out 0x24, r24 ; 36 + 27e: 84 b5 in r24, 0x24 ; 36 + 280: 81 60 ori r24, 0x01 ; 1 + 282: 84 bd out 0x24, r24 ; 36 + 284: 85 b5 in r24, 0x25 ; 37 + 286: 82 60 ori r24, 0x02 ; 2 + 288: 85 bd out 0x25, r24 ; 37 + 28a: 85 b5 in r24, 0x25 ; 37 + 28c: 81 60 ori r24, 0x01 ; 1 + 28e: 85 bd out 0x25, r24 ; 37 + 290: ee e6 ldi r30, 0x6E ; 110 + 292: f0 e0 ldi r31, 0x00 ; 0 + 294: 80 81 ld r24, Z + 296: 81 60 ori r24, 0x01 ; 1 + 298: 80 83 st Z, r24 + 29a: e1 e8 ldi r30, 0x81 ; 129 + 29c: f0 e0 ldi r31, 0x00 ; 0 + 29e: 80 81 ld r24, Z + 2a0: 82 60 ori r24, 0x02 ; 2 + 2a2: 80 83 st Z, r24 + 2a4: 80 81 ld r24, Z + 2a6: 81 60 ori r24, 0x01 ; 1 + 2a8: 80 83 st Z, r24 + 2aa: e0 e8 ldi r30, 0x80 ; 128 + 2ac: f0 e0 ldi r31, 0x00 ; 0 + 2ae: 80 81 ld r24, Z + 2b0: 81 60 ori r24, 0x01 ; 1 + 2b2: 80 83 st Z, r24 + 2b4: e1 eb ldi r30, 0xB1 ; 177 + 2b6: f0 e0 ldi r31, 0x00 ; 0 + 2b8: 80 81 ld r24, Z + 2ba: 84 60 ori r24, 0x04 ; 4 + 2bc: 80 83 st Z, r24 + 2be: e0 eb ldi r30, 0xB0 ; 176 + 2c0: f0 e0 ldi r31, 0x00 ; 0 + 2c2: 80 81 ld r24, Z + 2c4: 81 60 ori r24, 0x01 ; 1 + 2c6: 80 83 st Z, r24 + 2c8: ea e7 ldi r30, 0x7A ; 122 + 2ca: f0 e0 ldi r31, 0x00 ; 0 + 2cc: 80 81 ld r24, Z + 2ce: 84 60 ori r24, 0x04 ; 4 + 2d0: 80 83 st Z, r24 + 2d2: 80 81 ld r24, Z + 2d4: 82 60 ori r24, 0x02 ; 2 + 2d6: 80 83 st Z, r24 + 2d8: 80 81 ld r24, Z + 2da: 81 60 ori r24, 0x01 ; 1 + 2dc: 80 83 st Z, r24 + 2de: 80 81 ld r24, Z + 2e0: 80 68 ori r24, 0x80 ; 128 + 2e2: 80 83 st Z, r24 + 2e4: 10 92 c1 00 sts 0x00C1, r1 + 2e8: 08 95 ret + +000002ea <pinMode>: + 2ea: 28 2f mov r18, r24 + 2ec: 30 e0 ldi r19, 0x00 ; 0 + 2ee: c9 01 movw r24, r18 + 2f0: 85 57 subi r24, 0x75 ; 117 + 2f2: 9f 4f sbci r25, 0xFF ; 255 + 2f4: fc 01 movw r30, r24 + 2f6: 94 91 lpm r25, Z+ + 2f8: 29 58 subi r18, 0x89 ; 137 + 2fa: 3f 4f sbci r19, 0xFF ; 255 + 2fc: f9 01 movw r30, r18 + 2fe: 84 91 lpm r24, Z+ + 300: 88 23 and r24, r24 + 302: 81 f0 breq .+32 ; 0x324 <pinMode+0x3a> + 304: e8 2f mov r30, r24 + 306: f0 e0 ldi r31, 0x00 ; 0 + 308: e8 59 subi r30, 0x98 ; 152 + 30a: ff 4f sbci r31, 0xFF ; 255 + 30c: e4 91 lpm r30, Z+ + 30e: f0 e0 ldi r31, 0x00 ; 0 + 310: 66 23 and r22, r22 + 312: 29 f4 brne .+10 ; 0x31e <pinMode+0x34> + 314: 80 81 ld r24, Z + 316: 90 95 com r25 + 318: 89 23 and r24, r25 + 31a: 80 83 st Z, r24 + 31c: 08 95 ret + 31e: 80 81 ld r24, Z + 320: 89 2b or r24, r25 + 322: 80 83 st Z, r24 + 324: 08 95 ret + +00000326 <digitalWrite>: + 326: 48 2f mov r20, r24 + 328: 50 e0 ldi r21, 0x00 ; 0 + 32a: ca 01 movw r24, r20 + 32c: 81 56 subi r24, 0x61 ; 97 + 32e: 9f 4f sbci r25, 0xFF ; 255 + 330: fc 01 movw r30, r24 + 332: 24 91 lpm r18, Z+ + 334: ca 01 movw r24, r20 + 336: 85 57 subi r24, 0x75 ; 117 + 338: 9f 4f sbci r25, 0xFF ; 255 + 33a: fc 01 movw r30, r24 + 33c: 94 91 lpm r25, Z+ + 33e: 49 58 subi r20, 0x89 ; 137 + 340: 5f 4f sbci r21, 0xFF ; 255 + 342: fa 01 movw r30, r20 + 344: 34 91 lpm r19, Z+ + 346: 33 23 and r19, r19 + 348: c1 f1 breq .+112 ; 0x3ba <digitalWrite+0x94> + 34a: 22 23 and r18, r18 + 34c: 31 f1 breq .+76 ; 0x39a <digitalWrite+0x74> + 34e: 23 30 cpi r18, 0x03 ; 3 + 350: 21 f4 brne .+8 ; 0x35a <digitalWrite+0x34> + 352: 80 91 80 00 lds r24, 0x0080 + 356: 8f 77 andi r24, 0x7F ; 127 + 358: 05 c0 rjmp .+10 ; 0x364 <digitalWrite+0x3e> + 35a: 24 30 cpi r18, 0x04 ; 4 + 35c: 31 f4 brne .+12 ; 0x36a <digitalWrite+0x44> + 35e: 80 91 80 00 lds r24, 0x0080 + 362: 8f 7d andi r24, 0xDF ; 223 + 364: 80 93 80 00 sts 0x0080, r24 + 368: 18 c0 rjmp .+48 ; 0x39a <digitalWrite+0x74> + 36a: 21 30 cpi r18, 0x01 ; 1 + 36c: 19 f4 brne .+6 ; 0x374 <digitalWrite+0x4e> + 36e: 84 b5 in r24, 0x24 ; 36 + 370: 8f 77 andi r24, 0x7F ; 127 + 372: 04 c0 rjmp .+8 ; 0x37c <digitalWrite+0x56> + 374: 22 30 cpi r18, 0x02 ; 2 + 376: 21 f4 brne .+8 ; 0x380 <digitalWrite+0x5a> + 378: 84 b5 in r24, 0x24 ; 36 + 37a: 8f 7d andi r24, 0xDF ; 223 + 37c: 84 bd out 0x24, r24 ; 36 + 37e: 0d c0 rjmp .+26 ; 0x39a <digitalWrite+0x74> + 380: 26 30 cpi r18, 0x06 ; 6 + 382: 21 f4 brne .+8 ; 0x38c <digitalWrite+0x66> + 384: 80 91 b0 00 lds r24, 0x00B0 + 388: 8f 77 andi r24, 0x7F ; 127 + 38a: 05 c0 rjmp .+10 ; 0x396 <digitalWrite+0x70> + 38c: 27 30 cpi r18, 0x07 ; 7 + 38e: 29 f4 brne .+10 ; 0x39a <digitalWrite+0x74> + 390: 80 91 b0 00 lds r24, 0x00B0 + 394: 8f 7d andi r24, 0xDF ; 223 + 396: 80 93 b0 00 sts 0x00B0, r24 + 39a: e3 2f mov r30, r19 + 39c: f0 e0 ldi r31, 0x00 ; 0 + 39e: e3 59 subi r30, 0x93 ; 147 + 3a0: ff 4f sbci r31, 0xFF ; 255 + 3a2: e4 91 lpm r30, Z+ + 3a4: f0 e0 ldi r31, 0x00 ; 0 + 3a6: 66 23 and r22, r22 + 3a8: 29 f4 brne .+10 ; 0x3b4 <digitalWrite+0x8e> + 3aa: 80 81 ld r24, Z + 3ac: 90 95 com r25 + 3ae: 89 23 and r24, r25 + 3b0: 80 83 st Z, r24 + 3b2: 08 95 ret + 3b4: 80 81 ld r24, Z + 3b6: 89 2b or r24, r25 + 3b8: 80 83 st Z, r24 + 3ba: 08 95 ret + +000003bc <digitalRead>: + 3bc: 48 2f mov r20, r24 + 3be: 50 e0 ldi r21, 0x00 ; 0 + 3c0: ca 01 movw r24, r20 + 3c2: 81 56 subi r24, 0x61 ; 97 + 3c4: 9f 4f sbci r25, 0xFF ; 255 + 3c6: fc 01 movw r30, r24 + 3c8: 24 91 lpm r18, Z+ + 3ca: ca 01 movw r24, r20 + 3cc: 85 57 subi r24, 0x75 ; 117 + 3ce: 9f 4f sbci r25, 0xFF ; 255 + 3d0: fc 01 movw r30, r24 + 3d2: 94 91 lpm r25, Z+ + 3d4: 49 58 subi r20, 0x89 ; 137 + 3d6: 5f 4f sbci r21, 0xFF ; 255 + 3d8: fa 01 movw r30, r20 + 3da: 34 91 lpm r19, Z+ + 3dc: 33 23 and r19, r19 + 3de: 19 f4 brne .+6 ; 0x3e6 <digitalRead+0x2a> + 3e0: 20 e0 ldi r18, 0x00 ; 0 + 3e2: 30 e0 ldi r19, 0x00 ; 0 + 3e4: 35 c0 rjmp .+106 ; 0x450 <digitalRead+0x94> + 3e6: 22 23 and r18, r18 + 3e8: 31 f1 breq .+76 ; 0x436 <digitalRead+0x7a> + 3ea: 23 30 cpi r18, 0x03 ; 3 + 3ec: 21 f4 brne .+8 ; 0x3f6 <digitalRead+0x3a> + 3ee: 80 91 80 00 lds r24, 0x0080 + 3f2: 8f 77 andi r24, 0x7F ; 127 + 3f4: 05 c0 rjmp .+10 ; 0x400 <digitalRead+0x44> + 3f6: 24 30 cpi r18, 0x04 ; 4 + 3f8: 31 f4 brne .+12 ; 0x406 <digitalRead+0x4a> + 3fa: 80 91 80 00 lds r24, 0x0080 + 3fe: 8f 7d andi r24, 0xDF ; 223 + 400: 80 93 80 00 sts 0x0080, r24 + 404: 18 c0 rjmp .+48 ; 0x436 <digitalRead+0x7a> + 406: 21 30 cpi r18, 0x01 ; 1 + 408: 19 f4 brne .+6 ; 0x410 <digitalRead+0x54> + 40a: 84 b5 in r24, 0x24 ; 36 + 40c: 8f 77 andi r24, 0x7F ; 127 + 40e: 04 c0 rjmp .+8 ; 0x418 <digitalRead+0x5c> + 410: 22 30 cpi r18, 0x02 ; 2 + 412: 21 f4 brne .+8 ; 0x41c <digitalRead+0x60> + 414: 84 b5 in r24, 0x24 ; 36 + 416: 8f 7d andi r24, 0xDF ; 223 + 418: 84 bd out 0x24, r24 ; 36 + 41a: 0d c0 rjmp .+26 ; 0x436 <digitalRead+0x7a> + 41c: 26 30 cpi r18, 0x06 ; 6 + 41e: 21 f4 brne .+8 ; 0x428 <digitalRead+0x6c> + 420: 80 91 b0 00 lds r24, 0x00B0 + 424: 8f 77 andi r24, 0x7F ; 127 + 426: 05 c0 rjmp .+10 ; 0x432 <digitalRead+0x76> + 428: 27 30 cpi r18, 0x07 ; 7 + 42a: 29 f4 brne .+10 ; 0x436 <digitalRead+0x7a> + 42c: 80 91 b0 00 lds r24, 0x00B0 + 430: 8f 7d andi r24, 0xDF ; 223 + 432: 80 93 b0 00 sts 0x00B0, r24 + 436: e3 2f mov r30, r19 + 438: f0 e0 ldi r31, 0x00 ; 0 + 43a: ee 58 subi r30, 0x8E ; 142 + 43c: ff 4f sbci r31, 0xFF ; 255 + 43e: e4 91 lpm r30, Z+ + 440: f0 e0 ldi r31, 0x00 ; 0 + 442: 80 81 ld r24, Z + 444: 20 e0 ldi r18, 0x00 ; 0 + 446: 30 e0 ldi r19, 0x00 ; 0 + 448: 89 23 and r24, r25 + 44a: 11 f0 breq .+4 ; 0x450 <digitalRead+0x94> + 44c: 21 e0 ldi r18, 0x01 ; 1 + 44e: 30 e0 ldi r19, 0x00 ; 0 + 450: c9 01 movw r24, r18 + 452: 08 95 ret + +00000454 <_exit>: + 454: f8 94 cli + +00000456 <__stop_program>: + 456: ff cf rjmp .-2 ; 0x456 <__stop_program> diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.map b/blinktest_328p/bin/Debug/blinktest_328p.elf.map new file mode 100644 index 0000000..dfdd957 --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.map @@ -0,0 +1,501 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x458 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x3e obj/Debug/main.o + 0x000000f2 main + .text 0x00000130 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00000130 __vector_16 + 0x000001ea millis + 0x00000206 delay + 0x0000025a delayMicroseconds + 0x00000276 init + .text 0x000002ea 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000002ea pinMode + 0x00000326 digitalWrite + 0x000003bc digitalRead + .text 0x00000454 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00000454 exit + 0x00000454 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000454 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000458 _etext = . + +.data 0x00800100 0x0 load address 0x00000458 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Debug/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Debug/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000458 __data_load_start = LOADADDR (.data) + 0x00000458 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0xb28 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x474 obj/Debug/main.o + 0x480 (size before relaxing) + +.stabstr 0x00000000 0x188e + *(.stabstr) + .stabstr 0x00000000 0x188e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/blinktest_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) diff --git a/blinktest_328p/bin/Debug/electic_streaming.elf.map b/blinktest_328p/bin/Debug/electic_streaming.elf.map new file mode 100644 index 0000000..dfdd957 --- /dev/null +++ b/blinktest_328p/bin/Debug/electic_streaming.elf.map @@ -0,0 +1,501 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x458 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x3e obj/Debug/main.o + 0x000000f2 main + .text 0x00000130 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00000130 __vector_16 + 0x000001ea millis + 0x00000206 delay + 0x0000025a delayMicroseconds + 0x00000276 init + .text 0x000002ea 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000002ea pinMode + 0x00000326 digitalWrite + 0x000003bc digitalRead + .text 0x00000454 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00000454 exit + 0x00000454 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000454 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000458 _etext = . + +.data 0x00800100 0x0 load address 0x00000458 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Debug/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Debug/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000458 __data_load_start = LOADADDR (.data) + 0x00000458 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0xb28 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x474 obj/Debug/main.o + 0x480 (size before relaxing) + +.stabstr 0x00000000 0x188e + *(.stabstr) + .stabstr 0x00000000 0x188e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/blinktest_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf b/blinktest_328p/bin/Release/blinktest_328p.elf Binary files differnew file mode 100755 index 0000000..1c8b6ca --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.eep.hex b/blinktest_328p/bin/Release/blinktest_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.hex b/blinktest_328p/bin/Release/blinktest_328p.elf.hex new file mode 100644 index 0000000..5f4344d --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.hex @@ -0,0 +1,70 @@ +:100000000C945A000C9477000C9477000C947700B1
+:100010000C9477000C9477000C9477000C94770084
+:100020000C9477000C9477000C9477000C94770074
+:100030000C9477000C9477000C9477000C94770064
+:100040000C9494000C9477000C9477000C94770037
+:100050000C9477000C9477000C9477000C94770044
+:100060000C9477000C947700000024272A000025C8
+:10007000282B000023262904040404040404040299
+:100080000202020202030303030303010204081035
+:100090002040800102040810200102040810200002
+:1000A0000000070002010000030406000000000039
+:1000B0000000000011241FBECFEFD8E0DEBFCDBF8F
+:1000C00011E0A0E0B1E0E0E5F4E002C005900D929F
+:1000D000A030B107D9F711E0A0E0B1E001C01D9256
+:1000E000A830B107E1F70E9479000C9426020C9425
+:1000F00000000E9437018DE061E00E9471018DE0F7
+:1001000061E00E948F0168EE73E080E090E00E9461
+:10011000FF008DE060E00E948F0168EE73E080E0F8
+:1001200090E00E94FF00EBCF1F920F920FB60F924C
+:1001300011242F938F939F93AF93BF9380910001CE
+:1001400090910101A0910201B09103018050904C67
+:10015000AF4FBF4F8093000190930101A093020124
+:10016000B093030127C08091000190910101A091FB
+:100170000201B091030180589E43A040B04080939B
+:10018000000190930101A0930201B09303018091BB
+:10019000040190910501A0910601B091070101961B
+:1001A000A11DB11D8093040190930501A093060148
+:1001B000B09307018091000190910101A09102018B
+:1001C000B091030181589E43A040B04060F6BF91BA
+:1001D000AF919F918F912F910F900FBE0F901F9015
+:1001E00018958FB7F8942091040130910501409142
+:1001F0000601509107018FBFB901CA010895EF921E
+:10020000FF920F931F937B018C018FB7F89440915D
+:1002100004015091050160910601709107018FBFA3
+:100220002FB7F8948091040190910501A0910601E7
+:10023000B09107012FBF841B950BA60BB70B8E1532
+:100240009F05A007B10760F31F910F91FF90EF90FA
+:100250000895019759F0FC01EE0FFF1FEE0FFF1FED
+:1002600032978FB7F8943197F1F78FBF089578944C
+:1002700084B5826084BD84B5816084BD85B58260AB
+:1002800085BD85B5816085BDEEE6F0E08081816049
+:100290008083E1E8F0E080818260808380818160FA
+:1002A0008083E0E8F0E0808181608083E1EBF0E032
+:1002B000808184608083E0EBF0E0808181608083D6
+:1002C000EAE7F0E0808184608083808182608083BF
+:1002D0008081816080838081806880831092C100EA
+:1002E0000895282F30E0C90185579F4FFC01949154
+:1002F00029583F4FF9018491882381F0E82FF0E0DD
+:10030000E859FF4FE491F0E0662329F4808190954D
+:100310008923808308958081892B80830895482FC5
+:1003200050E0CA0181569F4FFC012491CA018557B4
+:100330009F4FFC01949149585F4FFA013491332348
+:10034000C1F1222331F1233021F4809180008F7795
+:1003500005C0243031F4809180008F7D809380002F
+:1003600018C0213019F484B58F7704C0223021F4ED
+:1003700084B58F7D84BD0DC0263021F48091B000FE
+:100380008F7705C0273029F48091B0008F7D80934E
+:10039000B000E32FF0E0E359FF4FE491F0E0662373
+:1003A00029F4808190958923808308958081892B09
+:1003B00080830895482F50E0CA0181569F4FFC0169
+:1003C0002491CA0185579F4FFC01949149585F4F72
+:1003D000FA013491332319F420E030E035C02223B0
+:1003E00031F1233021F4809180008F7705C02430D3
+:1003F00031F4809180008F7D8093800018C021307F
+:1004000019F484B58F7704C0223021F484B58F7D30
+:1004100084BD0DC0263021F48091B0008F7705C0D7
+:10042000273029F48091B0008F7D8093B000E32FB6
+:10043000F0E0EE58FF4FE491F0E0808120E030E002
+:10044000892311F021E030E0C9010895F894FFCF2D
+:00000001FF
diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.lss b/blinktest_328p/bin/Release/blinktest_328p.elf.lss new file mode 100644 index 0000000..a9a11be --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.lss @@ -0,0 +1,518 @@ + +bin/Release/blinktest_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000450 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .bss 00000008 00800100 00800100 000004c4 2**0 + ALLOC + 2 .stab 000006b4 00000000 00000000 000004c4 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 00000054 00000000 00000000 00000b78 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 00000040 00000000 00000000 00000bcc 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_pubnames 0000016c 00000000 00000000 00000c0c 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000006f2 00000000 00000000 00000d78 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 000002e1 00000000 00000000 0000146a 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000551 00000000 00000000 0000174b 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000a0 00000000 00000000 00001c9c 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000227 00000000 00000000 00001d3c 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 000001fa 00000000 00000000 00001f63 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__ctors_end> + 4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 40: 0c 94 94 00 jmp 0x128 ; 0x128 <__vector_16> + 44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + +00000068 <port_to_mode_PGM>: + 68: 00 00 24 27 2a ..$'* + +0000006d <port_to_output_PGM>: + 6d: 00 00 25 28 2b ..%(+ + +00000072 <port_to_input_PGM>: + 72: 00 00 23 26 29 ..#&) + +00000077 <digital_pin_to_port_PGM>: + 77: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 87: 03 03 03 03 .... + +0000008b <digital_pin_to_bit_mask_PGM>: + 8b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + 9b: 04 08 10 20 ... + +0000009f <digital_pin_to_timer_PGM>: + 9f: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + af: 00 00 00 00 00 ..... + +000000b4 <__ctors_end>: + b4: 11 24 eor r1, r1 + b6: 1f be out 0x3f, r1 ; 63 + b8: cf ef ldi r28, 0xFF ; 255 + ba: d8 e0 ldi r29, 0x08 ; 8 + bc: de bf out 0x3e, r29 ; 62 + be: cd bf out 0x3d, r28 ; 61 + +000000c0 <__do_copy_data>: + c0: 11 e0 ldi r17, 0x01 ; 1 + c2: a0 e0 ldi r26, 0x00 ; 0 + c4: b1 e0 ldi r27, 0x01 ; 1 + c6: e0 e5 ldi r30, 0x50 ; 80 + c8: f4 e0 ldi r31, 0x04 ; 4 + ca: 02 c0 rjmp .+4 ; 0xd0 <.do_copy_data_start> + +000000cc <.do_copy_data_loop>: + cc: 05 90 lpm r0, Z+ + ce: 0d 92 st X+, r0 + +000000d0 <.do_copy_data_start>: + d0: a0 30 cpi r26, 0x00 ; 0 + d2: b1 07 cpc r27, r17 + d4: d9 f7 brne .-10 ; 0xcc <.do_copy_data_loop> + +000000d6 <__do_clear_bss>: + d6: 11 e0 ldi r17, 0x01 ; 1 + d8: a0 e0 ldi r26, 0x00 ; 0 + da: b1 e0 ldi r27, 0x01 ; 1 + dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start> + +000000de <.do_clear_bss_loop>: + de: 1d 92 st X+, r1 + +000000e0 <.do_clear_bss_start>: + e0: a8 30 cpi r26, 0x08 ; 8 + e2: b1 07 cpc r27, r17 + e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop> + e6: 0e 94 79 00 call 0xf2 ; 0xf2 <main> + ea: 0c 94 26 02 jmp 0x44c ; 0x44c <_exit> + +000000ee <__bad_interrupt>: + ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000f2 <main>: + f2: 0e 94 37 01 call 0x26e ; 0x26e <init> + f6: 8d e0 ldi r24, 0x0D ; 13 + f8: 61 e0 ldi r22, 0x01 ; 1 + fa: 0e 94 71 01 call 0x2e2 ; 0x2e2 <pinMode> + fe: 8d e0 ldi r24, 0x0D ; 13 + 100: 61 e0 ldi r22, 0x01 ; 1 + 102: 0e 94 8f 01 call 0x31e ; 0x31e <digitalWrite> + 106: 68 ee ldi r22, 0xE8 ; 232 + 108: 73 e0 ldi r23, 0x03 ; 3 + 10a: 80 e0 ldi r24, 0x00 ; 0 + 10c: 90 e0 ldi r25, 0x00 ; 0 + 10e: 0e 94 ff 00 call 0x1fe ; 0x1fe <delay> + 112: 8d e0 ldi r24, 0x0D ; 13 + 114: 60 e0 ldi r22, 0x00 ; 0 + 116: 0e 94 8f 01 call 0x31e ; 0x31e <digitalWrite> + 11a: 68 ee ldi r22, 0xE8 ; 232 + 11c: 73 e0 ldi r23, 0x03 ; 3 + 11e: 80 e0 ldi r24, 0x00 ; 0 + 120: 90 e0 ldi r25, 0x00 ; 0 + 122: 0e 94 ff 00 call 0x1fe ; 0x1fe <delay> + 126: eb cf rjmp .-42 ; 0xfe <main+0xc> + +00000128 <__vector_16>: + 128: 1f 92 push r1 + 12a: 0f 92 push r0 + 12c: 0f b6 in r0, 0x3f ; 63 + 12e: 0f 92 push r0 + 130: 11 24 eor r1, r1 + 132: 2f 93 push r18 + 134: 8f 93 push r24 + 136: 9f 93 push r25 + 138: af 93 push r26 + 13a: bf 93 push r27 + 13c: 80 91 00 01 lds r24, 0x0100 + 140: 90 91 01 01 lds r25, 0x0101 + 144: a0 91 02 01 lds r26, 0x0102 + 148: b0 91 03 01 lds r27, 0x0103 + 14c: 80 50 subi r24, 0x00 ; 0 + 14e: 90 4c sbci r25, 0xC0 ; 192 + 150: af 4f sbci r26, 0xFF ; 255 + 152: bf 4f sbci r27, 0xFF ; 255 + 154: 80 93 00 01 sts 0x0100, r24 + 158: 90 93 01 01 sts 0x0101, r25 + 15c: a0 93 02 01 sts 0x0102, r26 + 160: b0 93 03 01 sts 0x0103, r27 + 164: 27 c0 rjmp .+78 ; 0x1b4 <__vector_16+0x8c> + 166: 80 91 00 01 lds r24, 0x0100 + 16a: 90 91 01 01 lds r25, 0x0101 + 16e: a0 91 02 01 lds r26, 0x0102 + 172: b0 91 03 01 lds r27, 0x0103 + 176: 80 58 subi r24, 0x80 ; 128 + 178: 9e 43 sbci r25, 0x3E ; 62 + 17a: a0 40 sbci r26, 0x00 ; 0 + 17c: b0 40 sbci r27, 0x00 ; 0 + 17e: 80 93 00 01 sts 0x0100, r24 + 182: 90 93 01 01 sts 0x0101, r25 + 186: a0 93 02 01 sts 0x0102, r26 + 18a: b0 93 03 01 sts 0x0103, r27 + 18e: 80 91 04 01 lds r24, 0x0104 + 192: 90 91 05 01 lds r25, 0x0105 + 196: a0 91 06 01 lds r26, 0x0106 + 19a: b0 91 07 01 lds r27, 0x0107 + 19e: 01 96 adiw r24, 0x01 ; 1 + 1a0: a1 1d adc r26, r1 + 1a2: b1 1d adc r27, r1 + 1a4: 80 93 04 01 sts 0x0104, r24 + 1a8: 90 93 05 01 sts 0x0105, r25 + 1ac: a0 93 06 01 sts 0x0106, r26 + 1b0: b0 93 07 01 sts 0x0107, r27 + 1b4: 80 91 00 01 lds r24, 0x0100 + 1b8: 90 91 01 01 lds r25, 0x0101 + 1bc: a0 91 02 01 lds r26, 0x0102 + 1c0: b0 91 03 01 lds r27, 0x0103 + 1c4: 81 58 subi r24, 0x81 ; 129 + 1c6: 9e 43 sbci r25, 0x3E ; 62 + 1c8: a0 40 sbci r26, 0x00 ; 0 + 1ca: b0 40 sbci r27, 0x00 ; 0 + 1cc: 60 f6 brcc .-104 ; 0x166 <__vector_16+0x3e> + 1ce: bf 91 pop r27 + 1d0: af 91 pop r26 + 1d2: 9f 91 pop r25 + 1d4: 8f 91 pop r24 + 1d6: 2f 91 pop r18 + 1d8: 0f 90 pop r0 + 1da: 0f be out 0x3f, r0 ; 63 + 1dc: 0f 90 pop r0 + 1de: 1f 90 pop r1 + 1e0: 18 95 reti + +000001e2 <millis>: + 1e2: 8f b7 in r24, 0x3f ; 63 + 1e4: f8 94 cli + 1e6: 20 91 04 01 lds r18, 0x0104 + 1ea: 30 91 05 01 lds r19, 0x0105 + 1ee: 40 91 06 01 lds r20, 0x0106 + 1f2: 50 91 07 01 lds r21, 0x0107 + 1f6: 8f bf out 0x3f, r24 ; 63 + 1f8: b9 01 movw r22, r18 + 1fa: ca 01 movw r24, r20 + 1fc: 08 95 ret + +000001fe <delay>: + 1fe: ef 92 push r14 + 200: ff 92 push r15 + 202: 0f 93 push r16 + 204: 1f 93 push r17 + 206: 7b 01 movw r14, r22 + 208: 8c 01 movw r16, r24 + 20a: 8f b7 in r24, 0x3f ; 63 + 20c: f8 94 cli + 20e: 40 91 04 01 lds r20, 0x0104 + 212: 50 91 05 01 lds r21, 0x0105 + 216: 60 91 06 01 lds r22, 0x0106 + 21a: 70 91 07 01 lds r23, 0x0107 + 21e: 8f bf out 0x3f, r24 ; 63 + 220: 2f b7 in r18, 0x3f ; 63 + 222: f8 94 cli + 224: 80 91 04 01 lds r24, 0x0104 + 228: 90 91 05 01 lds r25, 0x0105 + 22c: a0 91 06 01 lds r26, 0x0106 + 230: b0 91 07 01 lds r27, 0x0107 + 234: 2f bf out 0x3f, r18 ; 63 + 236: 84 1b sub r24, r20 + 238: 95 0b sbc r25, r21 + 23a: a6 0b sbc r26, r22 + 23c: b7 0b sbc r27, r23 + 23e: 8e 15 cp r24, r14 + 240: 9f 05 cpc r25, r15 + 242: a0 07 cpc r26, r16 + 244: b1 07 cpc r27, r17 + 246: 60 f3 brcs .-40 ; 0x220 <delay+0x22> + 248: 1f 91 pop r17 + 24a: 0f 91 pop r16 + 24c: ff 90 pop r15 + 24e: ef 90 pop r14 + 250: 08 95 ret + +00000252 <delayMicroseconds>: + 252: 01 97 sbiw r24, 0x01 ; 1 + 254: 59 f0 breq .+22 ; 0x26c <delayMicroseconds+0x1a> + 256: fc 01 movw r30, r24 + 258: ee 0f add r30, r30 + 25a: ff 1f adc r31, r31 + 25c: ee 0f add r30, r30 + 25e: ff 1f adc r31, r31 + 260: 32 97 sbiw r30, 0x02 ; 2 + 262: 8f b7 in r24, 0x3f ; 63 + 264: f8 94 cli + 266: 31 97 sbiw r30, 0x01 ; 1 + 268: f1 f7 brne .-4 ; 0x266 <delayMicroseconds+0x14> + 26a: 8f bf out 0x3f, r24 ; 63 + 26c: 08 95 ret + +0000026e <init>: + 26e: 78 94 sei + 270: 84 b5 in r24, 0x24 ; 36 + 272: 82 60 ori r24, 0x02 ; 2 + 274: 84 bd out 0x24, r24 ; 36 + 276: 84 b5 in r24, 0x24 ; 36 + 278: 81 60 ori r24, 0x01 ; 1 + 27a: 84 bd out 0x24, r24 ; 36 + 27c: 85 b5 in r24, 0x25 ; 37 + 27e: 82 60 ori r24, 0x02 ; 2 + 280: 85 bd out 0x25, r24 ; 37 + 282: 85 b5 in r24, 0x25 ; 37 + 284: 81 60 ori r24, 0x01 ; 1 + 286: 85 bd out 0x25, r24 ; 37 + 288: ee e6 ldi r30, 0x6E ; 110 + 28a: f0 e0 ldi r31, 0x00 ; 0 + 28c: 80 81 ld r24, Z + 28e: 81 60 ori r24, 0x01 ; 1 + 290: 80 83 st Z, r24 + 292: e1 e8 ldi r30, 0x81 ; 129 + 294: f0 e0 ldi r31, 0x00 ; 0 + 296: 80 81 ld r24, Z + 298: 82 60 ori r24, 0x02 ; 2 + 29a: 80 83 st Z, r24 + 29c: 80 81 ld r24, Z + 29e: 81 60 ori r24, 0x01 ; 1 + 2a0: 80 83 st Z, r24 + 2a2: e0 e8 ldi r30, 0x80 ; 128 + 2a4: f0 e0 ldi r31, 0x00 ; 0 + 2a6: 80 81 ld r24, Z + 2a8: 81 60 ori r24, 0x01 ; 1 + 2aa: 80 83 st Z, r24 + 2ac: e1 eb ldi r30, 0xB1 ; 177 + 2ae: f0 e0 ldi r31, 0x00 ; 0 + 2b0: 80 81 ld r24, Z + 2b2: 84 60 ori r24, 0x04 ; 4 + 2b4: 80 83 st Z, r24 + 2b6: e0 eb ldi r30, 0xB0 ; 176 + 2b8: f0 e0 ldi r31, 0x00 ; 0 + 2ba: 80 81 ld r24, Z + 2bc: 81 60 ori r24, 0x01 ; 1 + 2be: 80 83 st Z, r24 + 2c0: ea e7 ldi r30, 0x7A ; 122 + 2c2: f0 e0 ldi r31, 0x00 ; 0 + 2c4: 80 81 ld r24, Z + 2c6: 84 60 ori r24, 0x04 ; 4 + 2c8: 80 83 st Z, r24 + 2ca: 80 81 ld r24, Z + 2cc: 82 60 ori r24, 0x02 ; 2 + 2ce: 80 83 st Z, r24 + 2d0: 80 81 ld r24, Z + 2d2: 81 60 ori r24, 0x01 ; 1 + 2d4: 80 83 st Z, r24 + 2d6: 80 81 ld r24, Z + 2d8: 80 68 ori r24, 0x80 ; 128 + 2da: 80 83 st Z, r24 + 2dc: 10 92 c1 00 sts 0x00C1, r1 + 2e0: 08 95 ret + +000002e2 <pinMode>: + 2e2: 28 2f mov r18, r24 + 2e4: 30 e0 ldi r19, 0x00 ; 0 + 2e6: c9 01 movw r24, r18 + 2e8: 85 57 subi r24, 0x75 ; 117 + 2ea: 9f 4f sbci r25, 0xFF ; 255 + 2ec: fc 01 movw r30, r24 + 2ee: 94 91 lpm r25, Z+ + 2f0: 29 58 subi r18, 0x89 ; 137 + 2f2: 3f 4f sbci r19, 0xFF ; 255 + 2f4: f9 01 movw r30, r18 + 2f6: 84 91 lpm r24, Z+ + 2f8: 88 23 and r24, r24 + 2fa: 81 f0 breq .+32 ; 0x31c <pinMode+0x3a> + 2fc: e8 2f mov r30, r24 + 2fe: f0 e0 ldi r31, 0x00 ; 0 + 300: e8 59 subi r30, 0x98 ; 152 + 302: ff 4f sbci r31, 0xFF ; 255 + 304: e4 91 lpm r30, Z+ + 306: f0 e0 ldi r31, 0x00 ; 0 + 308: 66 23 and r22, r22 + 30a: 29 f4 brne .+10 ; 0x316 <pinMode+0x34> + 30c: 80 81 ld r24, Z + 30e: 90 95 com r25 + 310: 89 23 and r24, r25 + 312: 80 83 st Z, r24 + 314: 08 95 ret + 316: 80 81 ld r24, Z + 318: 89 2b or r24, r25 + 31a: 80 83 st Z, r24 + 31c: 08 95 ret + +0000031e <digitalWrite>: + 31e: 48 2f mov r20, r24 + 320: 50 e0 ldi r21, 0x00 ; 0 + 322: ca 01 movw r24, r20 + 324: 81 56 subi r24, 0x61 ; 97 + 326: 9f 4f sbci r25, 0xFF ; 255 + 328: fc 01 movw r30, r24 + 32a: 24 91 lpm r18, Z+ + 32c: ca 01 movw r24, r20 + 32e: 85 57 subi r24, 0x75 ; 117 + 330: 9f 4f sbci r25, 0xFF ; 255 + 332: fc 01 movw r30, r24 + 334: 94 91 lpm r25, Z+ + 336: 49 58 subi r20, 0x89 ; 137 + 338: 5f 4f sbci r21, 0xFF ; 255 + 33a: fa 01 movw r30, r20 + 33c: 34 91 lpm r19, Z+ + 33e: 33 23 and r19, r19 + 340: c1 f1 breq .+112 ; 0x3b2 <digitalWrite+0x94> + 342: 22 23 and r18, r18 + 344: 31 f1 breq .+76 ; 0x392 <digitalWrite+0x74> + 346: 23 30 cpi r18, 0x03 ; 3 + 348: 21 f4 brne .+8 ; 0x352 <digitalWrite+0x34> + 34a: 80 91 80 00 lds r24, 0x0080 + 34e: 8f 77 andi r24, 0x7F ; 127 + 350: 05 c0 rjmp .+10 ; 0x35c <digitalWrite+0x3e> + 352: 24 30 cpi r18, 0x04 ; 4 + 354: 31 f4 brne .+12 ; 0x362 <digitalWrite+0x44> + 356: 80 91 80 00 lds r24, 0x0080 + 35a: 8f 7d andi r24, 0xDF ; 223 + 35c: 80 93 80 00 sts 0x0080, r24 + 360: 18 c0 rjmp .+48 ; 0x392 <digitalWrite+0x74> + 362: 21 30 cpi r18, 0x01 ; 1 + 364: 19 f4 brne .+6 ; 0x36c <digitalWrite+0x4e> + 366: 84 b5 in r24, 0x24 ; 36 + 368: 8f 77 andi r24, 0x7F ; 127 + 36a: 04 c0 rjmp .+8 ; 0x374 <digitalWrite+0x56> + 36c: 22 30 cpi r18, 0x02 ; 2 + 36e: 21 f4 brne .+8 ; 0x378 <digitalWrite+0x5a> + 370: 84 b5 in r24, 0x24 ; 36 + 372: 8f 7d andi r24, 0xDF ; 223 + 374: 84 bd out 0x24, r24 ; 36 + 376: 0d c0 rjmp .+26 ; 0x392 <digitalWrite+0x74> + 378: 26 30 cpi r18, 0x06 ; 6 + 37a: 21 f4 brne .+8 ; 0x384 <digitalWrite+0x66> + 37c: 80 91 b0 00 lds r24, 0x00B0 + 380: 8f 77 andi r24, 0x7F ; 127 + 382: 05 c0 rjmp .+10 ; 0x38e <digitalWrite+0x70> + 384: 27 30 cpi r18, 0x07 ; 7 + 386: 29 f4 brne .+10 ; 0x392 <digitalWrite+0x74> + 388: 80 91 b0 00 lds r24, 0x00B0 + 38c: 8f 7d andi r24, 0xDF ; 223 + 38e: 80 93 b0 00 sts 0x00B0, r24 + 392: e3 2f mov r30, r19 + 394: f0 e0 ldi r31, 0x00 ; 0 + 396: e3 59 subi r30, 0x93 ; 147 + 398: ff 4f sbci r31, 0xFF ; 255 + 39a: e4 91 lpm r30, Z+ + 39c: f0 e0 ldi r31, 0x00 ; 0 + 39e: 66 23 and r22, r22 + 3a0: 29 f4 brne .+10 ; 0x3ac <digitalWrite+0x8e> + 3a2: 80 81 ld r24, Z + 3a4: 90 95 com r25 + 3a6: 89 23 and r24, r25 + 3a8: 80 83 st Z, r24 + 3aa: 08 95 ret + 3ac: 80 81 ld r24, Z + 3ae: 89 2b or r24, r25 + 3b0: 80 83 st Z, r24 + 3b2: 08 95 ret + +000003b4 <digitalRead>: + 3b4: 48 2f mov r20, r24 + 3b6: 50 e0 ldi r21, 0x00 ; 0 + 3b8: ca 01 movw r24, r20 + 3ba: 81 56 subi r24, 0x61 ; 97 + 3bc: 9f 4f sbci r25, 0xFF ; 255 + 3be: fc 01 movw r30, r24 + 3c0: 24 91 lpm r18, Z+ + 3c2: ca 01 movw r24, r20 + 3c4: 85 57 subi r24, 0x75 ; 117 + 3c6: 9f 4f sbci r25, 0xFF ; 255 + 3c8: fc 01 movw r30, r24 + 3ca: 94 91 lpm r25, Z+ + 3cc: 49 58 subi r20, 0x89 ; 137 + 3ce: 5f 4f sbci r21, 0xFF ; 255 + 3d0: fa 01 movw r30, r20 + 3d2: 34 91 lpm r19, Z+ + 3d4: 33 23 and r19, r19 + 3d6: 19 f4 brne .+6 ; 0x3de <digitalRead+0x2a> + 3d8: 20 e0 ldi r18, 0x00 ; 0 + 3da: 30 e0 ldi r19, 0x00 ; 0 + 3dc: 35 c0 rjmp .+106 ; 0x448 <digitalRead+0x94> + 3de: 22 23 and r18, r18 + 3e0: 31 f1 breq .+76 ; 0x42e <digitalRead+0x7a> + 3e2: 23 30 cpi r18, 0x03 ; 3 + 3e4: 21 f4 brne .+8 ; 0x3ee <digitalRead+0x3a> + 3e6: 80 91 80 00 lds r24, 0x0080 + 3ea: 8f 77 andi r24, 0x7F ; 127 + 3ec: 05 c0 rjmp .+10 ; 0x3f8 <digitalRead+0x44> + 3ee: 24 30 cpi r18, 0x04 ; 4 + 3f0: 31 f4 brne .+12 ; 0x3fe <digitalRead+0x4a> + 3f2: 80 91 80 00 lds r24, 0x0080 + 3f6: 8f 7d andi r24, 0xDF ; 223 + 3f8: 80 93 80 00 sts 0x0080, r24 + 3fc: 18 c0 rjmp .+48 ; 0x42e <digitalRead+0x7a> + 3fe: 21 30 cpi r18, 0x01 ; 1 + 400: 19 f4 brne .+6 ; 0x408 <digitalRead+0x54> + 402: 84 b5 in r24, 0x24 ; 36 + 404: 8f 77 andi r24, 0x7F ; 127 + 406: 04 c0 rjmp .+8 ; 0x410 <digitalRead+0x5c> + 408: 22 30 cpi r18, 0x02 ; 2 + 40a: 21 f4 brne .+8 ; 0x414 <digitalRead+0x60> + 40c: 84 b5 in r24, 0x24 ; 36 + 40e: 8f 7d andi r24, 0xDF ; 223 + 410: 84 bd out 0x24, r24 ; 36 + 412: 0d c0 rjmp .+26 ; 0x42e <digitalRead+0x7a> + 414: 26 30 cpi r18, 0x06 ; 6 + 416: 21 f4 brne .+8 ; 0x420 <digitalRead+0x6c> + 418: 80 91 b0 00 lds r24, 0x00B0 + 41c: 8f 77 andi r24, 0x7F ; 127 + 41e: 05 c0 rjmp .+10 ; 0x42a <digitalRead+0x76> + 420: 27 30 cpi r18, 0x07 ; 7 + 422: 29 f4 brne .+10 ; 0x42e <digitalRead+0x7a> + 424: 80 91 b0 00 lds r24, 0x00B0 + 428: 8f 7d andi r24, 0xDF ; 223 + 42a: 80 93 b0 00 sts 0x00B0, r24 + 42e: e3 2f mov r30, r19 + 430: f0 e0 ldi r31, 0x00 ; 0 + 432: ee 58 subi r30, 0x8E ; 142 + 434: ff 4f sbci r31, 0xFF ; 255 + 436: e4 91 lpm r30, Z+ + 438: f0 e0 ldi r31, 0x00 ; 0 + 43a: 80 81 ld r24, Z + 43c: 20 e0 ldi r18, 0x00 ; 0 + 43e: 30 e0 ldi r19, 0x00 ; 0 + 440: 89 23 and r24, r25 + 442: 11 f0 breq .+4 ; 0x448 <digitalRead+0x94> + 444: 21 e0 ldi r18, 0x01 ; 1 + 446: 30 e0 ldi r19, 0x00 ; 0 + 448: c9 01 movw r24, r18 + 44a: 08 95 ret + +0000044c <_exit>: + 44c: f8 94 cli + +0000044e <__stop_program>: + 44e: ff cf rjmp .-2 ; 0x44e <__stop_program> diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.map b/blinktest_328p/bin/Release/blinktest_328p.elf.map new file mode 100644 index 0000000..2ddc9aa --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.map @@ -0,0 +1,499 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Release/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Release/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x450 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x36 obj/Release/main.o + 0x000000f2 main + .text 0x00000128 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00000128 __vector_16 + 0x000001e2 millis + 0x000001fe delay + 0x00000252 delayMicroseconds + 0x0000026e init + .text 0x000002e2 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000002e2 pinMode + 0x0000031e digitalWrite + 0x000003b4 digitalRead + .text 0x0000044c 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x0000044c . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x0000044c . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x0000044c exit + 0x0000044c _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000044c 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000450 _etext = . + +.data 0x00800100 0x0 load address 0x00000450 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Release/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Release/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000450 __data_load_start = LOADADDR (.data) + 0x00000450 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x6b4 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stabstr 0x00000000 0x54 + *(.stabstr) + .stabstr 0x00000000 0x54 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Release/blinktest_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Release/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Release/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Release/main.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Release/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) diff --git a/blinktest_328p/blinktest_328p.cbp b/blinktest_328p/blinktest_328p.cbp new file mode 100644 index 0000000..3c64663 --- /dev/null +++ b/blinktest_328p/blinktest_328p.cbp @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="blinktest_328p" /> + <Option pch_mode="2" /> + <Option compiler="avrgcc" /> + <Build> + <Target title="Debug"> + <Option output="bin/Debug/blinktest_328p.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Debug/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-g" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin/Release/blinktest_328p.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Release/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-Os" /> + </Compiler> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-mmcu=atmega328p -DF_CPU=8000000UL" /> + <Add directory="../arduinoSrc0022" /> + <Add directory="../arduino libs/NewSoftSerial" /> + </Compiler> + <Linker> + <Add option="-mmcu=atmega328p" /> + <Add option="-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref" /> + <Add library="../arduino_libs/core0022_328p.a" /> + </Linker> + <ExtraCommands> + <Add after="avr-size $(TARGET_OUTPUT_FILE)" /> + <Add after="avr-objcopy -O ihex -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).hex" /> + <Add after="avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.hex" /> + <Add after="avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_FILE).lss" /> + <Add after="./burn" /> + </ExtraCommands> + <Unit filename="../ArduinoLib328p/HardwareSerial.h" /> + <Unit filename="../ArduinoLib328p/Print.h" /> + <Unit filename="../ArduinoLib328p/Stream.h" /> + <Unit filename="../ArduinoLib328p/WCharacter.h" /> + <Unit filename="../ArduinoLib328p/WConstants.h" /> + <Unit filename="../ArduinoLib328p/WProgram.h" /> + <Unit filename="../ArduinoLib328p/WString.h" /> + <Unit filename="../ArduinoLib328p/binary.h" /> + <Unit filename="../ArduinoLib328p/pins_arduino.h" /> + <Unit filename="../ArduinoLib328p/wiring.h" /> + <Unit filename="../ArduinoLib328p/wiring_private.h" /> + <Unit filename="burn" /> + <Unit filename="main.cpp" /> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + <lib_finder disable_auto="1" /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/blinktest_328p/blinktest_328p.depend b/blinktest_328p/blinktest_328p.depend new file mode 100644 index 0000000..9f1e890 --- /dev/null +++ b/blinktest_328p/blinktest_328p.depend @@ -0,0 +1,43 @@ +# depslib dependency file v1.0 +1320937395 source:/home/tim/workspace/electic_AVR/blinktest_328p/main.cpp + <WProgram.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WProgram.h + <stdlib.h> + <string.h> + <math.h> + <avr/interrupt.h> + "wiring.h" + "WCharacter.h" + "WString.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.h + <avr/io.h> + <stdlib.h> + "binary.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/binary.h + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WCharacter.h + <ctype.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WString.h + <stdlib.h> + <string.h> + <ctype.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.h + <inttypes.h> + "Stream.h" + "usb_api.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Stream.h + <inttypes.h> + "Print.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Print.h + <inttypes.h> + <stdio.h> + "WString.h" + diff --git a/blinktest_328p/blinktest_328p.layout b/blinktest_328p/blinktest_328p.layout new file mode 100644 index 0000000..9010247 --- /dev/null +++ b/blinktest_328p/blinktest_328p.layout @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <ActiveTarget name="Release" /> + <File name="burn" open="0" top="0" tabpos="1"> + <Cursor position="48" topLine="0" /> + </File> + <File name="main.cpp" open="1" top="0" tabpos="1"> + <Cursor position="104" topLine="0" /> + </File> +</CodeBlocks_layout_file> diff --git a/blinktest_328p/burn b/blinktest_328p/burn new file mode 100755 index 0000000..8fe9ec1 --- /dev/null +++ b/blinktest_328p/burn @@ -0,0 +1 @@ +avrdude -p m328p -c avrispmkII -P usb -b 1000000 -F -u -U flash:w:bin/Release/blinktest_328p.elf.hex diff --git a/blinktest_328p/main.cpp b/blinktest_328p/main.cpp new file mode 100644 index 0000000..f96336c --- /dev/null +++ b/blinktest_328p/main.cpp @@ -0,0 +1,28 @@ +extern "C" void __cxa_pure_virtual(void); //for C++ defines + +/* +Blink test + +F_CPU setting is not working + +*/ + + +#include <WProgram.h> //import main Arduino header file + + +int main(){ + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + pinMode(13, OUTPUT); + + + + while(1) { + digitalWrite(13, HIGH); // set the LED on + delay(1000); // wait for a second + digitalWrite(13, LOW); // set the LED off + delay(1000); // wait for a second + } +} + diff --git a/blinktest_328p/obj/Release/main.o b/blinktest_328p/obj/Release/main.o Binary files differnew file mode 100644 index 0000000..8370812 --- /dev/null +++ b/blinktest_328p/obj/Release/main.o diff --git a/electicAndroid/.classpath b/electicAndroid/.classpath new file mode 100644 index 0000000..6efcbb7 --- /dev/null +++ b/electicAndroid/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="gen"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/electicAndroid/.project b/electicAndroid/.project new file mode 100644 index 0000000..f9aa56f --- /dev/null +++ b/electicAndroid/.project @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>BluetoothChat</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.android.ide.eclipse.adt.ApkBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>com.android.ide.eclipse.adt.AndroidNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/electicAndroid/AndroidManifest.xml b/electicAndroid/AndroidManifest.xml new file mode 100644 index 0000000..caea1eb --- /dev/null +++ b/electicAndroid/AndroidManifest.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + android:versionCode="1" + android:versionName="1.0" package="com.futureproof.adaptics.electic"> + <uses-sdk minSdkVersion="6" /> + <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> + <uses-permission android:name="android.permission.BLUETOOTH" /> + + <application android:label="@string/app_name" + android:icon="@drawable/app_icon" android:debuggable="true"> + <activity android:name=".Electic" + android:label="@string/app_name" + android:configChanges="orientation|keyboardHidden"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + <activity android:name="com.futureproof.adaptics.electic.DeviceListActivity" + android:label="@string/select_device" + android:theme="@android:style/Theme.Dialog" + android:configChanges="orientation|keyboardHidden" /> + </application> +</manifest> diff --git a/electicAndroid/bin/classes.dex b/electicAndroid/bin/classes.dex Binary files differnew file mode 100644 index 0000000..1016160 --- /dev/null +++ b/electicAndroid/bin/classes.dex diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectThread.class b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectThread.class Binary files differnew file mode 100644 index 0000000..0bacc78 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectThread.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectedThread.class b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectedThread.class Binary files differnew file mode 100644 index 0000000..4fc5fa3 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectedThread.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth.class b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth.class Binary files differnew file mode 100644 index 0000000..7e96169 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$1.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$1.class Binary files differnew file mode 100644 index 0000000..0f77230 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$1.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$2.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$2.class Binary files differnew file mode 100644 index 0000000..8893047 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$2.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$3.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$3.class Binary files differnew file mode 100644 index 0000000..ddbb75c --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$3.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity.class Binary files differnew file mode 100644 index 0000000..502440a --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$1.class b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$1.class Binary files differnew file mode 100644 index 0000000..8c80152 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$1.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$2.class b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$2.class Binary files differnew file mode 100644 index 0000000..79a3bcd --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$2.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/Electic.class b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic.class Binary files differnew file mode 100644 index 0000000..1b6fba2 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$attr.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$attr.class Binary files differnew file mode 100644 index 0000000..eebe2bc --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/R$attr.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$drawable.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$drawable.class Binary files differnew file mode 100644 index 0000000..043f5b2 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/R$drawable.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$id.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$id.class Binary files differnew file mode 100644 index 0000000..a72686e --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/R$id.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$layout.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$layout.class Binary files differnew file mode 100644 index 0000000..65e3e00 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/R$layout.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$menu.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$menu.class Binary files differnew file mode 100644 index 0000000..f918045 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/R$menu.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$string.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$string.class Binary files differnew file mode 100644 index 0000000..1c3724b --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/R$string.class diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R.class Binary files differnew file mode 100644 index 0000000..1d95ec5 --- /dev/null +++ b/electicAndroid/bin/com/futureproof/adaptics/electic/R.class diff --git a/electicAndroid/bin/electicAndroid.apk b/electicAndroid/bin/electicAndroid.apk Binary files differnew file mode 100644 index 0000000..4b58706 --- /dev/null +++ b/electicAndroid/bin/electicAndroid.apk diff --git a/electicAndroid/bin/resources.ap_ b/electicAndroid/bin/resources.ap_ Binary files differnew file mode 100644 index 0000000..550355c --- /dev/null +++ b/electicAndroid/bin/resources.ap_ diff --git a/electicAndroid/default.properties b/electicAndroid/default.properties new file mode 100644 index 0000000..66db0d1 --- /dev/null +++ b/electicAndroid/default.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "build.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-10 diff --git a/electicAndroid/gen/com/futureproof/adaptics/electic/R.java b/electicAndroid/gen/com/futureproof/adaptics/electic/R.java new file mode 100644 index 0000000..2c0a7e3 --- /dev/null +++ b/electicAndroid/gen/com/futureproof/adaptics/electic/R.java @@ -0,0 +1,97 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package com.futureproof.adaptics.electic; + +public final class R { + public static final class attr { + } + public static final class drawable { + public static final int app_icon=0x7f020000; + } + public static final class id { + public static final int alarmBox=0x7f060014; + public static final int button_scan=0x7f060006; + public static final int discoverable=0x7f060022; + public static final int fadcText=0x7f06000b; + public static final int fadcText1=0x7f06000c; + public static final int insecure_connect_scan=0x7f060021; + public static final int new_devices=0x7f060005; + public static final int paired_devices=0x7f060003; + public static final int pmaxBox=0x7f060010; + public static final int pminBox=0x7f060012; + public static final int rb_01=0x7f06001e; + public static final int rb_05=0x7f06001d; + public static final int rb_2=0x7f06001c; + public static final int sadcText=0x7f060008; + public static final int sadcText1=0x7f060009; + public static final int samplespeed_group=0x7f06001b; + public static final int secure_connect_scan=0x7f060020; + public static final int tableLayout1=0x7f06000e; + public static final int tableLayout2=0x7f060016; + public static final int tableRow1=0x7f06000f; + public static final int tableRow2=0x7f060011; + public static final int tableRow3=0x7f060013; + public static final int tableRow4=0x7f060015; + public static final int tableRow5=0x7f060017; + public static final int tableRow6=0x7f060019; + public static final int tableRow7=0x7f06001a; + public static final int tableRow8=0x7f06001f; + public static final int textView1=0x7f060018; + public static final int textView2=0x7f060007; + public static final int textView3=0x7f06000a; + public static final int textView5=0x7f06000d; + public static final int title_left_text=0x7f060000; + public static final int title_new_devices=0x7f060004; + public static final int title_paired_devices=0x7f060002; + public static final int title_right_text=0x7f060001; + } + public static final class layout { + public static final int custom_title=0x7f030000; + public static final int device_list=0x7f030001; + public static final int device_name=0x7f030002; + public static final int main=0x7f030003; + } + public static final class menu { + public static final int option_menu=0x7f050000; + } + public static final class string { + public static final int app_name=0x7f040000; + public static final int bt_not_enabled_leaving=0x7f040003; + public static final int button_scan=0x7f04000d; + public static final int discoverable=0x7f040010; + public static final int insecure_connect=0x7f04000f; + public static final int labelAlarm=0x7f040016; + public static final int label_01=0x7f04001a; + public static final int label_05=0x7f040019; + public static final int label_2=0x7f040017; + public static final int label_PMAX=0x7f040014; + public static final int label_PMIN=0x7f040015; + public static final int label_flags=0x7f040013; + public static final int label_interval=0x7f040018; + public static final int none_found=0x7f04000a; + public static final int none_paired=0x7f040009; + public static final int not_connected=0x7f040002; + /** DeviceListActivity + */ + public static final int scanning=0x7f040007; + /** Options Menu + */ + public static final int secure_connect=0x7f04000e; + public static final int select_device=0x7f040008; + /** BluetoothChat + */ + public static final int send=0x7f040001; + public static final int title_connected_to=0x7f040005; + public static final int title_connecting=0x7f040004; + public static final int title_fadc=0x7f040012; + public static final int title_not_connected=0x7f040006; + public static final int title_other_devices=0x7f04000c; + public static final int title_paired_devices=0x7f04000b; + public static final int title_sadc=0x7f040011; + } +} diff --git a/electicAndroid/res/drawable-hdpi/app_icon.png b/electicAndroid/res/drawable-hdpi/app_icon.png Binary files differnew file mode 100644 index 0000000..8836ff6 --- /dev/null +++ b/electicAndroid/res/drawable-hdpi/app_icon.png diff --git a/electicAndroid/res/drawable/app_icon.png b/electicAndroid/res/drawable/app_icon.png Binary files differnew file mode 100644 index 0000000..d3e09a5 --- /dev/null +++ b/electicAndroid/res/drawable/app_icon.png diff --git a/electicAndroid/res/layout/custom_title.xml b/electicAndroid/res/layout/custom_title.xml new file mode 100644 index 0000000..57eb6b4 --- /dev/null +++ b/electicAndroid/res/layout/custom_title.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center_vertical" + > + <TextView android:id="@+id/title_left_text" + android:layout_alignParentLeft="true" + android:ellipsize="end" + android:singleLine="true" + style="?android:attr/windowTitleStyle" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_weight="1" + /> + <TextView android:id="@+id/title_right_text" + android:layout_alignParentRight="true" + android:ellipsize="end" + android:singleLine="true" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:textColor="#fff" + android:layout_weight="1" + /> +</RelativeLayout>
\ No newline at end of file diff --git a/electicAndroid/res/layout/device_list.xml b/electicAndroid/res/layout/device_list.xml new file mode 100644 index 0000000..395695f --- /dev/null +++ b/electicAndroid/res/layout/device_list.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" + > + <TextView android:id="@+id/title_paired_devices" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/title_paired_devices" + android:visibility="gone" + android:background="#666" + android:textColor="#fff" + android:paddingLeft="5dp" + /> + <ListView android:id="@+id/paired_devices" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:stackFromBottom="true" + android:layout_weight="1" + /> + <TextView android:id="@+id/title_new_devices" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/title_other_devices" + android:visibility="gone" + android:background="#666" + android:textColor="#fff" + android:paddingLeft="5dp" + /> + <ListView android:id="@+id/new_devices" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:stackFromBottom="true" + android:layout_weight="2" + /> + <Button android:id="@+id/button_scan" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/button_scan" + /> +</LinearLayout>
\ No newline at end of file diff --git a/electicAndroid/res/layout/device_name.xml b/electicAndroid/res/layout/device_name.xml new file mode 100644 index 0000000..8fa358c --- /dev/null +++ b/electicAndroid/res/layout/device_name.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="18sp" + android:padding="5dp" +/>
\ No newline at end of file diff --git a/electicAndroid/res/layout/main.xml b/electicAndroid/res/layout/main.xml new file mode 100644 index 0000000..bd4559a --- /dev/null +++ b/electicAndroid/res/layout/main.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:weightSum="1"> + <LinearLayout + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <TextView android:layout_height="wrap_content" android:text="@string/title_sadc" android:layout_width="wrap_content" android:id="@+id/textView2"></TextView> + </LinearLayout> + <TextView android:layout_height="wrap_content" android:text="TextView" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/sadcText" android:layout_width="146dp"></TextView> + <TextView android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:text="TextView" android:id="@+id/sadcText1"></TextView> + <TextView android:layout_height="wrap_content" android:text="@string/title_fadc" android:layout_width="wrap_content" android:id="@+id/textView3"></TextView> + <TextView android:layout_height="wrap_content" android:text="TextView" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/fadcText" android:layout_width="139dp"></TextView> + <TextView android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:text="TextView" android:id="@+id/fadcText1"></TextView> + <TextView android:layout_height="wrap_content" android:text="@string/label_flags" android:layout_width="wrap_content" android:id="@+id/textView5"></TextView> + <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tableLayout1" android:layout_weight="0.27"> + <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content"> + <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/label_PMAX" android:id="@+id/pmaxBox"></CheckBox> + </TableRow> + <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content"> + <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/label_PMIN" android:id="@+id/pminBox"></CheckBox> + </TableRow> + <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content"> + <CheckBox android:text="@string/labelAlarm" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/alarmBox"></CheckBox> + </TableRow> + <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content"></TableRow> + </TableLayout> + <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tableLayout2" android:layout_weight="0.38"> + <TableRow android:id="@+id/tableRow5" android:layout_width="wrap_content" android:layout_height="wrap_content"> + <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:id="@+id/textView1" android:text="@string/label_interval"></TextView> + </TableRow> + <TableRow android:id="@+id/tableRow6" android:layout_width="wrap_content" android:layout_height="wrap_content"> + </TableRow> + <TableRow android:id="@+id/tableRow7" android:layout_width="wrap_content" android:layout_height="wrap_content"> + <RadioGroup android:layout_height="wrap_content" android:id="@+id/samplespeed_group" android:layout_width="wrap_content"> + <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/label_2" android:id="@+id/rb_2"></RadioButton> + <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/label_05" android:id="@+id/rb_05"></RadioButton> + <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/label_01" android:id="@+id/rb_01"></RadioButton> + </RadioGroup> + </TableRow> + <TableRow android:id="@+id/tableRow8" android:layout_width="wrap_content" android:layout_height="wrap_content"></TableRow> + </TableLayout> +</LinearLayout> diff --git a/electicAndroid/res/menu/option_menu.xml b/electicAndroid/res/menu/option_menu.xml new file mode 100644 index 0000000..18de725 --- /dev/null +++ b/electicAndroid/res/menu/option_menu.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@+id/secure_connect_scan" + android:icon="@android:drawable/ic_menu_search" + android:title="@string/secure_connect" /> + <item android:id="@+id/insecure_connect_scan" + android:icon="@android:drawable/ic_menu_search" + android:title="@string/insecure_connect" /> + <item android:id="@+id/discoverable" + android:icon="@android:drawable/ic_menu_mylocation" + android:title="@string/discoverable" /> +</menu> diff --git a/electicAndroid/res/values/strings.xml b/electicAndroid/res/values/strings.xml new file mode 100644 index 0000000..0aaa180 --- /dev/null +++ b/electicAndroid/res/values/strings.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <string name="app_name">Electic</string> + + <!-- BluetoothChat --> + <string name="send">Send</string> + <string name="not_connected">You are not connected to a device</string> + <string name="bt_not_enabled_leaving">Bluetooth was not enabled. Leaving Bluetooth Chat.</string> + <string name="title_connecting">connecting...</string> + <string name="title_connected_to">connected: </string> + <string name="title_not_connected">not connected</string> + + <!-- DeviceListActivity --> + <string name="scanning">scanning for devices...</string> + <string name="select_device">select a device to connect</string> + <string name="none_paired">No devices have been paired</string> + <string name="none_found">No devices found</string> + <string name="title_paired_devices">Paired Devices</string> + <string name="title_other_devices">Other Available Devices</string> + <string name="button_scan">Scan for devices</string> + + <!-- Options Menu --> + <string name="secure_connect">Connect a device - Secure</string> + <string name="insecure_connect">Connect a device - Insecure</string> + <string name="discoverable">Make discoverable</string> + <string name="title_sadc">sadc</string> + <string name="title_fadc">fadc</string> + <string name="label_flags">flags</string> + <string name="label_PMAX">PMAX</string> + <string name="label_PMIN">PMIN</string> + <string name="labelAlarm">Alarm</string> + <string name="label_2">2</string> + <string name="label_interval">interval</string> + <string name="label_05">0.5</string> + <string name="label_01">0.1</string> +</resources> diff --git a/electicAndroid/src/com/futureproof/adaptics/electic/AdapticsBluetooth.java b/electicAndroid/src/com/futureproof/adaptics/electic/AdapticsBluetooth.java new file mode 100644 index 0000000..72ff1d4 --- /dev/null +++ b/electicAndroid/src/com/futureproof/adaptics/electic/AdapticsBluetooth.java @@ -0,0 +1,520 @@ +/* + * Tim Redfern 2011 + * based on android - bluetoothchat + * + * 001 refactor + * 002 correct SDP to connect to bluetoothbee + * 003 decoding messages, data doesn't seem to make sense + * 004 building interface widgets to accept it + * + * filter based on SDP? + */ + +package com.futureproof.adaptics.electic; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.UUID; + +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothSocket; +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; + +/** + Adaptics bluetooth connects to a single device at a time, SPP, host-slave model + */ +public class AdapticsBluetooth { + // Debugging + private static final String TAG = "AdapticsBluetooth"; + private static final boolean D = true; + + /* + // Name for the SDP record when creating server socket + private static final String NAME_SECURE = "BluetoothChatSecure"; + private static final String NAME_INSECURE = "BluetoothChatInsecure"; + */ + + // Unique UUID for this application + private static final UUID MY_UUID = + UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); + + // Member fields + private final BluetoothAdapter mAdapter; + private final Handler mHandler; + //private AcceptThread mSecureAcceptThread; + //private AcceptThread mInsecureAcceptThread; + private ConnectThread mConnectThread; + private ConnectedThread mConnectedThread; + private int mState; + + // Constants that indicate the current connection state + public static final int STATE_NONE = 0; // we're doing nothing + //public static final int STATE_LISTEN = 1; // now listening for incoming connections + public static final int STATE_CONNECTING = 2; // now initiating an outgoing connection + public static final int STATE_CONNECTED = 3; // now connected to a remote device + + /** + * Constructor. Prepares a new BluetoothChat session. + * @param context The UI Activity Context + * @param handler A Handler to send messages back to the UI Activity + */ + public AdapticsBluetooth(Context context, Handler handler) { + mAdapter = BluetoothAdapter.getDefaultAdapter(); + mState = STATE_NONE; + mHandler = handler; + } + + /** + * Set the current state of the chat connection + * @param state An integer defining the current connection state + */ + private synchronized void setState(int state) { + if (D) Log.d(TAG, "setState() " + mState + " -> " + state); + mState = state; + + // Give the new state to the Handler so the UI Activity can update + mHandler.obtainMessage(Electic.MESSAGE_STATE_CHANGE, state, -1).sendToTarget(); + } + + /** + * Return the current connection state. */ + public synchronized int getState() { + return mState; + } + + /** + * Start the chat service. Specifically start AcceptThread to begin a + * session in listening (server) mode. Called by the Activity onResume() */ + public synchronized void start() { + if (D) Log.d(TAG, "start"); + + // Cancel any thread attempting to make a connection + if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;} + + // Cancel any thread currently running a connection + if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;} + + setState(STATE_NONE); + + /* + // Start the thread to listen on a BluetoothServerSocket + if (mSecureAcceptThread == null) { + mSecureAcceptThread = new AcceptThread(true); + mSecureAcceptThread.start(); + } + if (mInsecureAcceptThread == null) { + mInsecureAcceptThread = new AcceptThread(false); + mInsecureAcceptThread.start(); + } + */ + } + + /** + * Start the ConnectThread to initiate a connection to a remote device. + * @param device The BluetoothDevice to connect + * @param secure Socket Security type - Secure (true) , Insecure (false) + */ + public synchronized void connect(BluetoothDevice device) { + if (D) Log.d(TAG, "connect to: " + device); + + // Cancel any thread attempting to make a connection + if (mState == STATE_CONNECTING) { + if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;} + } + + // Cancel any thread currently running a connection + if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;} + + // Start the thread to connect with the given device + mConnectThread = new ConnectThread(device); + mConnectThread.start(); + setState(STATE_CONNECTING); + } + + /** + * Start the ConnectedThread to begin managing a Bluetooth connection + * @param socket The BluetoothSocket on which the connection was made + * @param device The BluetoothDevice that has been connected + */ + public synchronized void connected(BluetoothSocket socket, BluetoothDevice device) { + if (D) Log.d(TAG, "connected"); + + // Cancel the thread that completed the connection + if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;} + + // Cancel any thread currently running a connection + if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;} + + /* + // Cancel the accept thread because we only want to connect to one device + if (mSecureAcceptThread != null) { + mSecureAcceptThread.cancel(); + mSecureAcceptThread = null; + } + if (mInsecureAcceptThread != null) { + mInsecureAcceptThread.cancel(); + mInsecureAcceptThread = null; + } + */ + + // Start the thread to manage the connection and perform transmissions + mConnectedThread = new ConnectedThread(socket); + mConnectedThread.start(); + + // Send the name of the connected device back to the UI Activity + Message msg = mHandler.obtainMessage(Electic.MESSAGE_DEVICE_NAME); + Bundle bundle = new Bundle(); + bundle.putString(Electic.DEVICE_NAME, device.getName()); + msg.setData(bundle); + mHandler.sendMessage(msg); + + setState(STATE_CONNECTED); + } + + /** + * Stop all threads + */ + public synchronized void stop() { + if (D) Log.d(TAG, "stop"); + + if (mConnectThread != null) { + mConnectThread.cancel(); + mConnectThread = null; + } + + if (mConnectedThread != null) { + mConnectedThread.cancel(); + mConnectedThread = null; + } + + /* + if (mSecureAcceptThread != null) { + mSecureAcceptThread.cancel(); + mSecureAcceptThread = null; + } + + if (mInsecureAcceptThread != null) { + mInsecureAcceptThread.cancel(); + mInsecureAcceptThread = null; + } + */ + setState(STATE_NONE); + } + + /** + * Write to the ConnectedThread in an unsynchronized manner + * @param out The bytes to write + * @see ConnectedThread#write(byte[]) + */ + public void write(byte[] out) { + // Create temporary object + ConnectedThread r; + // Synchronize a copy of the ConnectedThread + synchronized (this) { + if (mState != STATE_CONNECTED) return; + r = mConnectedThread; + } + // Perform the write unsynchronized + r.write(out); + } + + /** + * Indicate that the connection attempt failed and notify the UI Activity. + */ + private void connectionFailed() { + // Send a failure message back to the Activity + Message msg = mHandler.obtainMessage(Electic.MESSAGE_TOAST); + Bundle bundle = new Bundle(); + bundle.putString(Electic.TOAST, "Unable to connect device"); + msg.setData(bundle); + mHandler.sendMessage(msg); + + // Start the service over to restart listening mode + AdapticsBluetooth.this.start(); + } + + /** + * Indicate that the connection was lost and notify the UI Activity. + */ + private void connectionLost() { + // Send a failure message back to the Activity + Message msg = mHandler.obtainMessage(Electic.MESSAGE_TOAST); + Bundle bundle = new Bundle(); + bundle.putString(Electic.TOAST, "Device connection was lost"); + msg.setData(bundle); + mHandler.sendMessage(msg); + + // Start the service over to restart listening mode + AdapticsBluetooth.this.start(); + } + + /** + * This thread runs while listening for incoming connections. It behaves + * like a server-side client. It runs until a connection is accepted + * (or until cancelled). + */ + + /* + private class AcceptThread extends Thread { + // The local server socket + private final BluetoothServerSocket mmServerSocket; + private String mSocketType; + + public AcceptThread(boolean secure) { + BluetoothServerSocket tmp = null; + mSocketType = secure ? "Secure":"Insecure"; + + // Create a new listening server socket + try { + if (secure) { + tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, + MY_UUID_SECURE); + } else { + tmp = mAdapter.listenUsingInsecureRfcommWithServiceRecord( + NAME_INSECURE, MY_UUID_INSECURE); + } + } catch (IOException e) { + Log.e(TAG, "Socket Type: " + mSocketType + "listen() failed", e); + } + mmServerSocket = tmp; + } + + public void run() { + if (D) Log.d(TAG, "Socket Type: " + mSocketType + + "BEGIN mAcceptThread" + this); + setName("AcceptThread" + mSocketType); + + BluetoothSocket socket = null; + + // Listen to the server socket if we're not connected + while (mState != STATE_CONNECTED) { + try { + // This is a blocking call and will only return on a + // successful connection or an exception + socket = mmServerSocket.accept(); + } catch (IOException e) { + Log.e(TAG, "Socket Type: " + mSocketType + "accept() failed", e); + break; + } + + // If a connection was accepted + if (socket != null) { + synchronized (AdapticsBluetooth.this) { + switch (mState) { + case STATE_LISTEN: + case STATE_CONNECTING: + // Situation normal. Start the connected thread. + connected(socket, socket.getRemoteDevice(), + mSocketType); + break; + case STATE_NONE: + case STATE_CONNECTED: + // Either not ready or already connected. Terminate new socket. + try { + socket.close(); + } catch (IOException e) { + Log.e(TAG, "Could not close unwanted socket", e); + } + break; + } + } + } + } + if (D) Log.i(TAG, "END mAcceptThread, socket Type: " + mSocketType); + + } + + public void cancel() { + if (D) Log.d(TAG, "Socket Type" + mSocketType + "cancel " + this); + try { + mmServerSocket.close(); + } catch (IOException e) { + Log.e(TAG, "Socket Type" + mSocketType + "close() of server failed", e); + } + } + } +*/ + + /** + * This thread runs while attempting to make an outgoing connection + * with a device. It runs straight through; the connection either + * succeeds or fails. + */ + private class ConnectThread extends Thread { + private final BluetoothSocket mmSocket; + private final BluetoothDevice mmDevice; + + public ConnectThread(BluetoothDevice device) { + mmDevice = device; + BluetoothSocket tmp = null; + + + // Get a BluetoothSocket for a connection with the + // given BluetoothDevice + + // + // http://stackoverflow.com/questions/3397071/android-bluetooth-service-discovery-failed-exception + // + try { + tmp = device.createInsecureRfcommSocketToServiceRecord( + MY_UUID); + } catch (IOException e) { + Log.e(TAG, "Socket create() failed", e); + } + mmSocket = tmp; + } + + public void run() { + Log.i(TAG, "BEGIN mConnectThread"); + setName("ConnectThread"); + + // Always cancel discovery because it will slow down a connection + mAdapter.cancelDiscovery(); + + // Make a connection to the BluetoothSocket + try { + // This is a blocking call and will only return on a + // successful connection or an exception + mmSocket.connect(); + } catch (IOException e) { + // Close the socket + try { + mmSocket.close(); + } catch (IOException e2) { + Log.e(TAG, "unable to close() socket during connection failure", e2); + } + connectionFailed(); + return; + } + + // Reset the ConnectThread because we're done + synchronized (AdapticsBluetooth.this) { + mConnectThread = null; + } + + // Start the connected thread + connected(mmSocket, mmDevice); + } + + public void cancel() { + try { + mmSocket.close(); + } catch (IOException e) { + Log.e(TAG, "close() of connect socket failed", e); + } + } + } + + /** + * This thread runs during a connection with a remote device. + * It handles all incoming and outgoing transmissions. + */ + private class ConnectedThread extends Thread { + private final BluetoothSocket mmSocket; + private final InputStream mmInStream; + private final OutputStream mmOutStream; + + public ConnectedThread(BluetoothSocket socket) { + Log.d(TAG, "create ConnectedThread"); + mmSocket = socket; + InputStream tmpIn = null; + OutputStream tmpOut = null; + + // Get the BluetoothSocket input and output streams + try { + tmpIn = socket.getInputStream(); + tmpOut = socket.getOutputStream(); + } catch (IOException e) { + Log.e(TAG, "temp sockets not created", e); + } + + mmInStream = tmpIn; + mmOutStream = tmpOut; + } + + public void run() { + Log.i(TAG, "BEGIN mConnectedThread"); + byte[] temp = new byte[1024]; + byte[] buffer = new byte[1024]; + int bufferPtr=0; + byte[] message; + int bytes; + + // Keep listening to the InputStream while connected + while (true) { + try { + // Read from the InputStream + bytes = mmInStream.read(temp); + /* + * check the message segmentation and send on the payload + * keep a buffer of incoming messages + * look for the message signature + * and begin reading from there + * + */ + //String debugMess="bytes:"+bytes+" "; + //String sendMess=""; + for (int i=0;i<bytes;i++) { + buffer[bufferPtr+i]=temp[i]; + //debugMess+=buffer[bufferPtr+i]+" "; + } + //Log.i(TAG, debugMess); + bufferPtr+=bytes; + for (int i=0;i<bufferPtr-3;i++){ //message must be at least 1 byte + if (buffer[i]==-16&&buffer[i+1]==0&&bufferPtr>i+2+buffer[i+2]) { + int msgLen=buffer[i+2]; + message = new byte[msgLen]; + for (int j=0;j<msgLen;j++){ + message[j]=buffer[i+j+3]; + //sendMess+=buffer[i+j+3]+" "; + } + for (int k=0;k<bufferPtr-(i+msgLen+3);k++){ + buffer[k]=buffer[i+msgLen+3+k]; + } + bufferPtr-=(i+msgLen+3); + // Send the obtained bytes to the UI Activity + mHandler.obtainMessage(Electic.MESSAGE_READ, bytes, -1, message) + .sendToTarget(); + //Log.i(TAG, "++++SENT: "+sendMess); + } + } + + } catch (IOException e) { + Log.e(TAG, "disconnected", e); + connectionLost(); + break; + } + } + } + + /** + * Write to the connected OutStream. + * @param buffer The bytes to write + */ + public void write(byte[] buffer) { + try { + mmOutStream.write(buffer); + + // Share the sent message back to the UI Activity + mHandler.obtainMessage(Electic.MESSAGE_WRITE, -1, -1, buffer) + .sendToTarget(); + } catch (IOException e) { + Log.e(TAG, "Exception during write", e); + } + } + + public void cancel() { + try { + mmSocket.close(); + } catch (IOException e) { + Log.e(TAG, "close() of connect socket failed", e); + } + } + } +} diff --git a/electicAndroid/src/com/futureproof/adaptics/electic/DeviceListActivity.java b/electicAndroid/src/com/futureproof/adaptics/electic/DeviceListActivity.java new file mode 100644 index 0000000..27077ca --- /dev/null +++ b/electicAndroid/src/com/futureproof/adaptics/electic/DeviceListActivity.java @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.futureproof.adaptics.electic; + +import java.util.Set; + +import com.futureproof.adaptics.electic.R; + +import android.app.Activity; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothClass; +import android.bluetooth.BluetoothDevice; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.view.Window; +import android.view.View.OnClickListener; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.AdapterView.OnItemClickListener; + +/** + * This Activity appears as a dialog. It lists any paired devices and + * devices detected in the area after discovery. When a device is chosen + * by the user, the MAC address of the device is sent back to the parent + * Activity in the result Intent. + */ +public class DeviceListActivity extends Activity { + // Debugging + private static final String TAG = "DeviceListActivity"; + private static final boolean D = true; + + // Return Intent extra + public static String EXTRA_DEVICE_ADDRESS = "device_address"; + + // Member fields + private BluetoothAdapter mBtAdapter; + private ArrayAdapter<String> mPairedDevicesArrayAdapter; + private ArrayAdapter<String> mNewDevicesArrayAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Setup the window + requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); + setContentView(R.layout.device_list); + + // Set result CANCELED incase the user backs out + setResult(Activity.RESULT_CANCELED); + + // Initialize the button to perform device discovery + Button scanButton = (Button) findViewById(R.id.button_scan); + scanButton.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + doDiscovery(); + v.setVisibility(View.GONE); + } + }); + + // Initialize array adapters. One for already paired devices and + // one for newly discovered devices + mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name); + mNewDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name); + + // Find and set up the ListView for paired devices + ListView pairedListView = (ListView) findViewById(R.id.paired_devices); + pairedListView.setAdapter(mPairedDevicesArrayAdapter); + pairedListView.setOnItemClickListener(mDeviceClickListener); + + // Find and set up the ListView for newly discovered devices + ListView newDevicesListView = (ListView) findViewById(R.id.new_devices); + newDevicesListView.setAdapter(mNewDevicesArrayAdapter); + newDevicesListView.setOnItemClickListener(mDeviceClickListener); + + // Register for broadcasts when a device is discovered + IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); + this.registerReceiver(mReceiver, filter); + + // Register for broadcasts when discovery has finished + filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); + this.registerReceiver(mReceiver, filter); + + // Get the local Bluetooth adapter + mBtAdapter = BluetoothAdapter.getDefaultAdapter(); + + // Get a set of currently paired devices + Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices(); + + // If there are paired devices, add each one to the ArrayAdapter + if (pairedDevices.size() > 0) { + findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE); + for (BluetoothDevice device : pairedDevices) { + mPairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress()); + } + } else { + String noDevices = getResources().getText(R.string.none_paired).toString(); + mPairedDevicesArrayAdapter.add(noDevices); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + + // Make sure we're not doing discovery anymore + if (mBtAdapter != null) { + mBtAdapter.cancelDiscovery(); + } + + // Unregister broadcast listeners + this.unregisterReceiver(mReceiver); + } + + /** + * Start device discover with the BluetoothAdapter + */ + private void doDiscovery() { + if (D) Log.d(TAG, "doDiscovery()"); + + // Indicate scanning in the title + setProgressBarIndeterminateVisibility(true); + setTitle(R.string.scanning); + + // Turn on sub-title for new devices + findViewById(R.id.title_new_devices).setVisibility(View.VISIBLE); + + // If we're already discovering, stop it + if (mBtAdapter.isDiscovering()) { + mBtAdapter.cancelDiscovery(); + } + + // Request discover from BluetoothAdapter + mBtAdapter.startDiscovery(); + } + + // The on-click listener for all devices in the ListViews + private OnItemClickListener mDeviceClickListener = new OnItemClickListener() { + public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) { + // Cancel discovery because it's costly and we're about to connect + mBtAdapter.cancelDiscovery(); + + // Get the device MAC address, which is the last 17 chars in the View + String info = ((TextView) v).getText().toString(); + String address = info.substring(info.length() - 17); + + // Create the result Intent and include the MAC address + Intent intent = new Intent(); + intent.putExtra(EXTRA_DEVICE_ADDRESS, address); + + // Set result and finish this Activity + setResult(Activity.RESULT_OK, intent); + finish(); + } + }; + + // The BroadcastReceiver that listens for discovered devices and + // changes the title when discovery is finished + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + + // When discovery finds a device + if (BluetoothDevice.ACTION_FOUND.equals(action)) { + // Get the BluetoothDevice object from the Intent + BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); + BluetoothClass bclass = intent.getParcelableExtra(BluetoothDevice.EXTRA_CLASS); + // If it's already paired, skip it, because it's been listed already + + // + // + // filter for the right type of devices? + // + // + + if (device.getBondState() != BluetoothDevice.BOND_BONDED) { + mNewDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress()); //+ "\n" + bclass.getDeviceClass()); + } + // When discovery is finished, change the Activity title + } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { + setProgressBarIndeterminateVisibility(false); + setTitle(R.string.select_device); + if (mNewDevicesArrayAdapter.getCount() == 0) { + String noDevices = getResources().getText(R.string.none_found).toString(); + mNewDevicesArrayAdapter.add(noDevices); + } + } + } + }; + +} diff --git a/electicAndroid/src/com/futureproof/adaptics/electic/Electic.java b/electicAndroid/src/com/futureproof/adaptics/electic/Electic.java new file mode 100644 index 0000000..7de9104 --- /dev/null +++ b/electicAndroid/src/com/futureproof/adaptics/electic/Electic.java @@ -0,0 +1,393 @@ +/* + * Tim Redfern 2011 + * + * + * number view display + * decision: decipher in mcu? + * ie - need to range quickly based on this? + * decide protocol for setting commands + * make a couple of buttons and use these to change + */ + +package com.futureproof.adaptics.electic; + + +import android.app.Activity; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.Menu; +import android.view.Window; +import android.widget.CheckBox; +import android.widget.RadioGroup; +import android.widget.TextView; +import android.widget.Toast; + +/** + * This is the main Activity that displays the current chat session. + */ +public class Electic extends Activity { + // Debugging + private static final String TAG = "Electic"; + private static final boolean D = true; + + // Message types sent from the BluetoothChatService Handler + public static final int MESSAGE_STATE_CHANGE = 1; + public static final int MESSAGE_READ = 2; + public static final int MESSAGE_WRITE = 3; + public static final int MESSAGE_DEVICE_NAME = 4; + public static final int MESSAGE_TOAST = 5; + + // Key names received from the BluetoothChatService Handler + public static final String DEVICE_NAME = "device_name"; + public static final String TOAST = "toast"; + + // Intent request codes + private static final int REQUEST_CONNECT_DEVICE = 1; + private static final int REQUEST_ENABLE_BT = 2; + + // Layout Views + private TextView mTitle; + + // Name of the connected device + private String mConnectedDeviceName = null; + // Local Bluetooth adapter + private BluetoothAdapter mBluetoothAdapter = null; + // Member object for the chat services + private AdapticsBluetooth adapBT = null; + + //electic UI elements + TextView sadcReadout; + TextView fadcReadout; + + TextView sadcReadout1; + TextView fadcReadout1; + + CheckBox PMINbox; + CheckBox PMAXbox; + CheckBox alarmBox; + RadioGroup sampleSpeedGroup; + + int SAMPLESPEED2 = R.id.rb_2; + int SAMPLESPEED05 = R.id.rb_05; + int SAMPLESPEED01 = R.id.rb_01; + + int sampleSpeed = SAMPLESPEED2; + + short ASIGNbit = (short) Integer.parseInt("10000000", 2); + short BSIGNbit = (short) Integer.parseInt("1000000", 2); + short PMAXbit = (short) Integer.parseInt("100000", 2); + short PMINbit = (short) Integer.parseInt("10000", 2); + short ALARMbit = (short) Integer.parseInt("1", 2); + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if(D) Log.e(TAG, "+++ ON CREATE +++"); + + // Set up the window layout + requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); + setContentView(R.layout.main); + getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); + + // Set up the custom title + mTitle = (TextView) findViewById(R.id.title_left_text); + mTitle.setText(R.string.app_name); + mTitle = (TextView) findViewById(R.id.title_right_text); + + // Get local Bluetooth adapter + mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + + // If the adapter is null, then Bluetooth is not supported + if (mBluetoothAdapter == null) { + Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show(); + finish(); + return; + } + } + + @Override + public void onStart() { + super.onStart(); + if(D) Log.e(TAG, "++ ON START ++"); + + // If BT is not on, request that it be enabled. + // setupChat() will then be called during onActivityResult + if (!mBluetoothAdapter.isEnabled()) { + Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); + startActivityForResult(enableIntent, REQUEST_ENABLE_BT); + // Otherwise, setup the chat session + } else { + if (adapBT == null) setupUI(); + } + } + + @Override + public synchronized void onResume() { + super.onResume(); + if(D) Log.e(TAG, "+ ON RESUME +"); + + // Performing this check in onResume() covers the case in which BT was + // not enabled during onStart(), so we were paused to enable it... + // onResume() will be called when ACTION_REQUEST_ENABLE activity returns. + if (adapBT != null) { + // Only if the state is STATE_NONE, do we know that we haven't started already + if (adapBT.getState() == AdapticsBluetooth.STATE_NONE) { + // Start the Bluetooth chat services + adapBT.start(); + } + } + } + + private void setupUI() { + Log.d(TAG, "setupUI()"); + + //initialise electic UI elements + sadcReadout=(TextView) findViewById(R.id.sadcText); + fadcReadout=(TextView) findViewById(R.id.fadcText); + + sadcReadout1=(TextView) findViewById(R.id.sadcText1); + fadcReadout1=(TextView) findViewById(R.id.fadcText1); + + PMAXbox=(CheckBox) findViewById(R.id.pmaxBox); + PMINbox=(CheckBox) findViewById(R.id.pminBox); + alarmBox=(CheckBox) findViewById(R.id.alarmBox); + + sampleSpeedGroup = (RadioGroup) findViewById(R.id.samplespeed_group); + sampleSpeedGroup.check(sampleSpeed); + + sadcReadout.setText("0".toCharArray(), 0, 1); + fadcReadout.setText("0".toCharArray(), 0, 1); + + sadcReadout1.setText("0".toCharArray(), 0, 1); + fadcReadout1.setText("0".toCharArray(), 0, 1); + PMAXbox.setChecked(false); + PMINbox.setChecked(false); + alarmBox.setChecked(false); + + sampleSpeedGroup.setOnCheckedChangeListener( + new RadioGroup.OnCheckedChangeListener() { + public void onCheckedChanged(RadioGroup group, + int checkedId) { + setSampleSpeed(checkedId==SAMPLESPEED2?1:checkedId==SAMPLESPEED05?2:3); + } + }); + + // Initialize the service to perform bluetooth connections + adapBT = new AdapticsBluetooth(this, mHandler); + + + } + + @Override + public synchronized void onPause() { + super.onPause(); + if(D) Log.e(TAG, "- ON PAUSE -"); + } + + @Override + public void onStop() { + super.onStop(); + if(D) Log.e(TAG, "-- ON STOP --"); + } + + @Override + public void onDestroy() { + super.onDestroy(); + // Stop the Bluetooth chat services + if (adapBT != null) adapBT.stop(); + if(D) Log.e(TAG, "--- ON DESTROY ---"); + } +/* + private void ensureDiscoverable() { + if(D) Log.d(TAG, "ensure discoverable"); + if (mBluetoothAdapter.getScanMode() != + BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) { + Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); + discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); + startActivity(discoverableIntent); + } + } + */ + + + + + // The Handler that gets information back from the BluetoothChatService + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MESSAGE_STATE_CHANGE: + if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1); + switch (msg.arg1) { + case AdapticsBluetooth.STATE_CONNECTED: + mTitle.setText(R.string.title_connected_to); + mTitle.append(mConnectedDeviceName); + break; + case AdapticsBluetooth.STATE_CONNECTING: + mTitle.setText(R.string.title_connecting); + break; + // case AdapticsBluetooth.STATE_LISTEN: + case AdapticsBluetooth.STATE_NONE: + mTitle.setText(R.string.title_not_connected); + break; + } + break; + case MESSAGE_READ: + byte[] readBuf = (byte[]) msg.obj; + // construct a string from the valid bytes in the buffer + /* + * figure out how to decode data + * data has been checked at this point - message constructed + * + */ + long sadc = (ubyte64(readBuf[4]))+(ubyte64(readBuf[3])<<8)+(ubyte64(readBuf[2])<<16)+(ubyte64(readBuf[1])<<24); + int fadc = ubyte32(readBuf[6])+(ubyte32(readBuf[5])<<8); + + //reverse byte order + long sadc1=0; + for (int i=0;i<18;i++){ + sadc1+=((sadc&(((long)0x01)<<i))>>i)<<(17-i); + } + int fadc1=0; + for (int i=0;i<10;i++){ + fadc1+=((fadc&(((long)0x01)<<i))>>i)<<(9-i); + } + + if (((short)readBuf[0]&ASIGNbit)>0) { + sadc*=-1; + sadc1*=-1; + } + if (((short)readBuf[0]&BSIGNbit)>0) { + fadc*=-1; + fadc1*=-1; + } + short status=(short)readBuf[0]; + + String sadcS=Float.toString(((float)sadc)/6000.0f); + String fadcS=Float.toString(((float)fadc)/600.0f); + + String sadc1S=Float.toString(((float)sadc1)/6000.0f); + String fadc1S=Float.toString(((float)fadc1)/600.0f); + + sadcReadout.setText(sadcS.toCharArray(), 0, sadcS.length()); + fadcReadout.setText(fadcS.toCharArray(), 0, fadcS.length()); + + sadcReadout1.setText(sadc1S.toCharArray(), 0, sadc1S.length()); + fadcReadout1.setText(fadc1S.toCharArray(), 0, fadc1S.length()); + + PMAXbox.setChecked(((short)readBuf[0]&PMAXbit)>0); + PMINbox.setChecked(((short)readBuf[0]&PMINbit)>0); + alarmBox.setChecked(((short)readBuf[0]&ALARMbit)>0); + Log.i(TAG, "++++RECEIVED: "+readBuf[0]+" "+readBuf[1]+" "+readBuf[2]+" "+readBuf[3]+" "+readBuf[4]+" "+readBuf[5]+" "+readBuf[6]+" AS: "+status+" "+sadc+" "+fadc); + //String readMessage = new String(readBuf, 0, msg.arg1); + break; + case MESSAGE_DEVICE_NAME: + // save the connected device's name + mConnectedDeviceName = msg.getData().getString(DEVICE_NAME); + Toast.makeText(getApplicationContext(), "Connected to " + + mConnectedDeviceName, Toast.LENGTH_SHORT).show(); + break; + case MESSAGE_TOAST: + Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST), + Toast.LENGTH_SHORT).show(); + break; + } + } + }; + + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if(D) Log.d(TAG, "onActivityResult " + resultCode); + switch (requestCode) { + case REQUEST_CONNECT_DEVICE: + // When DeviceListActivity returns with a device to connect + if (resultCode == Activity.RESULT_OK) { + connectDevice(data); + } + break; + case REQUEST_ENABLE_BT: + // When the request to enable Bluetooth returns + if (resultCode == Activity.RESULT_OK) { + // Bluetooth is now enabled, so set up a chat session + setupUI(); + } else { + // User did not enable Bluetooth or an error occured + Log.d(TAG, "BT not enabled"); + Toast.makeText(this, R.string.bt_not_enabled_leaving, Toast.LENGTH_SHORT).show(); + finish(); + } + } + } + + private void connectDevice(Intent data) { + // Get the device MAC address + String address = data.getExtras() + .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS); + // Get the BLuetoothDevice object + BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); + // Attempt to connect to the device + adapBT.connect(device); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + /* + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.option_menu, menu); + return true; + */ + Intent serverIntent = new Intent(this, DeviceListActivity.class); + startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE); + return true; + } +/* + @Override + public boolean onOptionsItemSelected(MenuItem item) { + Intent serverIntent = null; + switch (item.getItemId()) { + case R.id.connect_scan: + // Launch the DeviceListActivity to see devices and do scan + serverIntent = new Intent(this, DeviceListActivity.class); + startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE); + return true; + case R.id.insecure_connect_scan: + // Launch the DeviceListActivity to see devices and do scan + serverIntent = new Intent(this, DeviceListActivity.class); + startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE); + return true; + case R.id.discoverable: + // Ensure this device is discoverable by others + ensureDiscoverable(); + return true; + } + return false; + } + */ + private void setSampleSpeed(int speedCode) { + // Check that we're actually connected before trying anything + if (adapBT.getState() != AdapticsBluetooth.STATE_CONNECTED) { + Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show(); + return; + } + byte[] message=new byte[1]; + message[0]=(byte) speedCode; + adapBT.write(message); + + } + private int ubyte32(byte b){ + int i=(int) b; + if (i<0) i+=128; + return i; + } + private long ubyte64(byte b){ + long l=(long) b; + if (l<0) l+=128; + return l; + } + +} diff --git a/electic_streaming2560/bin/Debug/electic_streaming.elf.eep.hex b/electic_streaming2560/bin/Debug/electic_streaming.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/electic_streaming2560/bin/Debug/electic_streaming.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/electic_streaming2560/bin/Debug/electic_streaming.elf.hex b/electic_streaming2560/bin/Debug/electic_streaming.elf.hex new file mode 100644 index 0000000..30ee594 --- /dev/null +++ b/electic_streaming2560/bin/Debug/electic_streaming.elf.hex @@ -0,0 +1,364 @@ +:100000000C9444000C946C000C946C000C946C00E8
+:100010000C946C000C946C000C946C000C946C00B0
+:100020000C946C000C946C000C946C000C946E009E
+:100030000C946C000C946C000C946C000C946C0090
+:100040000C946C000C946C000C94D9030C946C0010
+:100050000C946C000C946C000C946C000C946C0070
+:100060000C946C000C946C0005A84CCDB2D44EB925
+:100070003836A9020C50B9918688083CA6AAAA2A4B
+:10008000BE000000803FB70111241FBECFEFD8E0B3
+:10009000DEBFCDBF11E0A0E0B1E0EEE7F6E102C0C7
+:1000A00005900D92A232B107D9F713E0A2E2B1E0B8
+:1000B00001C01D92AC3AB107E1F710E0C8E8D0E00A
+:1000C00004C02297FE010E94A409C638D107C9F7CF
+:1000D0000E945C010C943D0B0C9400001F920F9247
+:1000E0000FB60F9211242F933F934F935F936F930B
+:1000F0007F938F939F93AF93BF93EF93FF93DF9380
+:10010000CF9300D0CDB7DEB7A5E2B0E0E5E2F0E0F6
+:10011000908180E289278C931A82198220C0809175
+:10012000240390912503FC01EE5DFE4F208186E2C1
+:1001300093E0622F0E94BE018091240390912503D9
+:10014000019620E032E0B9010E940709909325034F
+:100150008093240389819A8101969A838983898176
+:100160009A8121E080349207D4F286E293E060E045
+:100170000E94BE010F900F90CF91DF91FF91EF9100
+:10018000BF91AF919F918F917F916F915F914F91AF
+:100190003F912F910F900FBE0F901F901895DF93F6
+:1001A000CF93CDB7DEB764970FB6F894DEBF0FBE1E
+:1001B000CDBF88ED9FE0A9E4B0E4898B9A8BAB8B2F
+:1001C000BC8B80E090E0A0E0B0E08D879E87AF8799
+:1001D000B88B29893A894B895C89CA01B9010E9487
+:1001E0009305DC01CB01BC01CD0120E030E040E013
+:1001F00054E40E94BA06DC01CB018D839E83AF8359
+:10020000B8871A82198248C08D859E85AF85B889C6
+:10021000BC01CD010E94A809DC01CB01BC01CD01CC
+:1002200020E030E04EEF52E40E94C005DC01CB013B
+:1002300089879A87AB87BC876D857E858F859889EE
+:100240002D813E814F8158850E949305DC01CB01B1
+:100250008D879E87AF87B88B69857A858B859C85CE
+:1002600020E030E040E053E40E949305DC01CB0144
+:10027000BC01CD010E946607DC01CB019C838B830E
+:1002800089819A812B81FC01EE5DFE4F208389815B
+:100290009A8101969A83898389819A8122E08030AC
+:1002A00092070CF4B1CF64960FB6F894DEBF0FBE80
+:1002B000CDBFCF91DF910895DF93CF9300D0CDB71D
+:1002C000DEB70E94CF0086E293E040E052EC61E0AE
+:1002D00070E00E94CB01A4E2B0E0E4E2F0E08081B3
+:1002E00080628C93E5E2F0E080E28083A1E8B0E0F8
+:1002F000E1E8F0E0808188608C93AFE6B0E0EFE663
+:10030000F0E0808182608C93E8E8F0E086E891E09C
+:1003100091838083789486E293E00E94C8011A82D8
+:100320001816190614F481E08A838A81882399F3C8
+:10033000A5E2B0E0E5E2F0E0908180E289278C93CD
+:1003400086E293E00E94C50189838981813619F78D
+:1003500086E293E020E031E0B9010E941F02A1E8AB
+:10036000B0E0E1E8F0E0808185608C93D4CF87E154
+:1003700091E090932703809326030895862F0E948F
+:10038000980308950E94D00308950E94B103089530
+:100390000E94A0030895CB01BA010E945F03089553
+:1003A000DC01ED91FC910190F081E02D099508951B
+:1003B000DC01ED91FC910190F081E02D099508950B
+:1003C0000F931F93CF93DF938C01EB0109C021960C
+:1003D000D801ED91FC910190F081E02DC8010995C3
+:1003E00068816623A1F7DF91CF911F910F91089546
+:1003F0000F931F938C01DC01ED91FC910190F08132
+:10040000E02D6DE00995D801ED91FC910190F0810E
+:10041000E02D6AE0C80109951F910F9108950F938F
+:100420001F938C01DC01ED91FC910190F081E02D96
+:100430000995C8010E94F8011F910F9108950F932B
+:100440001F938C010E94E001C8010E94F8011F91D6
+:100450000F9108950F931F938C01DC01ED91FC9196
+:100460000190F081E02D0995C8010E94F8011F91CB
+:100470000F9108952F923F924F925F926F927F92C9
+:100480008F929F92AF92BF92CF92DF92EF92FF92A4
+:100490000F931F93DF93CF93CDB7DEB7A0970FB61F
+:1004A000F894DEBF0FBECDBF1C016A017B01411570
+:1004B00051056105710549F4DC01ED91FC91019054
+:1004C000F081E02D60E3099554C0882499245401FB
+:1004D000422E55246624772401E010E00C0F1D1FE6
+:1004E000080D191DC701B601A30192010E941A0946
+:1004F000F80160830894811C911CA11CB11CC701E8
+:10050000B601A30192010E941A09C901DA016C0126
+:100510007D01C114D104E104F104F1F681E0E82E7B
+:10052000F12CEC0EFD1EE80CF91C3E010894611C38
+:10053000711CD501C4010197A109B1096C01C8184A
+:10054000D90814C0F601EE0DFF1D60816A3010F469
+:10055000605D01C0695CD101ED91FC910190F08179
+:10056000E02DC10109950894E108F1086E147F049B
+:1005700049F7A0960FB6F894DEBF0FBECDBFCF915E
+:10058000DF911F910F91FF90EF90DF90CF90BF9080
+:10059000AF909F908F907F906F905F904F903F9023
+:1005A0002F9008952AE00E943A0208950F931F9316
+:1005B0008C010E94D202C8010E94F8011F910F9184
+:1005C0000895AB0160E070E00E94D20208950F939D
+:1005D0001F938C01AB0160E070E00E94D202C80161
+:1005E0000E94F8011F910F910895EF92FF920F93CF
+:1005F0001F93CF93DF93EC017A018B0177FF0FC03C
+:10060000E881F9810190F081E02D6DE20995109566
+:100610000095F094E094E11CF11C011D111D2AE0ED
+:10062000B801A701CE010E943A02DF91CF911F913C
+:100630000F91FF90EF9008950F931F938C010E94EC
+:10064000F502C8010E94F8011F910F910895AB01B6
+:10065000662757FD6095762F0E94F50208950F9347
+:100660001F938C01AB01662757FD6095762F0E9482
+:10067000F502C8010E94F8011F910F910895DC0155
+:100680002115310541F4ED91FC910190F081E02DAF
+:10069000642F099508952A30310519F40E94F50256
+:1006A00008950E943A0208950F931F938C010E94AF
+:1006B0003F03C8010E94F8011F910F910895EF9226
+:1006C000FF920F931F937B018C0122E030E040E00A
+:1006D00050E00E943C09205C3D4B404F5F4FCA01F7
+:1006E000B901A80197010E943C09C901DA010197EB
+:1006F000A109B109292F3A2F4B2F552747FD5A95AC
+:100700000196A11DB11D2093C50081508093C400A6
+:10071000E1ECF0E08081806180838081886080836B
+:100720008081806880831F910F91FF90EF900895E2
+:10073000982F8091C00085FFFCCF9093C60008954C
+:10074000809128039091290380589F4F20912A037C
+:1007500030912B03821B930B60E870E00E94070925
+:10076000089540912A0350912B0380912803909182
+:1007700029038417950719F42FEF3FEF0FC0FA01F3
+:10078000E45DFC4F2081CA01019660E870E00E94A0
+:10079000070990932B0380932A0330E0C901089541
+:1007A00080912A0390912B0390932903809328032F
+:1007B00008951F920F920FB60F9211242F933F931B
+:1007C0004F935F936F937F938F939F93AF93BF9359
+:1007D000EF93FF934091C600E0912803F091290325
+:1007E000CF01019660E870E00E9407099C018091AA
+:1007F0002A0390912B032817390739F0E45DFC4F49
+:1008000040833093290320932803FF91EF91BF91F8
+:10081000AF919F918F917F916F915F914F913F9198
+:100820002F910F900FBE0F901F901895A0E0B0E091
+:10083000ECE1F4E00C946B09DC012B01FA019C91D2
+:10084000923008F439C1EB018881823008F433C159
+:10085000943069F4843009F02FC111969C9111975E
+:100860008981981709F428C1A9E1B1E025C1843034
+:1008700009F421C18230A9F4923009F01DC19A0116
+:10088000AD0188E0EA010990AE01E90109929E01FB
+:100890008150C1F7E201898111969C91892381835E
+:1008A00008C1923009F407C112962D903C9013971D
+:1008B000EB018A819B811496AD90BD90CD90DC9028
+:1008C0001797EC80FD800E811F819101281B390B49
+:1008D000B90137FF04C066277727621B730B6032AC
+:1008E00071050CF061C0121613066CF53701480152
+:1008F000062E04C096948794779467940A94D2F74E
+:1009000021E030E040E050E004C0220F331F441FDC
+:10091000551F6A95D2F721503040404050402E215B
+:100920003F2140235123211531054105510521F077
+:1009300021E030E040E050E079018A01E628F72824
+:10094000082919293CC0232BD1F1260E371E350169
+:100950004601062E04C096948794779467940A946F
+:10096000D2F721E030E040E050E004C0220F331F16
+:10097000441F551F6A95D2F72150304040405040E7
+:100980002A213B214C215D212115310541055105CD
+:1009900021F021E030E040E050E059016A01A62852
+:1009A000B728C828D9280BC0821593052CF01C0144
+:1009B000AA24BB24650103C0EE24FF2487011196FD
+:1009C0009C91D20111968C91981709F445C09923F6
+:1009D00039F0A80197012A193B094C095D0906C0A5
+:1009E000A60195012E193F09400B510B57FD08C078
+:1009F00011823382228224833583468357831DC02C
+:100A000081E081833382228288279927DC01821B3F
+:100A1000930BA40BB50B84839583A683B7830DC07A
+:100A2000220F331F441F551F24833583468357836A
+:100A300082819381019793838283248135814681CA
+:100A40005781DA01C9010197A109B1098F5F9F4F51
+:100A5000AF4FBF4328F30BC0918333822282EA0C4D
+:100A6000FB1C0C1D1D1DE482F5820683178383E0A9
+:100A70008083248135814681578157FF1AC0C9017F
+:100A8000AA2797FDA095BA2F81709070A070B070C2
+:100A90005695479537952795822B932BA42BB52BED
+:100AA00084839583A683B783828193810196938300
+:100AB0008283DF0101C0D201CD01CDB7DEB7E2E113
+:100AC0000C948709A0E2B0E0E8E6F5E00C94770921
+:100AD00069837A838B839C832D833E834F835887DE
+:100AE000E9E0EE2EF12CEC0EFD1ECE010196B701D1
+:100AF0000E948F088E010F5E1F4FCE010596B80130
+:100B00000E948F088A8991E089278A8BC701B801E2
+:100B1000AE01475E5F4F0E9416040E94BA07A0967E
+:100B2000E6E00C949309A0E2B0E0E9E9F5E00C946A
+:100B3000770969837A838B839C832D833E834F83DC
+:100B40005887F9E0EF2EF12CEC0EFD1ECE01019638
+:100B5000B7010E948F088E010F5E1F4FCE010596D0
+:100B6000B8010E948F08C701B801AE01475E5F4F10
+:100B70000E9416040E94BA07A096E6E00C9493091E
+:100B8000A0E2B0E0E6ECF5E00C946B0969837A83AF
+:100B90008B839C832D833E834F835887CE010196A0
+:100BA000BE01675F7F4F0E948F08CE010596BE0190
+:100BB0006F5E7F4F0E948F089985923088F08989F7
+:100BC0008230C8F0943019F4823051F404C084307B
+:100BD00029F4923081F489E191E0C6C0923049F461
+:100BE00020E09A858A89981321E02A87CE01099608
+:100BF000BBC0823049F420E09A858A89981321E0AD
+:100C00002A8BCE014196B0C02D843E844F845888F3
+:100C10006D887E888F88988CEE24FF248701AA2413
+:100C2000BB24650140E050E060E070E0E0E0F0E00F
+:100C3000C10181709070892BE9F0E60CF71C081D4A
+:100C4000191D9A01AB012A0D3B1D4C1D5D1D80E055
+:100C500090E0A0E0B0E0E614F7040805190520F4E0
+:100C600081E090E0A0E0B0E0BA01A901480F591F6F
+:100C70006A1F7B1FAA0CBB1CCC1CDD1C97FE08C086
+:100C800081E090E0A0E0B0E0A82AB92ACA2ADB2AD5
+:100C90003196E032F10549F0660C771C881C991CEE
+:100CA0005694479437942794C3CFFA85EA892B89C1
+:100CB0003C898B859C85280F391F2E5F3F4F17C0BD
+:100CC000CA0181709070892B61F016950795F79491
+:100CD000E79480E090E0A0E0B0E8E82AF92A0A2B47
+:100CE0001B2B76956795579547952F5F3F4F77FD5F
+:100CF000E7CF0CC0440F551F661F771F17FD4160DB
+:100D0000EE0CFF1C001F111F21503040403090E0BE
+:100D1000590790E0690790E4790760F32B8F3C8FC7
+:100D2000DB01CA018F779070A070B070803491059C
+:100D3000A105B10561F447FD0AC0E114F104010504
+:100D4000110529F0405C5F4F6F4F7F4F40781A8E3E
+:100D5000FE1711F081E08A8F4D8F5E8F6F8F78A321
+:100D600083E0898FCE0149960E94BA07A096E2E1FE
+:100D70000C948709A8E1B0E0E0ECF6E00C9473096C
+:100D800069837A838B839C832D833E834F8358872B
+:100D9000B9E0EB2EF12CEC0EFD1ECE010196B70151
+:100DA0000E948F088E010F5E1F4FCE010596B8017D
+:100DB0000E948F082985223008F47EC0398932309C
+:100DC00010F4B8017CC08A859A8989278A872430E3
+:100DD00011F0223031F4231709F06EC069E171E09F
+:100DE0006EC0343039F41D861E861F86188A1C8614
+:100DF0001B8604C0323021F484E08987B7015FC0CC
+:100E00002B853C858B899C89281B390B3C872B873C
+:100E1000ED84FE840F851889AD88BE88CF88D88C74
+:100E2000EA14FB040C051D0540F4EE0CFF1C001F2A
+:100E3000111F215030403C872B8720E030E040E0FC
+:100E400050E080E090E0A0E0B0E460E070E0EA1400
+:100E5000FB040C051D0540F0282B392B4A2B5B2B7E
+:100E6000EA18FB080C091D09B695A7959795879573
+:100E7000EE0CFF1C001F111F6F5F7F4F6F3171055C
+:100E800031F7DA01C9018F779070A070B0708034AB
+:100E90009105A105B10561F427FD0AC0E114F10433
+:100EA0000105110529F0205C3F4F4F4F5F4F20781F
+:100EB0002D873E874F87588BBE01675F7F4FCB01E1
+:100EC0000E94BA076896EAE00C948F09ACE0B0E0A3
+:100ED000ECE6F7E00C947B0969837A838B839C832F
+:100EE000CE010196BE016B5F7F4F0E948F088D81FE
+:100EF000823061F1823050F1843021F48E81882378
+:100F000051F12EC02F81388537FD20C06E812F31E1
+:100F100031051CF06623F9F023C08EE190E0821BBE
+:100F2000930B29853A854B855C8504C0569547957A
+:100F3000379527958A95D2F76623B1F0509540955D
+:100F4000309521953F4F4F4F5F4F0EC020E030E06E
+:100F500040E050E009C02FEF3FEF4FEF5FE704C0E4
+:100F600020E030E040E050E8B901CA012C96E2E010
+:100F70000C949709DF92EF92FF920F931F93FC015D
+:100F8000E480F58006811781D1808081823048F429
+:100F900080E090E0A0E1B0E0E82AF92A0A2B1B2BC0
+:100FA000A5C0843009F49FC0823021F4EE24FF24D0
+:100FB000870105C0E114F1040105110519F4E0E011
+:100FC000F0E096C0628173819FEF623879070CF080
+:100FD0005BC022E83FEF261B370B2A3131052CF08E
+:100FE00020E030E040E050E02AC0B801A701022E26
+:100FF00004C076956795579547950A94D2F781E096
+:1010000090E0A0E0B0E004C0880F991FAA1FBB1FAA
+:101010002A95D2F70197A109B1098E219F21A0231A
+:10102000B1230097A105B10521F081E090E0A0E097
+:10103000B0E09A01AB01282B392B4A2B5B2BDA014C
+:10104000C9018F779070A070B07080349105A105B0
+:10105000B10539F427FF09C0205C3F4F4F4F5F4F68
+:1010600004C0215C3F4F4F4F5F4FE0E0F0E0203085
+:10107000A0E03A07A0E04A07A0E45A0710F0E1E038
+:10108000F0E079018A0127C06038710564F5FB0141
+:10109000E158FF4FD801C7018F779070A070B070F2
+:1010A00080349105A105B10539F4E7FE0DC080E457
+:1010B00090E0A0E0B0E004C08FE390E0A0E0B0E0FA
+:1010C000E80EF91E0A1F1B1F17FF05C0169507958E
+:1010D000F794E794319687E016950795F794E7948F
+:1010E0008A95D1F705C0EE24FF248701EFEFF0E0E9
+:1010F0006E2F679566276795902F9F77D794DD248D
+:10110000D7948E2F8695492F462B582F5D29B701EE
+:10111000CA011F910F91FF90EF90DF900895FC019D
+:10112000DB01408151812281622F6F7770E0221FA5
+:101130002227221F9381892F880F822B282F30E0AE
+:10114000991F9927991F11969C9311972115310585
+:10115000A9F5411551056105710511F482E037C00B
+:1011600082E89FEF13969C938E9312979A01AB019E
+:1011700067E0220F331F441F551F6A95D1F783E0A4
+:101180008C930DC0220F331F441F551F12968D9153
+:101190009C911397019713969C938E9312972030EE
+:1011A00080E0380780E0480780E4580758F3149639
+:1011B0002D933D934D935C93179708952F3F3105E1
+:1011C00079F4411551056105710519F484E08C939A
+:1011D000089564FF03C081E08C9312C01C9210C07C
+:1011E0002F57304013963C932E93129783E08C93A5
+:1011F00087E0440F551F661F771F8A95D1F77064EB
+:1012000014964D935D936D937C931797089597FB78
+:10121000092E07260AD077FD04D049D006D0002039
+:101220001AF4709561957F4F0895F6F79095819522
+:101230009F4F0895A1E21A2EAA1BBB1BFD010DC0F2
+:10124000AA1FBB1FEE1FFF1FA217B307E407F50776
+:1012500020F0A21BB30BE40BF50B661F771F881F52
+:10126000991F1A9469F760957095809590959B01E8
+:10127000AC01BD01CF01089597FB092E05260ED0C4
+:1012800057FD04D0D7DF0AD0001C38F450954095A4
+:10129000309521953F4F4F4F5F4F0895F6F790954A
+:1012A0008095709561957F4F8F4F9F4F0895AA1B32
+:1012B000BB1B51E107C0AA1FBB1FA617B70710F041
+:1012C000A61BB70B881F991F5A95A9F78095909573
+:1012D000BC01CD0108952F923F924F925F926F9281
+:1012E0007F928F929F92AF92BF92CF92DF92EF92B6
+:1012F000FF920F931F93CF93DF93CDB7DEB7CA1B37
+:10130000DB0B0FB6F894DEBF0FBECDBF09942A8861
+:10131000398848885F846E847D848C849B84AA8409
+:10132000B984C884DF80EE80FD800C811B81AA8196
+:10133000B981CE0FD11D0FB6F894DEBF0FBECDBF61
+:10134000ED010895EE0FFF1F0590F491E02D099433
+:101350009F9305D00F9007FCEE5F28C0CEC03FD012
+:10136000E8F3E894E0E0BB279F57F0F02AED3FE078
+:1013700049EC06C0EE0FBB0F661F771F881F28F0D1
+:10138000B23A62077307840728F0B25A620B730BF4
+:10139000840BE3959A9572F7803830F49A95BB0FD9
+:1013A000661F771F881FD2F790489BC0EF93E0FF1E
+:1013B00006C0A2EA2AED3FE049EC5FEB37D0BFD090
+:1013C0000F90039401FC9058E8E6F0E099C057FDB7
+:1013D0009058440F551F59F05F3F71F04795880FA3
+:1013E00097FB991F61F09F3F79F08795089512163A
+:1013F00013061406551FF2CF4695F1DF08C01616E6
+:1014000017061806991FF1CF869571056105089496
+:10141000089587D030F08CD020F031F49F3F11F444
+:101420001EF46BC00EF4E095E7FB53C0E92FCFDF4D
+:1014300080F3BA17620773078407950718F071F4F1
+:101440009EF58EC00EF4E0950B2EBA2FA02D0B0149
+:10145000B90190010C01CA01A0011124FF27591BF9
+:1014600099F0593F50F4503E68F11A16F040A22FFF
+:10147000232F342F4427585FF3CF46953795279570
+:10148000A795F0405395C9F77EF41F16BA0B620B6F
+:10149000730B840BBAF09150A1F0FF0FBB1F661FB6
+:1014A000771F881FC2F70EC0BA0F621F731F841FF9
+:1014B00048F4879577956795B795F7959E3F08F01F
+:1014C000B3CF9395880F08F09927EE0F97958795DE
+:1014D000089597F99F6780E870E060E008959F3F66
+:1014E00031F0915020F4879577956795B795880FDF
+:1014F000911D9695879597F908959FEF80EC089533
+:101500009F938F937F936F93FF93EF939B01AC0116
+:1015100037DBEF91FF912BD02F913F914F915F914E
+:101520002FCB00240A9416161706180609060895EC
+:1015300000240A9412161306140605060895092EAF
+:101540000394000C11F4882352F0BB0F40F4BF2B1E
+:1015500011F460FF04C06F5F7F4F8F4F9F4F08955E
+:10156000E894BB2766277727CB0197F90895DF9387
+:10157000CF931F930F93FF92EF92DF927B018C0129
+:10158000689405C0DA2EEF0121D0FE01E894A59100
+:101590002591359145915591AEF3EF0147DFFE015D
+:1015A0009701A801DA9479F7DF90EF90FF900F91FF
+:1015B0001F91CF91DF910895B4DF28F0B9DF18F0C3
+:1015C000952309F086CF99CF1124CBCF00DFA0F36C
+:1015D000959FD1F3950F50E0551F629FF001729FC8
+:1015E000BB27F00DB11D639FAA27F00DB11DAA1FE7
+:1015F000649F6627B00DA11D661F829F2227B00D34
+:10160000A11D621F739FB00DA11D621F839FA00DBE
+:10161000611D221F749F3327A00D611D231F849F0E
+:10162000600D211D822F762F6A2F11249F57504065
+:101630008AF0E1F088234AF0EE0FFF1FBB1F661F00
+:10164000771F881F91505040A9F79E3F510570F0B9
+:1016500040CF87CF5F3FECF3983EDCF386957795DC
+:101660006795B795F795E7959F5FC1F7FE2B880FB4
+:0E167000911D9695879597F90895F894FFCFF0
+:10167E0057656C636F6D6520746F20656C65637460
+:10168E0069630000000000BE0100000000000000C1
+:02169E0000004A
+:00000001FF
diff --git a/electic_streaming2560/bin/Debug/electic_streaming.elf.lss b/electic_streaming2560/bin/Debug/electic_streaming.elf.lss new file mode 100644 index 0000000..922bd60 --- /dev/null +++ b/electic_streaming2560/bin/Debug/electic_streaming.elf.lss @@ -0,0 +1,3038 @@ + +bin/Debug/electic_streaming.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000022 00800100 0000167e 00001712 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 0000167e 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 0000028a 00800122 00800122 00001734 2**0 + ALLOC + 3 .stab 000023d0 00000000 00000000 00001734 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00001c16 00000000 00000000 00003b04 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_aranges 00000060 00000000 00000000 0000571a 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_pubnames 000002a7 00000000 00000000 0000577a 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_info 00000d0b 00000000 00000000 00005a21 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_abbrev 000003f7 00000000 00000000 0000672c 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_line 00000689 00000000 00000000 00006b23 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_frame 00000210 00000000 00000000 000071ac 2**2 + CONTENTS, READONLY, DEBUGGING + 11 .debug_str 00000420 00000000 00000000 000073bc 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_loc 0000075a 00000000 00000000 000077dc 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 44 00 jmp 0x88 ; 0x88 <__ctors_end> + 4: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 8: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 10: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 14: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 18: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 1c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 20: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 24: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 28: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 2c: 0c 94 6e 00 jmp 0xdc ; 0xdc <__vector_11> + 30: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 34: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 38: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 3c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 40: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 44: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 48: 0c 94 d9 03 jmp 0x7b2 ; 0x7b2 <__vector_18> + 4c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 50: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 54: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 58: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 5c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 60: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 64: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 68: 05 a8 ldd r0, Z+53 ; 0x35 + 6a: 4c cd rjmp .-1384 ; 0xfffffb04 <__eeprom_end+0xff7efb04> + 6c: b2 d4 rcall .+2404 ; 0x9d2 <__stack+0xd3> + 6e: 4e b9 out 0x0e, r20 ; 14 + 70: 38 36 cpi r19, 0x68 ; 104 + 72: a9 02 muls r26, r25 + 74: 0c 50 subi r16, 0x0C ; 12 + 76: b9 91 ld r27, Y+ + 78: 86 88 ldd r8, Z+22 ; 0x16 + 7a: 08 3c cpi r16, 0xC8 ; 200 + 7c: a6 aa std Z+54, r10 ; 0x36 + 7e: aa 2a or r10, r26 + 80: be 00 .word 0x00be ; ???? + 82: 00 00 nop + 84: 80 3f cpi r24, 0xF0 ; 240 + +00000086 <__ctors_start>: + 86: b7 01 movw r22, r14 + +00000088 <__ctors_end>: + 88: 11 24 eor r1, r1 + 8a: 1f be out 0x3f, r1 ; 63 + 8c: cf ef ldi r28, 0xFF ; 255 + 8e: d8 e0 ldi r29, 0x08 ; 8 + 90: de bf out 0x3e, r29 ; 62 + 92: cd bf out 0x3d, r28 ; 61 + +00000094 <__do_copy_data>: + 94: 11 e0 ldi r17, 0x01 ; 1 + 96: a0 e0 ldi r26, 0x00 ; 0 + 98: b1 e0 ldi r27, 0x01 ; 1 + 9a: ee e7 ldi r30, 0x7E ; 126 + 9c: f6 e1 ldi r31, 0x16 ; 22 + 9e: 02 c0 rjmp .+4 ; 0xa4 <.do_copy_data_start> + +000000a0 <.do_copy_data_loop>: + a0: 05 90 lpm r0, Z+ + a2: 0d 92 st X+, r0 + +000000a4 <.do_copy_data_start>: + a4: a2 32 cpi r26, 0x22 ; 34 + a6: b1 07 cpc r27, r17 + a8: d9 f7 brne .-10 ; 0xa0 <.do_copy_data_loop> + +000000aa <__do_clear_bss>: + aa: 13 e0 ldi r17, 0x03 ; 3 + ac: a2 e2 ldi r26, 0x22 ; 34 + ae: b1 e0 ldi r27, 0x01 ; 1 + b0: 01 c0 rjmp .+2 ; 0xb4 <.do_clear_bss_start> + +000000b2 <.do_clear_bss_loop>: + b2: 1d 92 st X+, r1 + +000000b4 <.do_clear_bss_start>: + b4: ac 3a cpi r26, 0xAC ; 172 + b6: b1 07 cpc r27, r17 + b8: e1 f7 brne .-8 ; 0xb2 <.do_clear_bss_loop> + +000000ba <__do_global_ctors>: + ba: 10 e0 ldi r17, 0x00 ; 0 + bc: c8 e8 ldi r28, 0x88 ; 136 + be: d0 e0 ldi r29, 0x00 ; 0 + c0: 04 c0 rjmp .+8 ; 0xca <.do_global_ctors_start> + +000000c2 <.do_global_ctors_loop>: + c2: 22 97 sbiw r28, 0x02 ; 2 + c4: fe 01 movw r30, r28 + c6: 0e 94 a4 09 call 0x1348 ; 0x1348 <__tablejump__> + +000000ca <.do_global_ctors_start>: + ca: c6 38 cpi r28, 0x86 ; 134 + cc: d1 07 cpc r29, r17 + ce: c9 f7 brne .-14 ; 0xc2 <.do_global_ctors_loop> + d0: 0e 94 5c 01 call 0x2b8 ; 0x2b8 <main> + d4: 0c 94 3d 0b jmp 0x167a ; 0x167a <_exit> + +000000d8 <__bad_interrupt>: + d8: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000dc <__vector_11>: + } + } + } +} + +ISR(TIMER1_COMPA_vect) + dc: 1f 92 push r1 + de: 0f 92 push r0 + e0: 0f b6 in r0, 0x3f ; 63 + e2: 0f 92 push r0 + e4: 11 24 eor r1, r1 + e6: 2f 93 push r18 + e8: 3f 93 push r19 + ea: 4f 93 push r20 + ec: 5f 93 push r21 + ee: 6f 93 push r22 + f0: 7f 93 push r23 + f2: 8f 93 push r24 + f4: 9f 93 push r25 + f6: af 93 push r26 + f8: bf 93 push r27 + fa: ef 93 push r30 + fc: ff 93 push r31 + fe: df 93 push r29 + 100: cf 93 push r28 + 102: 00 d0 rcall .+0 ; 0x104 <__vector_11+0x28> + 104: cd b7 in r28, 0x3d ; 61 + 106: de b7 in r29, 0x3e ; 62 +{ + //if (enabled) + PORTB ^= (1 << 5); + 108: a5 e2 ldi r26, 0x25 ; 37 + 10a: b0 e0 ldi r27, 0x00 ; 0 + 10c: e5 e2 ldi r30, 0x25 ; 37 + 10e: f0 e0 ldi r31, 0x00 ; 0 + 110: 90 81 ld r25, Z + 112: 80 e2 ldi r24, 0x20 ; 32 + 114: 89 27 eor r24, r25 + 116: 8c 93 st X, r24 + for (int i=0;i<PACKETSIZE;i++) { + 118: 1a 82 std Y+2, r1 ; 0x02 + 11a: 19 82 std Y+1, r1 ; 0x01 + 11c: 20 c0 rjmp .+64 ; 0x15e <__vector_11+0x82> + Serial.write(dd[sample]); + 11e: 80 91 24 03 lds r24, 0x0324 + 122: 90 91 25 03 lds r25, 0x0325 + 126: fc 01 movw r30, r24 + 128: ee 5d subi r30, 0xDE ; 222 + 12a: fe 4f sbci r31, 0xFE ; 254 + 12c: 20 81 ld r18, Z + 12e: 86 e2 ldi r24, 0x26 ; 38 + 130: 93 e0 ldi r25, 0x03 ; 3 + 132: 62 2f mov r22, r18 + 134: 0e 94 be 01 call 0x37c ; 0x37c <_ZN14HardwareSerial5writeEh> + sample=(sample+1)%SAMPLES; + 138: 80 91 24 03 lds r24, 0x0324 + 13c: 90 91 25 03 lds r25, 0x0325 + 140: 01 96 adiw r24, 0x01 ; 1 + 142: 20 e0 ldi r18, 0x00 ; 0 + 144: 32 e0 ldi r19, 0x02 ; 2 + 146: b9 01 movw r22, r18 + 148: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 14c: 90 93 25 03 sts 0x0325, r25 + 150: 80 93 24 03 sts 0x0324, r24 + +ISR(TIMER1_COMPA_vect) +{ + //if (enabled) + PORTB ^= (1 << 5); + for (int i=0;i<PACKETSIZE;i++) { + 154: 89 81 ldd r24, Y+1 ; 0x01 + 156: 9a 81 ldd r25, Y+2 ; 0x02 + 158: 01 96 adiw r24, 0x01 ; 1 + 15a: 9a 83 std Y+2, r25 ; 0x02 + 15c: 89 83 std Y+1, r24 ; 0x01 + 15e: 89 81 ldd r24, Y+1 ; 0x01 + 160: 9a 81 ldd r25, Y+2 ; 0x02 + 162: 21 e0 ldi r18, 0x01 ; 1 + 164: 80 34 cpi r24, 0x40 ; 64 + 166: 92 07 cpc r25, r18 + 168: d4 f2 brlt .-76 ; 0x11e <__vector_11+0x42> + Serial.write(dd[sample]); + sample=(sample+1)%SAMPLES; + } + Serial.write((byte)0); + 16a: 86 e2 ldi r24, 0x26 ; 38 + 16c: 93 e0 ldi r25, 0x03 ; 3 + 16e: 60 e0 ldi r22, 0x00 ; 0 + 170: 0e 94 be 01 call 0x37c ; 0x37c <_ZN14HardwareSerial5writeEh> +} + 174: 0f 90 pop r0 + 176: 0f 90 pop r0 + 178: cf 91 pop r28 + 17a: df 91 pop r29 + 17c: ff 91 pop r31 + 17e: ef 91 pop r30 + 180: bf 91 pop r27 + 182: af 91 pop r26 + 184: 9f 91 pop r25 + 186: 8f 91 pop r24 + 188: 7f 91 pop r23 + 18a: 6f 91 pop r22 + 18c: 5f 91 pop r21 + 18e: 4f 91 pop r20 + 190: 3f 91 pop r19 + 192: 2f 91 pop r18 + 194: 0f 90 pop r0 + 196: 0f be out 0x3f, r0 ; 63 + 198: 0f 90 pop r0 + 19a: 1f 90 pop r1 + 19c: 18 95 reti + +0000019e <_Z13fill_sinewavev>: + +byte dd[SAMPLES]; // ram buffer +int loopCount=0; +int sample=0; + +void fill_sinewave(){ + 19e: df 93 push r29 + 1a0: cf 93 push r28 + 1a2: cd b7 in r28, 0x3d ; 61 + 1a4: de b7 in r29, 0x3e ; 62 + 1a6: 64 97 sbiw r28, 0x14 ; 20 + 1a8: 0f b6 in r0, 0x3f ; 63 + 1aa: f8 94 cli + 1ac: de bf out 0x3e, r29 ; 62 + 1ae: 0f be out 0x3f, r0 ; 63 + 1b0: cd bf out 0x3d, r28 ; 61 + sample data to stream + the vital thing is that its possible to distinguish the end of a packet + + here the data is in the range 1-255 and a 0 denotes the end of the packet + */ + float pi = 3.141592; + 1b2: 88 ed ldi r24, 0xD8 ; 216 + 1b4: 9f e0 ldi r25, 0x0F ; 15 + 1b6: a9 e4 ldi r26, 0x49 ; 73 + 1b8: b0 e4 ldi r27, 0x40 ; 64 + 1ba: 89 8b std Y+17, r24 ; 0x11 + 1bc: 9a 8b std Y+18, r25 ; 0x12 + 1be: ab 8b std Y+19, r26 ; 0x13 + 1c0: bc 8b std Y+20, r27 ; 0x14 + float fcnt=0; + 1c2: 80 e0 ldi r24, 0x00 ; 0 + 1c4: 90 e0 ldi r25, 0x00 ; 0 + 1c6: a0 e0 ldi r26, 0x00 ; 0 + 1c8: b0 e0 ldi r27, 0x00 ; 0 + 1ca: 8d 87 std Y+13, r24 ; 0x0d + 1cc: 9e 87 std Y+14, r25 ; 0x0e + 1ce: af 87 std Y+15, r26 ; 0x0f + 1d0: b8 8b std Y+16, r27 ; 0x10 + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + 1d2: 29 89 ldd r18, Y+17 ; 0x11 + 1d4: 3a 89 ldd r19, Y+18 ; 0x12 + 1d6: 4b 89 ldd r20, Y+19 ; 0x13 + 1d8: 5c 89 ldd r21, Y+20 ; 0x14 + 1da: ca 01 movw r24, r20 + 1dc: b9 01 movw r22, r18 + 1de: 0e 94 93 05 call 0xb26 ; 0xb26 <__addsf3> + 1e2: dc 01 movw r26, r24 + 1e4: cb 01 movw r24, r22 + 1e6: bc 01 movw r22, r24 + 1e8: cd 01 movw r24, r26 + 1ea: 20 e0 ldi r18, 0x00 ; 0 + 1ec: 30 e0 ldi r19, 0x00 ; 0 + 1ee: 40 e0 ldi r20, 0x00 ; 0 + 1f0: 54 e4 ldi r21, 0x44 ; 68 + 1f2: 0e 94 ba 06 call 0xd74 ; 0xd74 <__divsf3> + 1f6: dc 01 movw r26, r24 + 1f8: cb 01 movw r24, r22 + 1fa: 8d 83 std Y+5, r24 ; 0x05 + 1fc: 9e 83 std Y+6, r25 ; 0x06 + 1fe: af 83 std Y+7, r26 ; 0x07 + 200: b8 87 std Y+8, r27 ; 0x08 + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + 202: 1a 82 std Y+2, r1 ; 0x02 + 204: 19 82 std Y+1, r1 ; 0x01 + 206: 48 c0 rjmp .+144 ; 0x298 <_Z13fill_sinewavev+0xfa> + fd= 127*sin(fcnt); // fundamental tone + 208: 8d 85 ldd r24, Y+13 ; 0x0d + 20a: 9e 85 ldd r25, Y+14 ; 0x0e + 20c: af 85 ldd r26, Y+15 ; 0x0f + 20e: b8 89 ldd r27, Y+16 ; 0x10 + 210: bc 01 movw r22, r24 + 212: cd 01 movw r24, r26 + 214: 0e 94 a8 09 call 0x1350 ; 0x1350 <sin> + 218: dc 01 movw r26, r24 + 21a: cb 01 movw r24, r22 + 21c: bc 01 movw r22, r24 + 21e: cd 01 movw r24, r26 + 220: 20 e0 ldi r18, 0x00 ; 0 + 222: 30 e0 ldi r19, 0x00 ; 0 + 224: 4e ef ldi r20, 0xFE ; 254 + 226: 52 e4 ldi r21, 0x42 ; 66 + 228: 0e 94 c0 05 call 0xb80 ; 0xb80 <__mulsf3> + 22c: dc 01 movw r26, r24 + 22e: cb 01 movw r24, r22 + 230: 89 87 std Y+9, r24 ; 0x09 + 232: 9a 87 std Y+10, r25 ; 0x0a + 234: ab 87 std Y+11, r26 ; 0x0b + 236: bc 87 std Y+12, r27 ; 0x0c + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + 238: 6d 85 ldd r22, Y+13 ; 0x0d + 23a: 7e 85 ldd r23, Y+14 ; 0x0e + 23c: 8f 85 ldd r24, Y+15 ; 0x0f + 23e: 98 89 ldd r25, Y+16 ; 0x10 + 240: 2d 81 ldd r18, Y+5 ; 0x05 + 242: 3e 81 ldd r19, Y+6 ; 0x06 + 244: 4f 81 ldd r20, Y+7 ; 0x07 + 246: 58 85 ldd r21, Y+8 ; 0x08 + 248: 0e 94 93 05 call 0xb26 ; 0xb26 <__addsf3> + 24c: dc 01 movw r26, r24 + 24e: cb 01 movw r24, r22 + 250: 8d 87 std Y+13, r24 ; 0x0d + 252: 9e 87 std Y+14, r25 ; 0x0e + 254: af 87 std Y+15, r26 ; 0x0f + 256: b8 8b std Y+16, r27 ; 0x10 + bb=128+fd; // add dc offset to sinewawe + 258: 69 85 ldd r22, Y+9 ; 0x09 + 25a: 7a 85 ldd r23, Y+10 ; 0x0a + 25c: 8b 85 ldd r24, Y+11 ; 0x0b + 25e: 9c 85 ldd r25, Y+12 ; 0x0c + 260: 20 e0 ldi r18, 0x00 ; 0 + 262: 30 e0 ldi r19, 0x00 ; 0 + 264: 40 e0 ldi r20, 0x00 ; 0 + 266: 53 e4 ldi r21, 0x43 ; 67 + 268: 0e 94 93 05 call 0xb26 ; 0xb26 <__addsf3> + 26c: dc 01 movw r26, r24 + 26e: cb 01 movw r24, r22 + 270: bc 01 movw r22, r24 + 272: cd 01 movw r24, r26 + 274: 0e 94 66 07 call 0xecc ; 0xecc <__fixsfsi> + 278: dc 01 movw r26, r24 + 27a: cb 01 movw r24, r22 + 27c: 9c 83 std Y+4, r25 ; 0x04 + 27e: 8b 83 std Y+3, r24 ; 0x03 + dd[i]=bb; // write value into array + 280: 89 81 ldd r24, Y+1 ; 0x01 + 282: 9a 81 ldd r25, Y+2 ; 0x02 + 284: 2b 81 ldd r18, Y+3 ; 0x03 + 286: fc 01 movw r30, r24 + 288: ee 5d subi r30, 0xDE ; 222 + 28a: fe 4f sbci r31, 0xFE ; 254 + 28c: 20 83 st Z, r18 + float pi = 3.141592; + float fcnt=0; + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + 28e: 89 81 ldd r24, Y+1 ; 0x01 + 290: 9a 81 ldd r25, Y+2 ; 0x02 + 292: 01 96 adiw r24, 0x01 ; 1 + 294: 9a 83 std Y+2, r25 ; 0x02 + 296: 89 83 std Y+1, r24 ; 0x01 + 298: 89 81 ldd r24, Y+1 ; 0x01 + 29a: 9a 81 ldd r25, Y+2 ; 0x02 + 29c: 22 e0 ldi r18, 0x02 ; 2 + 29e: 80 30 cpi r24, 0x00 ; 0 + 2a0: 92 07 cpc r25, r18 + 2a2: 0c f4 brge .+2 ; 0x2a6 <_Z13fill_sinewavev+0x108> + 2a4: b1 cf rjmp .-158 ; 0x208 <_Z13fill_sinewavev+0x6a> + fd= 127*sin(fcnt); // fundamental tone + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + bb=128+fd; // add dc offset to sinewawe + dd[i]=bb; // write value into array + } +} + 2a6: 64 96 adiw r28, 0x14 ; 20 + 2a8: 0f b6 in r0, 0x3f ; 63 + 2aa: f8 94 cli + 2ac: de bf out 0x3e, r29 ; 62 + 2ae: 0f be out 0x3f, r0 ; 63 + 2b0: cd bf out 0x3d, r28 ; 61 + 2b2: cf 91 pop r28 + 2b4: df 91 pop r29 + 2b6: 08 95 ret + +000002b8 <main>: + +int main(){ + 2b8: df 93 push r29 + 2ba: cf 93 push r28 + 2bc: 00 d0 rcall .+0 ; 0x2be <main+0x6> + 2be: cd b7 in r28, 0x3d ; 61 + 2c0: de b7 in r29, 0x3e ; 62 + + //init(); -- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + fill_sinewave(); + 2c2: 0e 94 cf 00 call 0x19e ; 0x19e <_Z13fill_sinewavev> + Serial.begin(115200); + 2c6: 86 e2 ldi r24, 0x26 ; 38 + 2c8: 93 e0 ldi r25, 0x03 ; 3 + 2ca: 40 e0 ldi r20, 0x00 ; 0 + 2cc: 52 ec ldi r21, 0xC2 ; 194 + 2ce: 61 e0 ldi r22, 0x01 ; 1 + 2d0: 70 e0 ldi r23, 0x00 ; 0 + 2d2: 0e 94 cb 01 call 0x396 ; 0x396 <_ZN14HardwareSerial5beginEl> + + DDRB |= (1 << 5); // port B bit 6 = arduino pin 13 + 2d6: a4 e2 ldi r26, 0x24 ; 36 + 2d8: b0 e0 ldi r27, 0x00 ; 0 + 2da: e4 e2 ldi r30, 0x24 ; 36 + 2dc: f0 e0 ldi r31, 0x00 ; 0 + 2de: 80 81 ld r24, Z + 2e0: 80 62 ori r24, 0x20 ; 32 + 2e2: 8c 93 st X, r24 + PORTB = (1 << 5); //turn on to start + 2e4: e5 e2 ldi r30, 0x25 ; 37 + 2e6: f0 e0 ldi r31, 0x00 ; 0 + 2e8: 80 e2 ldi r24, 0x20 ; 32 + 2ea: 80 83 st Z, r24 + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + 2ec: a1 e8 ldi r26, 0x81 ; 129 + 2ee: b0 e0 ldi r27, 0x00 ; 0 + 2f0: e1 e8 ldi r30, 0x81 ; 129 + 2f2: f0 e0 ldi r31, 0x00 ; 0 + 2f4: 80 81 ld r24, Z + 2f6: 88 60 ori r24, 0x08 ; 8 + 2f8: 8c 93 st X, r24 + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + 2fa: af e6 ldi r26, 0x6F ; 111 + 2fc: b0 e0 ldi r27, 0x00 ; 0 + 2fe: ef e6 ldi r30, 0x6F ; 111 + 300: f0 e0 ldi r31, 0x00 ; 0 + 302: 80 81 ld r24, Z + 304: 82 60 ori r24, 0x02 ; 2 + 306: 8c 93 st X, r24 + OCR1A = 390; // Set CTC compare value: final speed = CPU clocks / prescaler / CTC 15625=1Hz + 308: e8 e8 ldi r30, 0x88 ; 136 + 30a: f0 e0 ldi r31, 0x00 ; 0 + 30c: 86 e8 ldi r24, 0x86 ; 134 + 30e: 91 e0 ldi r25, 0x01 ; 1 + 310: 91 83 std Z+1, r25 ; 0x01 + 312: 80 83 st Z, r24 + sei(); // Enable global interrupts + 314: 78 94 sei + + while(1) { + if (Serial.available() > 0) { + 316: 86 e2 ldi r24, 0x26 ; 38 + 318: 93 e0 ldi r25, 0x03 ; 3 + 31a: 0e 94 c8 01 call 0x390 ; 0x390 <_ZN14HardwareSerial9availableEv> + 31e: 1a 82 std Y+2, r1 ; 0x02 + 320: 18 16 cp r1, r24 + 322: 19 06 cpc r1, r25 + 324: 14 f4 brge .+4 ; 0x32a <main+0x72> + 326: 81 e0 ldi r24, 0x01 ; 1 + 328: 8a 83 std Y+2, r24 ; 0x02 + 32a: 8a 81 ldd r24, Y+2 ; 0x02 + 32c: 88 23 and r24, r24 + 32e: 99 f3 breq .-26 ; 0x316 <main+0x5e> + PORTB ^= (1 << 5); + 330: a5 e2 ldi r26, 0x25 ; 37 + 332: b0 e0 ldi r27, 0x00 ; 0 + 334: e5 e2 ldi r30, 0x25 ; 37 + 336: f0 e0 ldi r31, 0x00 ; 0 + 338: 90 81 ld r25, Z + 33a: 80 e2 ldi r24, 0x20 ; 32 + 33c: 89 27 eor r24, r25 + 33e: 8c 93 st X, r24 + byte in=Serial.read(); + 340: 86 e2 ldi r24, 0x26 ; 38 + 342: 93 e0 ldi r25, 0x03 ; 3 + 344: 0e 94 c5 01 call 0x38a ; 0x38a <_ZN14HardwareSerial4readEv> + 348: 89 83 std Y+1, r24 ; 0x01 + if (in=='a') { + 34a: 89 81 ldd r24, Y+1 ; 0x01 + 34c: 81 36 cpi r24, 0x61 ; 97 + 34e: 19 f7 brne .-58 ; 0x316 <main+0x5e> + Serial.println("Welcome to electic"); + 350: 86 e2 ldi r24, 0x26 ; 38 + 352: 93 e0 ldi r25, 0x03 ; 3 + 354: 20 e0 ldi r18, 0x00 ; 0 + 356: 31 e0 ldi r19, 0x01 ; 1 + 358: b9 01 movw r22, r18 + 35a: 0e 94 1f 02 call 0x43e ; 0x43e <_ZN5Print7printlnEPKc> + TCCR1B |= ((1<<CS10)|(1 << CS12)); // Set up timer at Fcpu/1024 + 35e: a1 e8 ldi r26, 0x81 ; 129 + 360: b0 e0 ldi r27, 0x00 ; 0 + 362: e1 e8 ldi r30, 0x81 ; 129 + 364: f0 e0 ldi r31, 0x00 ; 0 + 366: 80 81 ld r24, Z + 368: 85 60 ori r24, 0x05 ; 5 + 36a: 8c 93 st X, r24 + 36c: d4 cf rjmp .-88 ; 0x316 <main+0x5e> + +0000036e <_GLOBAL__I__ZN14HardwareSerial5beginEl>: + 36e: 87 e1 ldi r24, 0x17 ; 23 + 370: 91 e0 ldi r25, 0x01 ; 1 + 372: 90 93 27 03 sts 0x0327, r25 + 376: 80 93 26 03 sts 0x0326, r24 + 37a: 08 95 ret + +0000037c <_ZN14HardwareSerial5writeEh>: + 37c: 86 2f mov r24, r22 + 37e: 0e 94 98 03 call 0x730 ; 0x730 <serialWrite> + 382: 08 95 ret + +00000384 <_ZN14HardwareSerial5flushEv>: + 384: 0e 94 d0 03 call 0x7a0 ; 0x7a0 <serialFlush> + 388: 08 95 ret + +0000038a <_ZN14HardwareSerial4readEv>: + 38a: 0e 94 b1 03 call 0x762 ; 0x762 <serialRead> + 38e: 08 95 ret + +00000390 <_ZN14HardwareSerial9availableEv>: + 390: 0e 94 a0 03 call 0x740 ; 0x740 <serialAvailable> + 394: 08 95 ret + +00000396 <_ZN14HardwareSerial5beginEl>: + 396: cb 01 movw r24, r22 + 398: ba 01 movw r22, r20 + 39a: 0e 94 5f 03 call 0x6be ; 0x6be <beginSerial> + 39e: 08 95 ret + +000003a0 <_ZN5Print5printEh>: + 3a0: dc 01 movw r26, r24 + 3a2: ed 91 ld r30, X+ + 3a4: fc 91 ld r31, X + 3a6: 01 90 ld r0, Z+ + 3a8: f0 81 ld r31, Z + 3aa: e0 2d mov r30, r0 + 3ac: 09 95 icall + 3ae: 08 95 ret + +000003b0 <_ZN5Print5printEc>: + 3b0: dc 01 movw r26, r24 + 3b2: ed 91 ld r30, X+ + 3b4: fc 91 ld r31, X + 3b6: 01 90 ld r0, Z+ + 3b8: f0 81 ld r31, Z + 3ba: e0 2d mov r30, r0 + 3bc: 09 95 icall + 3be: 08 95 ret + +000003c0 <_ZN5Print5printEPKc>: + 3c0: 0f 93 push r16 + 3c2: 1f 93 push r17 + 3c4: cf 93 push r28 + 3c6: df 93 push r29 + 3c8: 8c 01 movw r16, r24 + 3ca: eb 01 movw r28, r22 + 3cc: 09 c0 rjmp .+18 ; 0x3e0 <_ZN5Print5printEPKc+0x20> + 3ce: 21 96 adiw r28, 0x01 ; 1 + 3d0: d8 01 movw r26, r16 + 3d2: ed 91 ld r30, X+ + 3d4: fc 91 ld r31, X + 3d6: 01 90 ld r0, Z+ + 3d8: f0 81 ld r31, Z + 3da: e0 2d mov r30, r0 + 3dc: c8 01 movw r24, r16 + 3de: 09 95 icall + 3e0: 68 81 ld r22, Y + 3e2: 66 23 and r22, r22 + 3e4: a1 f7 brne .-24 ; 0x3ce <_ZN5Print5printEPKc+0xe> + 3e6: df 91 pop r29 + 3e8: cf 91 pop r28 + 3ea: 1f 91 pop r17 + 3ec: 0f 91 pop r16 + 3ee: 08 95 ret + +000003f0 <_ZN5Print7printlnEv>: + 3f0: 0f 93 push r16 + 3f2: 1f 93 push r17 + 3f4: 8c 01 movw r16, r24 + 3f6: dc 01 movw r26, r24 + 3f8: ed 91 ld r30, X+ + 3fa: fc 91 ld r31, X + 3fc: 01 90 ld r0, Z+ + 3fe: f0 81 ld r31, Z + 400: e0 2d mov r30, r0 + 402: 6d e0 ldi r22, 0x0D ; 13 + 404: 09 95 icall + 406: d8 01 movw r26, r16 + 408: ed 91 ld r30, X+ + 40a: fc 91 ld r31, X + 40c: 01 90 ld r0, Z+ + 40e: f0 81 ld r31, Z + 410: e0 2d mov r30, r0 + 412: 6a e0 ldi r22, 0x0A ; 10 + 414: c8 01 movw r24, r16 + 416: 09 95 icall + 418: 1f 91 pop r17 + 41a: 0f 91 pop r16 + 41c: 08 95 ret + +0000041e <_ZN5Print7printlnEc>: + 41e: 0f 93 push r16 + 420: 1f 93 push r17 + 422: 8c 01 movw r16, r24 + 424: dc 01 movw r26, r24 + 426: ed 91 ld r30, X+ + 428: fc 91 ld r31, X + 42a: 01 90 ld r0, Z+ + 42c: f0 81 ld r31, Z + 42e: e0 2d mov r30, r0 + 430: 09 95 icall + 432: c8 01 movw r24, r16 + 434: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 438: 1f 91 pop r17 + 43a: 0f 91 pop r16 + 43c: 08 95 ret + +0000043e <_ZN5Print7printlnEPKc>: + 43e: 0f 93 push r16 + 440: 1f 93 push r17 + 442: 8c 01 movw r16, r24 + 444: 0e 94 e0 01 call 0x3c0 ; 0x3c0 <_ZN5Print5printEPKc> + 448: c8 01 movw r24, r16 + 44a: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 44e: 1f 91 pop r17 + 450: 0f 91 pop r16 + 452: 08 95 ret + +00000454 <_ZN5Print7printlnEh>: + 454: 0f 93 push r16 + 456: 1f 93 push r17 + 458: 8c 01 movw r16, r24 + 45a: dc 01 movw r26, r24 + 45c: ed 91 ld r30, X+ + 45e: fc 91 ld r31, X + 460: 01 90 ld r0, Z+ + 462: f0 81 ld r31, Z + 464: e0 2d mov r30, r0 + 466: 09 95 icall + 468: c8 01 movw r24, r16 + 46a: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 46e: 1f 91 pop r17 + 470: 0f 91 pop r16 + 472: 08 95 ret + +00000474 <_ZN5Print11printNumberEmh>: + 474: 2f 92 push r2 + 476: 3f 92 push r3 + 478: 4f 92 push r4 + 47a: 5f 92 push r5 + 47c: 6f 92 push r6 + 47e: 7f 92 push r7 + 480: 8f 92 push r8 + 482: 9f 92 push r9 + 484: af 92 push r10 + 486: bf 92 push r11 + 488: cf 92 push r12 + 48a: df 92 push r13 + 48c: ef 92 push r14 + 48e: ff 92 push r15 + 490: 0f 93 push r16 + 492: 1f 93 push r17 + 494: df 93 push r29 + 496: cf 93 push r28 + 498: cd b7 in r28, 0x3d ; 61 + 49a: de b7 in r29, 0x3e ; 62 + 49c: a0 97 sbiw r28, 0x20 ; 32 + 49e: 0f b6 in r0, 0x3f ; 63 + 4a0: f8 94 cli + 4a2: de bf out 0x3e, r29 ; 62 + 4a4: 0f be out 0x3f, r0 ; 63 + 4a6: cd bf out 0x3d, r28 ; 61 + 4a8: 1c 01 movw r2, r24 + 4aa: 6a 01 movw r12, r20 + 4ac: 7b 01 movw r14, r22 + 4ae: 41 15 cp r20, r1 + 4b0: 51 05 cpc r21, r1 + 4b2: 61 05 cpc r22, r1 + 4b4: 71 05 cpc r23, r1 + 4b6: 49 f4 brne .+18 ; 0x4ca <_ZN5Print11printNumberEmh+0x56> + 4b8: dc 01 movw r26, r24 + 4ba: ed 91 ld r30, X+ + 4bc: fc 91 ld r31, X + 4be: 01 90 ld r0, Z+ + 4c0: f0 81 ld r31, Z + 4c2: e0 2d mov r30, r0 + 4c4: 60 e3 ldi r22, 0x30 ; 48 + 4c6: 09 95 icall + 4c8: 54 c0 rjmp .+168 ; 0x572 <_ZN5Print11printNumberEmh+0xfe> + 4ca: 88 24 eor r8, r8 + 4cc: 99 24 eor r9, r9 + 4ce: 54 01 movw r10, r8 + 4d0: 42 2e mov r4, r18 + 4d2: 55 24 eor r5, r5 + 4d4: 66 24 eor r6, r6 + 4d6: 77 24 eor r7, r7 + 4d8: 01 e0 ldi r16, 0x01 ; 1 + 4da: 10 e0 ldi r17, 0x00 ; 0 + 4dc: 0c 0f add r16, r28 + 4de: 1d 1f adc r17, r29 + 4e0: 08 0d add r16, r8 + 4e2: 19 1d adc r17, r9 + 4e4: c7 01 movw r24, r14 + 4e6: b6 01 movw r22, r12 + 4e8: a3 01 movw r20, r6 + 4ea: 92 01 movw r18, r4 + 4ec: 0e 94 1a 09 call 0x1234 ; 0x1234 <__udivmodsi4> + 4f0: f8 01 movw r30, r16 + 4f2: 60 83 st Z, r22 + 4f4: 08 94 sec + 4f6: 81 1c adc r8, r1 + 4f8: 91 1c adc r9, r1 + 4fa: a1 1c adc r10, r1 + 4fc: b1 1c adc r11, r1 + 4fe: c7 01 movw r24, r14 + 500: b6 01 movw r22, r12 + 502: a3 01 movw r20, r6 + 504: 92 01 movw r18, r4 + 506: 0e 94 1a 09 call 0x1234 ; 0x1234 <__udivmodsi4> + 50a: c9 01 movw r24, r18 + 50c: da 01 movw r26, r20 + 50e: 6c 01 movw r12, r24 + 510: 7d 01 movw r14, r26 + 512: c1 14 cp r12, r1 + 514: d1 04 cpc r13, r1 + 516: e1 04 cpc r14, r1 + 518: f1 04 cpc r15, r1 + 51a: f1 f6 brne .-68 ; 0x4d8 <_ZN5Print11printNumberEmh+0x64> + 51c: 81 e0 ldi r24, 0x01 ; 1 + 51e: e8 2e mov r14, r24 + 520: f1 2c mov r15, r1 + 522: ec 0e add r14, r28 + 524: fd 1e adc r15, r29 + 526: e8 0c add r14, r8 + 528: f9 1c adc r15, r9 + 52a: 3e 01 movw r6, r28 + 52c: 08 94 sec + 52e: 61 1c adc r6, r1 + 530: 71 1c adc r7, r1 + 532: d5 01 movw r26, r10 + 534: c4 01 movw r24, r8 + 536: 01 97 sbiw r24, 0x01 ; 1 + 538: a1 09 sbc r26, r1 + 53a: b1 09 sbc r27, r1 + 53c: 6c 01 movw r12, r24 + 53e: c8 18 sub r12, r8 + 540: d9 08 sbc r13, r9 + 542: 14 c0 rjmp .+40 ; 0x56c <_ZN5Print11printNumberEmh+0xf8> + 544: f6 01 movw r30, r12 + 546: ee 0d add r30, r14 + 548: ff 1d adc r31, r15 + 54a: 60 81 ld r22, Z + 54c: 6a 30 cpi r22, 0x0A ; 10 + 54e: 10 f4 brcc .+4 ; 0x554 <_ZN5Print11printNumberEmh+0xe0> + 550: 60 5d subi r22, 0xD0 ; 208 + 552: 01 c0 rjmp .+2 ; 0x556 <_ZN5Print11printNumberEmh+0xe2> + 554: 69 5c subi r22, 0xC9 ; 201 + 556: d1 01 movw r26, r2 + 558: ed 91 ld r30, X+ + 55a: fc 91 ld r31, X + 55c: 01 90 ld r0, Z+ + 55e: f0 81 ld r31, Z + 560: e0 2d mov r30, r0 + 562: c1 01 movw r24, r2 + 564: 09 95 icall + 566: 08 94 sec + 568: e1 08 sbc r14, r1 + 56a: f1 08 sbc r15, r1 + 56c: 6e 14 cp r6, r14 + 56e: 7f 04 cpc r7, r15 + 570: 49 f7 brne .-46 ; 0x544 <_ZN5Print11printNumberEmh+0xd0> + 572: a0 96 adiw r28, 0x20 ; 32 + 574: 0f b6 in r0, 0x3f ; 63 + 576: f8 94 cli + 578: de bf out 0x3e, r29 ; 62 + 57a: 0f be out 0x3f, r0 ; 63 + 57c: cd bf out 0x3d, r28 ; 61 + 57e: cf 91 pop r28 + 580: df 91 pop r29 + 582: 1f 91 pop r17 + 584: 0f 91 pop r16 + 586: ff 90 pop r15 + 588: ef 90 pop r14 + 58a: df 90 pop r13 + 58c: cf 90 pop r12 + 58e: bf 90 pop r11 + 590: af 90 pop r10 + 592: 9f 90 pop r9 + 594: 8f 90 pop r8 + 596: 7f 90 pop r7 + 598: 6f 90 pop r6 + 59a: 5f 90 pop r5 + 59c: 4f 90 pop r4 + 59e: 3f 90 pop r3 + 5a0: 2f 90 pop r2 + 5a2: 08 95 ret + +000005a4 <_ZN5Print5printEm>: + 5a4: 2a e0 ldi r18, 0x0A ; 10 + 5a6: 0e 94 3a 02 call 0x474 ; 0x474 <_ZN5Print11printNumberEmh> + 5aa: 08 95 ret + +000005ac <_ZN5Print7printlnEm>: + 5ac: 0f 93 push r16 + 5ae: 1f 93 push r17 + 5b0: 8c 01 movw r16, r24 + 5b2: 0e 94 d2 02 call 0x5a4 ; 0x5a4 <_ZN5Print5printEm> + 5b6: c8 01 movw r24, r16 + 5b8: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 5bc: 1f 91 pop r17 + 5be: 0f 91 pop r16 + 5c0: 08 95 ret + +000005c2 <_ZN5Print5printEj>: + 5c2: ab 01 movw r20, r22 + 5c4: 60 e0 ldi r22, 0x00 ; 0 + 5c6: 70 e0 ldi r23, 0x00 ; 0 + 5c8: 0e 94 d2 02 call 0x5a4 ; 0x5a4 <_ZN5Print5printEm> + 5cc: 08 95 ret + +000005ce <_ZN5Print7printlnEj>: + 5ce: 0f 93 push r16 + 5d0: 1f 93 push r17 + 5d2: 8c 01 movw r16, r24 + 5d4: ab 01 movw r20, r22 + 5d6: 60 e0 ldi r22, 0x00 ; 0 + 5d8: 70 e0 ldi r23, 0x00 ; 0 + 5da: 0e 94 d2 02 call 0x5a4 ; 0x5a4 <_ZN5Print5printEm> + 5de: c8 01 movw r24, r16 + 5e0: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 5e4: 1f 91 pop r17 + 5e6: 0f 91 pop r16 + 5e8: 08 95 ret + +000005ea <_ZN5Print5printEl>: + 5ea: ef 92 push r14 + 5ec: ff 92 push r15 + 5ee: 0f 93 push r16 + 5f0: 1f 93 push r17 + 5f2: cf 93 push r28 + 5f4: df 93 push r29 + 5f6: ec 01 movw r28, r24 + 5f8: 7a 01 movw r14, r20 + 5fa: 8b 01 movw r16, r22 + 5fc: 77 ff sbrs r23, 7 + 5fe: 0f c0 rjmp .+30 ; 0x61e <_ZN5Print5printEl+0x34> + 600: e8 81 ld r30, Y + 602: f9 81 ldd r31, Y+1 ; 0x01 + 604: 01 90 ld r0, Z+ + 606: f0 81 ld r31, Z + 608: e0 2d mov r30, r0 + 60a: 6d e2 ldi r22, 0x2D ; 45 + 60c: 09 95 icall + 60e: 10 95 com r17 + 610: 00 95 com r16 + 612: f0 94 com r15 + 614: e0 94 com r14 + 616: e1 1c adc r14, r1 + 618: f1 1c adc r15, r1 + 61a: 01 1d adc r16, r1 + 61c: 11 1d adc r17, r1 + 61e: 2a e0 ldi r18, 0x0A ; 10 + 620: b8 01 movw r22, r16 + 622: a7 01 movw r20, r14 + 624: ce 01 movw r24, r28 + 626: 0e 94 3a 02 call 0x474 ; 0x474 <_ZN5Print11printNumberEmh> + 62a: df 91 pop r29 + 62c: cf 91 pop r28 + 62e: 1f 91 pop r17 + 630: 0f 91 pop r16 + 632: ff 90 pop r15 + 634: ef 90 pop r14 + 636: 08 95 ret + +00000638 <_ZN5Print7printlnEl>: + 638: 0f 93 push r16 + 63a: 1f 93 push r17 + 63c: 8c 01 movw r16, r24 + 63e: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 642: c8 01 movw r24, r16 + 644: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 648: 1f 91 pop r17 + 64a: 0f 91 pop r16 + 64c: 08 95 ret + +0000064e <_ZN5Print5printEi>: + 64e: ab 01 movw r20, r22 + 650: 66 27 eor r22, r22 + 652: 57 fd sbrc r21, 7 + 654: 60 95 com r22 + 656: 76 2f mov r23, r22 + 658: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 65c: 08 95 ret + +0000065e <_ZN5Print7printlnEi>: + 65e: 0f 93 push r16 + 660: 1f 93 push r17 + 662: 8c 01 movw r16, r24 + 664: ab 01 movw r20, r22 + 666: 66 27 eor r22, r22 + 668: 57 fd sbrc r21, 7 + 66a: 60 95 com r22 + 66c: 76 2f mov r23, r22 + 66e: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 672: c8 01 movw r24, r16 + 674: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 678: 1f 91 pop r17 + 67a: 0f 91 pop r16 + 67c: 08 95 ret + +0000067e <_ZN5Print5printEli>: + 67e: dc 01 movw r26, r24 + 680: 21 15 cp r18, r1 + 682: 31 05 cpc r19, r1 + 684: 41 f4 brne .+16 ; 0x696 <_ZN5Print5printEli+0x18> + 686: ed 91 ld r30, X+ + 688: fc 91 ld r31, X + 68a: 01 90 ld r0, Z+ + 68c: f0 81 ld r31, Z + 68e: e0 2d mov r30, r0 + 690: 64 2f mov r22, r20 + 692: 09 95 icall + 694: 08 95 ret + 696: 2a 30 cpi r18, 0x0A ; 10 + 698: 31 05 cpc r19, r1 + 69a: 19 f4 brne .+6 ; 0x6a2 <_ZN5Print5printEli+0x24> + 69c: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 6a0: 08 95 ret + 6a2: 0e 94 3a 02 call 0x474 ; 0x474 <_ZN5Print11printNumberEmh> + 6a6: 08 95 ret + +000006a8 <_ZN5Print7printlnEli>: + 6a8: 0f 93 push r16 + 6aa: 1f 93 push r17 + 6ac: 8c 01 movw r16, r24 + 6ae: 0e 94 3f 03 call 0x67e ; 0x67e <_ZN5Print5printEli> + 6b2: c8 01 movw r24, r16 + 6b4: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 6b8: 1f 91 pop r17 + 6ba: 0f 91 pop r16 + 6bc: 08 95 ret + +000006be <beginSerial>: + 6be: ef 92 push r14 + 6c0: ff 92 push r15 + 6c2: 0f 93 push r16 + 6c4: 1f 93 push r17 + 6c6: 7b 01 movw r14, r22 + 6c8: 8c 01 movw r16, r24 + 6ca: 22 e0 ldi r18, 0x02 ; 2 + 6cc: 30 e0 ldi r19, 0x00 ; 0 + 6ce: 40 e0 ldi r20, 0x00 ; 0 + 6d0: 50 e0 ldi r21, 0x00 ; 0 + 6d2: 0e 94 3c 09 call 0x1278 ; 0x1278 <__divmodsi4> + 6d6: 20 5c subi r18, 0xC0 ; 192 + 6d8: 3d 4b sbci r19, 0xBD ; 189 + 6da: 40 4f sbci r20, 0xF0 ; 240 + 6dc: 5f 4f sbci r21, 0xFF ; 255 + 6de: ca 01 movw r24, r20 + 6e0: b9 01 movw r22, r18 + 6e2: a8 01 movw r20, r16 + 6e4: 97 01 movw r18, r14 + 6e6: 0e 94 3c 09 call 0x1278 ; 0x1278 <__divmodsi4> + 6ea: c9 01 movw r24, r18 + 6ec: da 01 movw r26, r20 + 6ee: 01 97 sbiw r24, 0x01 ; 1 + 6f0: a1 09 sbc r26, r1 + 6f2: b1 09 sbc r27, r1 + 6f4: 29 2f mov r18, r25 + 6f6: 3a 2f mov r19, r26 + 6f8: 4b 2f mov r20, r27 + 6fa: 55 27 eor r21, r21 + 6fc: 47 fd sbrc r20, 7 + 6fe: 5a 95 dec r21 + 700: 01 96 adiw r24, 0x01 ; 1 + 702: a1 1d adc r26, r1 + 704: b1 1d adc r27, r1 + 706: 20 93 c5 00 sts 0x00C5, r18 + 70a: 81 50 subi r24, 0x01 ; 1 + 70c: 80 93 c4 00 sts 0x00C4, r24 + 710: e1 ec ldi r30, 0xC1 ; 193 + 712: f0 e0 ldi r31, 0x00 ; 0 + 714: 80 81 ld r24, Z + 716: 80 61 ori r24, 0x10 ; 16 + 718: 80 83 st Z, r24 + 71a: 80 81 ld r24, Z + 71c: 88 60 ori r24, 0x08 ; 8 + 71e: 80 83 st Z, r24 + 720: 80 81 ld r24, Z + 722: 80 68 ori r24, 0x80 ; 128 + 724: 80 83 st Z, r24 + 726: 1f 91 pop r17 + 728: 0f 91 pop r16 + 72a: ff 90 pop r15 + 72c: ef 90 pop r14 + 72e: 08 95 ret + +00000730 <serialWrite>: + 730: 98 2f mov r25, r24 + 732: 80 91 c0 00 lds r24, 0x00C0 + 736: 85 ff sbrs r24, 5 + 738: fc cf rjmp .-8 ; 0x732 <serialWrite+0x2> + 73a: 90 93 c6 00 sts 0x00C6, r25 + 73e: 08 95 ret + +00000740 <serialAvailable>: + 740: 80 91 28 03 lds r24, 0x0328 + 744: 90 91 29 03 lds r25, 0x0329 + 748: 80 58 subi r24, 0x80 ; 128 + 74a: 9f 4f sbci r25, 0xFF ; 255 + 74c: 20 91 2a 03 lds r18, 0x032A + 750: 30 91 2b 03 lds r19, 0x032B + 754: 82 1b sub r24, r18 + 756: 93 0b sbc r25, r19 + 758: 60 e8 ldi r22, 0x80 ; 128 + 75a: 70 e0 ldi r23, 0x00 ; 0 + 75c: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 760: 08 95 ret + +00000762 <serialRead>: + 762: 40 91 2a 03 lds r20, 0x032A + 766: 50 91 2b 03 lds r21, 0x032B + 76a: 80 91 28 03 lds r24, 0x0328 + 76e: 90 91 29 03 lds r25, 0x0329 + 772: 84 17 cp r24, r20 + 774: 95 07 cpc r25, r21 + 776: 19 f4 brne .+6 ; 0x77e <serialRead+0x1c> + 778: 2f ef ldi r18, 0xFF ; 255 + 77a: 3f ef ldi r19, 0xFF ; 255 + 77c: 0f c0 rjmp .+30 ; 0x79c <serialRead+0x3a> + 77e: fa 01 movw r30, r20 + 780: e4 5d subi r30, 0xD4 ; 212 + 782: fc 4f sbci r31, 0xFC ; 252 + 784: 20 81 ld r18, Z + 786: ca 01 movw r24, r20 + 788: 01 96 adiw r24, 0x01 ; 1 + 78a: 60 e8 ldi r22, 0x80 ; 128 + 78c: 70 e0 ldi r23, 0x00 ; 0 + 78e: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 792: 90 93 2b 03 sts 0x032B, r25 + 796: 80 93 2a 03 sts 0x032A, r24 + 79a: 30 e0 ldi r19, 0x00 ; 0 + 79c: c9 01 movw r24, r18 + 79e: 08 95 ret + +000007a0 <serialFlush>: + 7a0: 80 91 2a 03 lds r24, 0x032A + 7a4: 90 91 2b 03 lds r25, 0x032B + 7a8: 90 93 29 03 sts 0x0329, r25 + 7ac: 80 93 28 03 sts 0x0328, r24 + 7b0: 08 95 ret + +000007b2 <__vector_18>: + 7b2: 1f 92 push r1 + 7b4: 0f 92 push r0 + 7b6: 0f b6 in r0, 0x3f ; 63 + 7b8: 0f 92 push r0 + 7ba: 11 24 eor r1, r1 + 7bc: 2f 93 push r18 + 7be: 3f 93 push r19 + 7c0: 4f 93 push r20 + 7c2: 5f 93 push r21 + 7c4: 6f 93 push r22 + 7c6: 7f 93 push r23 + 7c8: 8f 93 push r24 + 7ca: 9f 93 push r25 + 7cc: af 93 push r26 + 7ce: bf 93 push r27 + 7d0: ef 93 push r30 + 7d2: ff 93 push r31 + 7d4: 40 91 c6 00 lds r20, 0x00C6 + 7d8: e0 91 28 03 lds r30, 0x0328 + 7dc: f0 91 29 03 lds r31, 0x0329 + 7e0: cf 01 movw r24, r30 + 7e2: 01 96 adiw r24, 0x01 ; 1 + 7e4: 60 e8 ldi r22, 0x80 ; 128 + 7e6: 70 e0 ldi r23, 0x00 ; 0 + 7e8: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 7ec: 9c 01 movw r18, r24 + 7ee: 80 91 2a 03 lds r24, 0x032A + 7f2: 90 91 2b 03 lds r25, 0x032B + 7f6: 28 17 cp r18, r24 + 7f8: 39 07 cpc r19, r25 + 7fa: 39 f0 breq .+14 ; 0x80a <__vector_18+0x58> + 7fc: e4 5d subi r30, 0xD4 ; 212 + 7fe: fc 4f sbci r31, 0xFC ; 252 + 800: 40 83 st Z, r20 + 802: 30 93 29 03 sts 0x0329, r19 + 806: 20 93 28 03 sts 0x0328, r18 + 80a: ff 91 pop r31 + 80c: ef 91 pop r30 + 80e: bf 91 pop r27 + 810: af 91 pop r26 + 812: 9f 91 pop r25 + 814: 8f 91 pop r24 + 816: 7f 91 pop r23 + 818: 6f 91 pop r22 + 81a: 5f 91 pop r21 + 81c: 4f 91 pop r20 + 81e: 3f 91 pop r19 + 820: 2f 91 pop r18 + 822: 0f 90 pop r0 + 824: 0f be out 0x3f, r0 ; 63 + 826: 0f 90 pop r0 + 828: 1f 90 pop r1 + 82a: 18 95 reti + +0000082c <_fpadd_parts>: + 82c: a0 e0 ldi r26, 0x00 ; 0 + 82e: b0 e0 ldi r27, 0x00 ; 0 + 830: ec e1 ldi r30, 0x1C ; 28 + 832: f4 e0 ldi r31, 0x04 ; 4 + 834: 0c 94 6b 09 jmp 0x12d6 ; 0x12d6 <__prologue_saves__> + 838: dc 01 movw r26, r24 + 83a: 2b 01 movw r4, r22 + 83c: fa 01 movw r30, r20 + 83e: 9c 91 ld r25, X + 840: 92 30 cpi r25, 0x02 ; 2 + 842: 08 f4 brcc .+2 ; 0x846 <_fpadd_parts+0x1a> + 844: 39 c1 rjmp .+626 ; 0xab8 <__stack+0x1b9> + 846: eb 01 movw r28, r22 + 848: 88 81 ld r24, Y + 84a: 82 30 cpi r24, 0x02 ; 2 + 84c: 08 f4 brcc .+2 ; 0x850 <_fpadd_parts+0x24> + 84e: 33 c1 rjmp .+614 ; 0xab6 <__stack+0x1b7> + 850: 94 30 cpi r25, 0x04 ; 4 + 852: 69 f4 brne .+26 ; 0x86e <_fpadd_parts+0x42> + 854: 84 30 cpi r24, 0x04 ; 4 + 856: 09 f0 breq .+2 ; 0x85a <_fpadd_parts+0x2e> + 858: 2f c1 rjmp .+606 ; 0xab8 <__stack+0x1b9> + 85a: 11 96 adiw r26, 0x01 ; 1 + 85c: 9c 91 ld r25, X + 85e: 11 97 sbiw r26, 0x01 ; 1 + 860: 89 81 ldd r24, Y+1 ; 0x01 + 862: 98 17 cp r25, r24 + 864: 09 f4 brne .+2 ; 0x868 <_fpadd_parts+0x3c> + 866: 28 c1 rjmp .+592 ; 0xab8 <__stack+0x1b9> + 868: a9 e1 ldi r26, 0x19 ; 25 + 86a: b1 e0 ldi r27, 0x01 ; 1 + 86c: 25 c1 rjmp .+586 ; 0xab8 <__stack+0x1b9> + 86e: 84 30 cpi r24, 0x04 ; 4 + 870: 09 f4 brne .+2 ; 0x874 <_fpadd_parts+0x48> + 872: 21 c1 rjmp .+578 ; 0xab6 <__stack+0x1b7> + 874: 82 30 cpi r24, 0x02 ; 2 + 876: a9 f4 brne .+42 ; 0x8a2 <_fpadd_parts+0x76> + 878: 92 30 cpi r25, 0x02 ; 2 + 87a: 09 f0 breq .+2 ; 0x87e <_fpadd_parts+0x52> + 87c: 1d c1 rjmp .+570 ; 0xab8 <__stack+0x1b9> + 87e: 9a 01 movw r18, r20 + 880: ad 01 movw r20, r26 + 882: 88 e0 ldi r24, 0x08 ; 8 + 884: ea 01 movw r28, r20 + 886: 09 90 ld r0, Y+ + 888: ae 01 movw r20, r28 + 88a: e9 01 movw r28, r18 + 88c: 09 92 st Y+, r0 + 88e: 9e 01 movw r18, r28 + 890: 81 50 subi r24, 0x01 ; 1 + 892: c1 f7 brne .-16 ; 0x884 <_fpadd_parts+0x58> + 894: e2 01 movw r28, r4 + 896: 89 81 ldd r24, Y+1 ; 0x01 + 898: 11 96 adiw r26, 0x01 ; 1 + 89a: 9c 91 ld r25, X + 89c: 89 23 and r24, r25 + 89e: 81 83 std Z+1, r24 ; 0x01 + 8a0: 08 c1 rjmp .+528 ; 0xab2 <__stack+0x1b3> + 8a2: 92 30 cpi r25, 0x02 ; 2 + 8a4: 09 f4 brne .+2 ; 0x8a8 <_fpadd_parts+0x7c> + 8a6: 07 c1 rjmp .+526 ; 0xab6 <__stack+0x1b7> + 8a8: 12 96 adiw r26, 0x02 ; 2 + 8aa: 2d 90 ld r2, X+ + 8ac: 3c 90 ld r3, X + 8ae: 13 97 sbiw r26, 0x03 ; 3 + 8b0: eb 01 movw r28, r22 + 8b2: 8a 81 ldd r24, Y+2 ; 0x02 + 8b4: 9b 81 ldd r25, Y+3 ; 0x03 + 8b6: 14 96 adiw r26, 0x04 ; 4 + 8b8: ad 90 ld r10, X+ + 8ba: bd 90 ld r11, X+ + 8bc: cd 90 ld r12, X+ + 8be: dc 90 ld r13, X + 8c0: 17 97 sbiw r26, 0x07 ; 7 + 8c2: ec 80 ldd r14, Y+4 ; 0x04 + 8c4: fd 80 ldd r15, Y+5 ; 0x05 + 8c6: 0e 81 ldd r16, Y+6 ; 0x06 + 8c8: 1f 81 ldd r17, Y+7 ; 0x07 + 8ca: 91 01 movw r18, r2 + 8cc: 28 1b sub r18, r24 + 8ce: 39 0b sbc r19, r25 + 8d0: b9 01 movw r22, r18 + 8d2: 37 ff sbrs r19, 7 + 8d4: 04 c0 rjmp .+8 ; 0x8de <_fpadd_parts+0xb2> + 8d6: 66 27 eor r22, r22 + 8d8: 77 27 eor r23, r23 + 8da: 62 1b sub r22, r18 + 8dc: 73 0b sbc r23, r19 + 8de: 60 32 cpi r22, 0x20 ; 32 + 8e0: 71 05 cpc r23, r1 + 8e2: 0c f0 brlt .+2 ; 0x8e6 <_fpadd_parts+0xba> + 8e4: 61 c0 rjmp .+194 ; 0x9a8 <__stack+0xa9> + 8e6: 12 16 cp r1, r18 + 8e8: 13 06 cpc r1, r19 + 8ea: 6c f5 brge .+90 ; 0x946 <__stack+0x47> + 8ec: 37 01 movw r6, r14 + 8ee: 48 01 movw r8, r16 + 8f0: 06 2e mov r0, r22 + 8f2: 04 c0 rjmp .+8 ; 0x8fc <_fpadd_parts+0xd0> + 8f4: 96 94 lsr r9 + 8f6: 87 94 ror r8 + 8f8: 77 94 ror r7 + 8fa: 67 94 ror r6 + 8fc: 0a 94 dec r0 + 8fe: d2 f7 brpl .-12 ; 0x8f4 <_fpadd_parts+0xc8> + 900: 21 e0 ldi r18, 0x01 ; 1 + 902: 30 e0 ldi r19, 0x00 ; 0 + 904: 40 e0 ldi r20, 0x00 ; 0 + 906: 50 e0 ldi r21, 0x00 ; 0 + 908: 04 c0 rjmp .+8 ; 0x912 <__stack+0x13> + 90a: 22 0f add r18, r18 + 90c: 33 1f adc r19, r19 + 90e: 44 1f adc r20, r20 + 910: 55 1f adc r21, r21 + 912: 6a 95 dec r22 + 914: d2 f7 brpl .-12 ; 0x90a <__stack+0xb> + 916: 21 50 subi r18, 0x01 ; 1 + 918: 30 40 sbci r19, 0x00 ; 0 + 91a: 40 40 sbci r20, 0x00 ; 0 + 91c: 50 40 sbci r21, 0x00 ; 0 + 91e: 2e 21 and r18, r14 + 920: 3f 21 and r19, r15 + 922: 40 23 and r20, r16 + 924: 51 23 and r21, r17 + 926: 21 15 cp r18, r1 + 928: 31 05 cpc r19, r1 + 92a: 41 05 cpc r20, r1 + 92c: 51 05 cpc r21, r1 + 92e: 21 f0 breq .+8 ; 0x938 <__stack+0x39> + 930: 21 e0 ldi r18, 0x01 ; 1 + 932: 30 e0 ldi r19, 0x00 ; 0 + 934: 40 e0 ldi r20, 0x00 ; 0 + 936: 50 e0 ldi r21, 0x00 ; 0 + 938: 79 01 movw r14, r18 + 93a: 8a 01 movw r16, r20 + 93c: e6 28 or r14, r6 + 93e: f7 28 or r15, r7 + 940: 08 29 or r16, r8 + 942: 19 29 or r17, r9 + 944: 3c c0 rjmp .+120 ; 0x9be <__stack+0xbf> + 946: 23 2b or r18, r19 + 948: d1 f1 breq .+116 ; 0x9be <__stack+0xbf> + 94a: 26 0e add r2, r22 + 94c: 37 1e adc r3, r23 + 94e: 35 01 movw r6, r10 + 950: 46 01 movw r8, r12 + 952: 06 2e mov r0, r22 + 954: 04 c0 rjmp .+8 ; 0x95e <__stack+0x5f> + 956: 96 94 lsr r9 + 958: 87 94 ror r8 + 95a: 77 94 ror r7 + 95c: 67 94 ror r6 + 95e: 0a 94 dec r0 + 960: d2 f7 brpl .-12 ; 0x956 <__stack+0x57> + 962: 21 e0 ldi r18, 0x01 ; 1 + 964: 30 e0 ldi r19, 0x00 ; 0 + 966: 40 e0 ldi r20, 0x00 ; 0 + 968: 50 e0 ldi r21, 0x00 ; 0 + 96a: 04 c0 rjmp .+8 ; 0x974 <__stack+0x75> + 96c: 22 0f add r18, r18 + 96e: 33 1f adc r19, r19 + 970: 44 1f adc r20, r20 + 972: 55 1f adc r21, r21 + 974: 6a 95 dec r22 + 976: d2 f7 brpl .-12 ; 0x96c <__stack+0x6d> + 978: 21 50 subi r18, 0x01 ; 1 + 97a: 30 40 sbci r19, 0x00 ; 0 + 97c: 40 40 sbci r20, 0x00 ; 0 + 97e: 50 40 sbci r21, 0x00 ; 0 + 980: 2a 21 and r18, r10 + 982: 3b 21 and r19, r11 + 984: 4c 21 and r20, r12 + 986: 5d 21 and r21, r13 + 988: 21 15 cp r18, r1 + 98a: 31 05 cpc r19, r1 + 98c: 41 05 cpc r20, r1 + 98e: 51 05 cpc r21, r1 + 990: 21 f0 breq .+8 ; 0x99a <__stack+0x9b> + 992: 21 e0 ldi r18, 0x01 ; 1 + 994: 30 e0 ldi r19, 0x00 ; 0 + 996: 40 e0 ldi r20, 0x00 ; 0 + 998: 50 e0 ldi r21, 0x00 ; 0 + 99a: 59 01 movw r10, r18 + 99c: 6a 01 movw r12, r20 + 99e: a6 28 or r10, r6 + 9a0: b7 28 or r11, r7 + 9a2: c8 28 or r12, r8 + 9a4: d9 28 or r13, r9 + 9a6: 0b c0 rjmp .+22 ; 0x9be <__stack+0xbf> + 9a8: 82 15 cp r24, r2 + 9aa: 93 05 cpc r25, r3 + 9ac: 2c f0 brlt .+10 ; 0x9b8 <__stack+0xb9> + 9ae: 1c 01 movw r2, r24 + 9b0: aa 24 eor r10, r10 + 9b2: bb 24 eor r11, r11 + 9b4: 65 01 movw r12, r10 + 9b6: 03 c0 rjmp .+6 ; 0x9be <__stack+0xbf> + 9b8: ee 24 eor r14, r14 + 9ba: ff 24 eor r15, r15 + 9bc: 87 01 movw r16, r14 + 9be: 11 96 adiw r26, 0x01 ; 1 + 9c0: 9c 91 ld r25, X + 9c2: d2 01 movw r26, r4 + 9c4: 11 96 adiw r26, 0x01 ; 1 + 9c6: 8c 91 ld r24, X + 9c8: 98 17 cp r25, r24 + 9ca: 09 f4 brne .+2 ; 0x9ce <__stack+0xcf> + 9cc: 45 c0 rjmp .+138 ; 0xa58 <__stack+0x159> + 9ce: 99 23 and r25, r25 + 9d0: 39 f0 breq .+14 ; 0x9e0 <__stack+0xe1> + 9d2: a8 01 movw r20, r16 + 9d4: 97 01 movw r18, r14 + 9d6: 2a 19 sub r18, r10 + 9d8: 3b 09 sbc r19, r11 + 9da: 4c 09 sbc r20, r12 + 9dc: 5d 09 sbc r21, r13 + 9de: 06 c0 rjmp .+12 ; 0x9ec <__stack+0xed> + 9e0: a6 01 movw r20, r12 + 9e2: 95 01 movw r18, r10 + 9e4: 2e 19 sub r18, r14 + 9e6: 3f 09 sbc r19, r15 + 9e8: 40 0b sbc r20, r16 + 9ea: 51 0b sbc r21, r17 + 9ec: 57 fd sbrc r21, 7 + 9ee: 08 c0 rjmp .+16 ; 0xa00 <__stack+0x101> + 9f0: 11 82 std Z+1, r1 ; 0x01 + 9f2: 33 82 std Z+3, r3 ; 0x03 + 9f4: 22 82 std Z+2, r2 ; 0x02 + 9f6: 24 83 std Z+4, r18 ; 0x04 + 9f8: 35 83 std Z+5, r19 ; 0x05 + 9fa: 46 83 std Z+6, r20 ; 0x06 + 9fc: 57 83 std Z+7, r21 ; 0x07 + 9fe: 1d c0 rjmp .+58 ; 0xa3a <__stack+0x13b> + a00: 81 e0 ldi r24, 0x01 ; 1 + a02: 81 83 std Z+1, r24 ; 0x01 + a04: 33 82 std Z+3, r3 ; 0x03 + a06: 22 82 std Z+2, r2 ; 0x02 + a08: 88 27 eor r24, r24 + a0a: 99 27 eor r25, r25 + a0c: dc 01 movw r26, r24 + a0e: 82 1b sub r24, r18 + a10: 93 0b sbc r25, r19 + a12: a4 0b sbc r26, r20 + a14: b5 0b sbc r27, r21 + a16: 84 83 std Z+4, r24 ; 0x04 + a18: 95 83 std Z+5, r25 ; 0x05 + a1a: a6 83 std Z+6, r26 ; 0x06 + a1c: b7 83 std Z+7, r27 ; 0x07 + a1e: 0d c0 rjmp .+26 ; 0xa3a <__stack+0x13b> + a20: 22 0f add r18, r18 + a22: 33 1f adc r19, r19 + a24: 44 1f adc r20, r20 + a26: 55 1f adc r21, r21 + a28: 24 83 std Z+4, r18 ; 0x04 + a2a: 35 83 std Z+5, r19 ; 0x05 + a2c: 46 83 std Z+6, r20 ; 0x06 + a2e: 57 83 std Z+7, r21 ; 0x07 + a30: 82 81 ldd r24, Z+2 ; 0x02 + a32: 93 81 ldd r25, Z+3 ; 0x03 + a34: 01 97 sbiw r24, 0x01 ; 1 + a36: 93 83 std Z+3, r25 ; 0x03 + a38: 82 83 std Z+2, r24 ; 0x02 + a3a: 24 81 ldd r18, Z+4 ; 0x04 + a3c: 35 81 ldd r19, Z+5 ; 0x05 + a3e: 46 81 ldd r20, Z+6 ; 0x06 + a40: 57 81 ldd r21, Z+7 ; 0x07 + a42: da 01 movw r26, r20 + a44: c9 01 movw r24, r18 + a46: 01 97 sbiw r24, 0x01 ; 1 + a48: a1 09 sbc r26, r1 + a4a: b1 09 sbc r27, r1 + a4c: 8f 5f subi r24, 0xFF ; 255 + a4e: 9f 4f sbci r25, 0xFF ; 255 + a50: af 4f sbci r26, 0xFF ; 255 + a52: bf 43 sbci r27, 0x3F ; 63 + a54: 28 f3 brcs .-54 ; 0xa20 <__stack+0x121> + a56: 0b c0 rjmp .+22 ; 0xa6e <__stack+0x16f> + a58: 91 83 std Z+1, r25 ; 0x01 + a5a: 33 82 std Z+3, r3 ; 0x03 + a5c: 22 82 std Z+2, r2 ; 0x02 + a5e: ea 0c add r14, r10 + a60: fb 1c adc r15, r11 + a62: 0c 1d adc r16, r12 + a64: 1d 1d adc r17, r13 + a66: e4 82 std Z+4, r14 ; 0x04 + a68: f5 82 std Z+5, r15 ; 0x05 + a6a: 06 83 std Z+6, r16 ; 0x06 + a6c: 17 83 std Z+7, r17 ; 0x07 + a6e: 83 e0 ldi r24, 0x03 ; 3 + a70: 80 83 st Z, r24 + a72: 24 81 ldd r18, Z+4 ; 0x04 + a74: 35 81 ldd r19, Z+5 ; 0x05 + a76: 46 81 ldd r20, Z+6 ; 0x06 + a78: 57 81 ldd r21, Z+7 ; 0x07 + a7a: 57 ff sbrs r21, 7 + a7c: 1a c0 rjmp .+52 ; 0xab2 <__stack+0x1b3> + a7e: c9 01 movw r24, r18 + a80: aa 27 eor r26, r26 + a82: 97 fd sbrc r25, 7 + a84: a0 95 com r26 + a86: ba 2f mov r27, r26 + a88: 81 70 andi r24, 0x01 ; 1 + a8a: 90 70 andi r25, 0x00 ; 0 + a8c: a0 70 andi r26, 0x00 ; 0 + a8e: b0 70 andi r27, 0x00 ; 0 + a90: 56 95 lsr r21 + a92: 47 95 ror r20 + a94: 37 95 ror r19 + a96: 27 95 ror r18 + a98: 82 2b or r24, r18 + a9a: 93 2b or r25, r19 + a9c: a4 2b or r26, r20 + a9e: b5 2b or r27, r21 + aa0: 84 83 std Z+4, r24 ; 0x04 + aa2: 95 83 std Z+5, r25 ; 0x05 + aa4: a6 83 std Z+6, r26 ; 0x06 + aa6: b7 83 std Z+7, r27 ; 0x07 + aa8: 82 81 ldd r24, Z+2 ; 0x02 + aaa: 93 81 ldd r25, Z+3 ; 0x03 + aac: 01 96 adiw r24, 0x01 ; 1 + aae: 93 83 std Z+3, r25 ; 0x03 + ab0: 82 83 std Z+2, r24 ; 0x02 + ab2: df 01 movw r26, r30 + ab4: 01 c0 rjmp .+2 ; 0xab8 <__stack+0x1b9> + ab6: d2 01 movw r26, r4 + ab8: cd 01 movw r24, r26 + aba: cd b7 in r28, 0x3d ; 61 + abc: de b7 in r29, 0x3e ; 62 + abe: e2 e1 ldi r30, 0x12 ; 18 + ac0: 0c 94 87 09 jmp 0x130e ; 0x130e <__epilogue_restores__> + +00000ac4 <__subsf3>: + ac4: a0 e2 ldi r26, 0x20 ; 32 + ac6: b0 e0 ldi r27, 0x00 ; 0 + ac8: e8 e6 ldi r30, 0x68 ; 104 + aca: f5 e0 ldi r31, 0x05 ; 5 + acc: 0c 94 77 09 jmp 0x12ee ; 0x12ee <__prologue_saves__+0x18> + ad0: 69 83 std Y+1, r22 ; 0x01 + ad2: 7a 83 std Y+2, r23 ; 0x02 + ad4: 8b 83 std Y+3, r24 ; 0x03 + ad6: 9c 83 std Y+4, r25 ; 0x04 + ad8: 2d 83 std Y+5, r18 ; 0x05 + ada: 3e 83 std Y+6, r19 ; 0x06 + adc: 4f 83 std Y+7, r20 ; 0x07 + ade: 58 87 std Y+8, r21 ; 0x08 + ae0: e9 e0 ldi r30, 0x09 ; 9 + ae2: ee 2e mov r14, r30 + ae4: f1 2c mov r15, r1 + ae6: ec 0e add r14, r28 + ae8: fd 1e adc r15, r29 + aea: ce 01 movw r24, r28 + aec: 01 96 adiw r24, 0x01 ; 1 + aee: b7 01 movw r22, r14 + af0: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + af4: 8e 01 movw r16, r28 + af6: 0f 5e subi r16, 0xEF ; 239 + af8: 1f 4f sbci r17, 0xFF ; 255 + afa: ce 01 movw r24, r28 + afc: 05 96 adiw r24, 0x05 ; 5 + afe: b8 01 movw r22, r16 + b00: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + b04: 8a 89 ldd r24, Y+18 ; 0x12 + b06: 91 e0 ldi r25, 0x01 ; 1 + b08: 89 27 eor r24, r25 + b0a: 8a 8b std Y+18, r24 ; 0x12 + b0c: c7 01 movw r24, r14 + b0e: b8 01 movw r22, r16 + b10: ae 01 movw r20, r28 + b12: 47 5e subi r20, 0xE7 ; 231 + b14: 5f 4f sbci r21, 0xFF ; 255 + b16: 0e 94 16 04 call 0x82c ; 0x82c <_fpadd_parts> + b1a: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + b1e: a0 96 adiw r28, 0x20 ; 32 + b20: e6 e0 ldi r30, 0x06 ; 6 + b22: 0c 94 93 09 jmp 0x1326 ; 0x1326 <__epilogue_restores__+0x18> + +00000b26 <__addsf3>: + b26: a0 e2 ldi r26, 0x20 ; 32 + b28: b0 e0 ldi r27, 0x00 ; 0 + b2a: e9 e9 ldi r30, 0x99 ; 153 + b2c: f5 e0 ldi r31, 0x05 ; 5 + b2e: 0c 94 77 09 jmp 0x12ee ; 0x12ee <__prologue_saves__+0x18> + b32: 69 83 std Y+1, r22 ; 0x01 + b34: 7a 83 std Y+2, r23 ; 0x02 + b36: 8b 83 std Y+3, r24 ; 0x03 + b38: 9c 83 std Y+4, r25 ; 0x04 + b3a: 2d 83 std Y+5, r18 ; 0x05 + b3c: 3e 83 std Y+6, r19 ; 0x06 + b3e: 4f 83 std Y+7, r20 ; 0x07 + b40: 58 87 std Y+8, r21 ; 0x08 + b42: f9 e0 ldi r31, 0x09 ; 9 + b44: ef 2e mov r14, r31 + b46: f1 2c mov r15, r1 + b48: ec 0e add r14, r28 + b4a: fd 1e adc r15, r29 + b4c: ce 01 movw r24, r28 + b4e: 01 96 adiw r24, 0x01 ; 1 + b50: b7 01 movw r22, r14 + b52: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + b56: 8e 01 movw r16, r28 + b58: 0f 5e subi r16, 0xEF ; 239 + b5a: 1f 4f sbci r17, 0xFF ; 255 + b5c: ce 01 movw r24, r28 + b5e: 05 96 adiw r24, 0x05 ; 5 + b60: b8 01 movw r22, r16 + b62: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + b66: c7 01 movw r24, r14 + b68: b8 01 movw r22, r16 + b6a: ae 01 movw r20, r28 + b6c: 47 5e subi r20, 0xE7 ; 231 + b6e: 5f 4f sbci r21, 0xFF ; 255 + b70: 0e 94 16 04 call 0x82c ; 0x82c <_fpadd_parts> + b74: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + b78: a0 96 adiw r28, 0x20 ; 32 + b7a: e6 e0 ldi r30, 0x06 ; 6 + b7c: 0c 94 93 09 jmp 0x1326 ; 0x1326 <__epilogue_restores__+0x18> + +00000b80 <__mulsf3>: + b80: a0 e2 ldi r26, 0x20 ; 32 + b82: b0 e0 ldi r27, 0x00 ; 0 + b84: e6 ec ldi r30, 0xC6 ; 198 + b86: f5 e0 ldi r31, 0x05 ; 5 + b88: 0c 94 6b 09 jmp 0x12d6 ; 0x12d6 <__prologue_saves__> + b8c: 69 83 std Y+1, r22 ; 0x01 + b8e: 7a 83 std Y+2, r23 ; 0x02 + b90: 8b 83 std Y+3, r24 ; 0x03 + b92: 9c 83 std Y+4, r25 ; 0x04 + b94: 2d 83 std Y+5, r18 ; 0x05 + b96: 3e 83 std Y+6, r19 ; 0x06 + b98: 4f 83 std Y+7, r20 ; 0x07 + b9a: 58 87 std Y+8, r21 ; 0x08 + b9c: ce 01 movw r24, r28 + b9e: 01 96 adiw r24, 0x01 ; 1 + ba0: be 01 movw r22, r28 + ba2: 67 5f subi r22, 0xF7 ; 247 + ba4: 7f 4f sbci r23, 0xFF ; 255 + ba6: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + baa: ce 01 movw r24, r28 + bac: 05 96 adiw r24, 0x05 ; 5 + bae: be 01 movw r22, r28 + bb0: 6f 5e subi r22, 0xEF ; 239 + bb2: 7f 4f sbci r23, 0xFF ; 255 + bb4: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + bb8: 99 85 ldd r25, Y+9 ; 0x09 + bba: 92 30 cpi r25, 0x02 ; 2 + bbc: 88 f0 brcs .+34 ; 0xbe0 <__mulsf3+0x60> + bbe: 89 89 ldd r24, Y+17 ; 0x11 + bc0: 82 30 cpi r24, 0x02 ; 2 + bc2: c8 f0 brcs .+50 ; 0xbf6 <__mulsf3+0x76> + bc4: 94 30 cpi r25, 0x04 ; 4 + bc6: 19 f4 brne .+6 ; 0xbce <__mulsf3+0x4e> + bc8: 82 30 cpi r24, 0x02 ; 2 + bca: 51 f4 brne .+20 ; 0xbe0 <__mulsf3+0x60> + bcc: 04 c0 rjmp .+8 ; 0xbd6 <__mulsf3+0x56> + bce: 84 30 cpi r24, 0x04 ; 4 + bd0: 29 f4 brne .+10 ; 0xbdc <__mulsf3+0x5c> + bd2: 92 30 cpi r25, 0x02 ; 2 + bd4: 81 f4 brne .+32 ; 0xbf6 <__mulsf3+0x76> + bd6: 89 e1 ldi r24, 0x19 ; 25 + bd8: 91 e0 ldi r25, 0x01 ; 1 + bda: c6 c0 rjmp .+396 ; 0xd68 <__mulsf3+0x1e8> + bdc: 92 30 cpi r25, 0x02 ; 2 + bde: 49 f4 brne .+18 ; 0xbf2 <__mulsf3+0x72> + be0: 20 e0 ldi r18, 0x00 ; 0 + be2: 9a 85 ldd r25, Y+10 ; 0x0a + be4: 8a 89 ldd r24, Y+18 ; 0x12 + be6: 98 13 cpse r25, r24 + be8: 21 e0 ldi r18, 0x01 ; 1 + bea: 2a 87 std Y+10, r18 ; 0x0a + bec: ce 01 movw r24, r28 + bee: 09 96 adiw r24, 0x09 ; 9 + bf0: bb c0 rjmp .+374 ; 0xd68 <__mulsf3+0x1e8> + bf2: 82 30 cpi r24, 0x02 ; 2 + bf4: 49 f4 brne .+18 ; 0xc08 <__mulsf3+0x88> + bf6: 20 e0 ldi r18, 0x00 ; 0 + bf8: 9a 85 ldd r25, Y+10 ; 0x0a + bfa: 8a 89 ldd r24, Y+18 ; 0x12 + bfc: 98 13 cpse r25, r24 + bfe: 21 e0 ldi r18, 0x01 ; 1 + c00: 2a 8b std Y+18, r18 ; 0x12 + c02: ce 01 movw r24, r28 + c04: 41 96 adiw r24, 0x11 ; 17 + c06: b0 c0 rjmp .+352 ; 0xd68 <__mulsf3+0x1e8> + c08: 2d 84 ldd r2, Y+13 ; 0x0d + c0a: 3e 84 ldd r3, Y+14 ; 0x0e + c0c: 4f 84 ldd r4, Y+15 ; 0x0f + c0e: 58 88 ldd r5, Y+16 ; 0x10 + c10: 6d 88 ldd r6, Y+21 ; 0x15 + c12: 7e 88 ldd r7, Y+22 ; 0x16 + c14: 8f 88 ldd r8, Y+23 ; 0x17 + c16: 98 8c ldd r9, Y+24 ; 0x18 + c18: ee 24 eor r14, r14 + c1a: ff 24 eor r15, r15 + c1c: 87 01 movw r16, r14 + c1e: aa 24 eor r10, r10 + c20: bb 24 eor r11, r11 + c22: 65 01 movw r12, r10 + c24: 40 e0 ldi r20, 0x00 ; 0 + c26: 50 e0 ldi r21, 0x00 ; 0 + c28: 60 e0 ldi r22, 0x00 ; 0 + c2a: 70 e0 ldi r23, 0x00 ; 0 + c2c: e0 e0 ldi r30, 0x00 ; 0 + c2e: f0 e0 ldi r31, 0x00 ; 0 + c30: c1 01 movw r24, r2 + c32: 81 70 andi r24, 0x01 ; 1 + c34: 90 70 andi r25, 0x00 ; 0 + c36: 89 2b or r24, r25 + c38: e9 f0 breq .+58 ; 0xc74 <__mulsf3+0xf4> + c3a: e6 0c add r14, r6 + c3c: f7 1c adc r15, r7 + c3e: 08 1d adc r16, r8 + c40: 19 1d adc r17, r9 + c42: 9a 01 movw r18, r20 + c44: ab 01 movw r20, r22 + c46: 2a 0d add r18, r10 + c48: 3b 1d adc r19, r11 + c4a: 4c 1d adc r20, r12 + c4c: 5d 1d adc r21, r13 + c4e: 80 e0 ldi r24, 0x00 ; 0 + c50: 90 e0 ldi r25, 0x00 ; 0 + c52: a0 e0 ldi r26, 0x00 ; 0 + c54: b0 e0 ldi r27, 0x00 ; 0 + c56: e6 14 cp r14, r6 + c58: f7 04 cpc r15, r7 + c5a: 08 05 cpc r16, r8 + c5c: 19 05 cpc r17, r9 + c5e: 20 f4 brcc .+8 ; 0xc68 <__mulsf3+0xe8> + c60: 81 e0 ldi r24, 0x01 ; 1 + c62: 90 e0 ldi r25, 0x00 ; 0 + c64: a0 e0 ldi r26, 0x00 ; 0 + c66: b0 e0 ldi r27, 0x00 ; 0 + c68: ba 01 movw r22, r20 + c6a: a9 01 movw r20, r18 + c6c: 48 0f add r20, r24 + c6e: 59 1f adc r21, r25 + c70: 6a 1f adc r22, r26 + c72: 7b 1f adc r23, r27 + c74: aa 0c add r10, r10 + c76: bb 1c adc r11, r11 + c78: cc 1c adc r12, r12 + c7a: dd 1c adc r13, r13 + c7c: 97 fe sbrs r9, 7 + c7e: 08 c0 rjmp .+16 ; 0xc90 <__mulsf3+0x110> + c80: 81 e0 ldi r24, 0x01 ; 1 + c82: 90 e0 ldi r25, 0x00 ; 0 + c84: a0 e0 ldi r26, 0x00 ; 0 + c86: b0 e0 ldi r27, 0x00 ; 0 + c88: a8 2a or r10, r24 + c8a: b9 2a or r11, r25 + c8c: ca 2a or r12, r26 + c8e: db 2a or r13, r27 + c90: 31 96 adiw r30, 0x01 ; 1 + c92: e0 32 cpi r30, 0x20 ; 32 + c94: f1 05 cpc r31, r1 + c96: 49 f0 breq .+18 ; 0xcaa <__mulsf3+0x12a> + c98: 66 0c add r6, r6 + c9a: 77 1c adc r7, r7 + c9c: 88 1c adc r8, r8 + c9e: 99 1c adc r9, r9 + ca0: 56 94 lsr r5 + ca2: 47 94 ror r4 + ca4: 37 94 ror r3 + ca6: 27 94 ror r2 + ca8: c3 cf rjmp .-122 ; 0xc30 <__mulsf3+0xb0> + caa: fa 85 ldd r31, Y+10 ; 0x0a + cac: ea 89 ldd r30, Y+18 ; 0x12 + cae: 2b 89 ldd r18, Y+19 ; 0x13 + cb0: 3c 89 ldd r19, Y+20 ; 0x14 + cb2: 8b 85 ldd r24, Y+11 ; 0x0b + cb4: 9c 85 ldd r25, Y+12 ; 0x0c + cb6: 28 0f add r18, r24 + cb8: 39 1f adc r19, r25 + cba: 2e 5f subi r18, 0xFE ; 254 + cbc: 3f 4f sbci r19, 0xFF ; 255 + cbe: 17 c0 rjmp .+46 ; 0xcee <__mulsf3+0x16e> + cc0: ca 01 movw r24, r20 + cc2: 81 70 andi r24, 0x01 ; 1 + cc4: 90 70 andi r25, 0x00 ; 0 + cc6: 89 2b or r24, r25 + cc8: 61 f0 breq .+24 ; 0xce2 <__mulsf3+0x162> + cca: 16 95 lsr r17 + ccc: 07 95 ror r16 + cce: f7 94 ror r15 + cd0: e7 94 ror r14 + cd2: 80 e0 ldi r24, 0x00 ; 0 + cd4: 90 e0 ldi r25, 0x00 ; 0 + cd6: a0 e0 ldi r26, 0x00 ; 0 + cd8: b0 e8 ldi r27, 0x80 ; 128 + cda: e8 2a or r14, r24 + cdc: f9 2a or r15, r25 + cde: 0a 2b or r16, r26 + ce0: 1b 2b or r17, r27 + ce2: 76 95 lsr r23 + ce4: 67 95 ror r22 + ce6: 57 95 ror r21 + ce8: 47 95 ror r20 + cea: 2f 5f subi r18, 0xFF ; 255 + cec: 3f 4f sbci r19, 0xFF ; 255 + cee: 77 fd sbrc r23, 7 + cf0: e7 cf rjmp .-50 ; 0xcc0 <__mulsf3+0x140> + cf2: 0c c0 rjmp .+24 ; 0xd0c <__mulsf3+0x18c> + cf4: 44 0f add r20, r20 + cf6: 55 1f adc r21, r21 + cf8: 66 1f adc r22, r22 + cfa: 77 1f adc r23, r23 + cfc: 17 fd sbrc r17, 7 + cfe: 41 60 ori r20, 0x01 ; 1 + d00: ee 0c add r14, r14 + d02: ff 1c adc r15, r15 + d04: 00 1f adc r16, r16 + d06: 11 1f adc r17, r17 + d08: 21 50 subi r18, 0x01 ; 1 + d0a: 30 40 sbci r19, 0x00 ; 0 + d0c: 40 30 cpi r20, 0x00 ; 0 + d0e: 90 e0 ldi r25, 0x00 ; 0 + d10: 59 07 cpc r21, r25 + d12: 90 e0 ldi r25, 0x00 ; 0 + d14: 69 07 cpc r22, r25 + d16: 90 e4 ldi r25, 0x40 ; 64 + d18: 79 07 cpc r23, r25 + d1a: 60 f3 brcs .-40 ; 0xcf4 <__mulsf3+0x174> + d1c: 2b 8f std Y+27, r18 ; 0x1b + d1e: 3c 8f std Y+28, r19 ; 0x1c + d20: db 01 movw r26, r22 + d22: ca 01 movw r24, r20 + d24: 8f 77 andi r24, 0x7F ; 127 + d26: 90 70 andi r25, 0x00 ; 0 + d28: a0 70 andi r26, 0x00 ; 0 + d2a: b0 70 andi r27, 0x00 ; 0 + d2c: 80 34 cpi r24, 0x40 ; 64 + d2e: 91 05 cpc r25, r1 + d30: a1 05 cpc r26, r1 + d32: b1 05 cpc r27, r1 + d34: 61 f4 brne .+24 ; 0xd4e <__mulsf3+0x1ce> + d36: 47 fd sbrc r20, 7 + d38: 0a c0 rjmp .+20 ; 0xd4e <__mulsf3+0x1ce> + d3a: e1 14 cp r14, r1 + d3c: f1 04 cpc r15, r1 + d3e: 01 05 cpc r16, r1 + d40: 11 05 cpc r17, r1 + d42: 29 f0 breq .+10 ; 0xd4e <__mulsf3+0x1ce> + d44: 40 5c subi r20, 0xC0 ; 192 + d46: 5f 4f sbci r21, 0xFF ; 255 + d48: 6f 4f sbci r22, 0xFF ; 255 + d4a: 7f 4f sbci r23, 0xFF ; 255 + d4c: 40 78 andi r20, 0x80 ; 128 + d4e: 1a 8e std Y+26, r1 ; 0x1a + d50: fe 17 cp r31, r30 + d52: 11 f0 breq .+4 ; 0xd58 <__mulsf3+0x1d8> + d54: 81 e0 ldi r24, 0x01 ; 1 + d56: 8a 8f std Y+26, r24 ; 0x1a + d58: 4d 8f std Y+29, r20 ; 0x1d + d5a: 5e 8f std Y+30, r21 ; 0x1e + d5c: 6f 8f std Y+31, r22 ; 0x1f + d5e: 78 a3 std Y+32, r23 ; 0x20 + d60: 83 e0 ldi r24, 0x03 ; 3 + d62: 89 8f std Y+25, r24 ; 0x19 + d64: ce 01 movw r24, r28 + d66: 49 96 adiw r24, 0x19 ; 25 + d68: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + d6c: a0 96 adiw r28, 0x20 ; 32 + d6e: e2 e1 ldi r30, 0x12 ; 18 + d70: 0c 94 87 09 jmp 0x130e ; 0x130e <__epilogue_restores__> + +00000d74 <__divsf3>: + d74: a8 e1 ldi r26, 0x18 ; 24 + d76: b0 e0 ldi r27, 0x00 ; 0 + d78: e0 ec ldi r30, 0xC0 ; 192 + d7a: f6 e0 ldi r31, 0x06 ; 6 + d7c: 0c 94 73 09 jmp 0x12e6 ; 0x12e6 <__prologue_saves__+0x10> + d80: 69 83 std Y+1, r22 ; 0x01 + d82: 7a 83 std Y+2, r23 ; 0x02 + d84: 8b 83 std Y+3, r24 ; 0x03 + d86: 9c 83 std Y+4, r25 ; 0x04 + d88: 2d 83 std Y+5, r18 ; 0x05 + d8a: 3e 83 std Y+6, r19 ; 0x06 + d8c: 4f 83 std Y+7, r20 ; 0x07 + d8e: 58 87 std Y+8, r21 ; 0x08 + d90: b9 e0 ldi r27, 0x09 ; 9 + d92: eb 2e mov r14, r27 + d94: f1 2c mov r15, r1 + d96: ec 0e add r14, r28 + d98: fd 1e adc r15, r29 + d9a: ce 01 movw r24, r28 + d9c: 01 96 adiw r24, 0x01 ; 1 + d9e: b7 01 movw r22, r14 + da0: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + da4: 8e 01 movw r16, r28 + da6: 0f 5e subi r16, 0xEF ; 239 + da8: 1f 4f sbci r17, 0xFF ; 255 + daa: ce 01 movw r24, r28 + dac: 05 96 adiw r24, 0x05 ; 5 + dae: b8 01 movw r22, r16 + db0: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + db4: 29 85 ldd r18, Y+9 ; 0x09 + db6: 22 30 cpi r18, 0x02 ; 2 + db8: 08 f4 brcc .+2 ; 0xdbc <__divsf3+0x48> + dba: 7e c0 rjmp .+252 ; 0xeb8 <__divsf3+0x144> + dbc: 39 89 ldd r19, Y+17 ; 0x11 + dbe: 32 30 cpi r19, 0x02 ; 2 + dc0: 10 f4 brcc .+4 ; 0xdc6 <__divsf3+0x52> + dc2: b8 01 movw r22, r16 + dc4: 7c c0 rjmp .+248 ; 0xebe <__divsf3+0x14a> + dc6: 8a 85 ldd r24, Y+10 ; 0x0a + dc8: 9a 89 ldd r25, Y+18 ; 0x12 + dca: 89 27 eor r24, r25 + dcc: 8a 87 std Y+10, r24 ; 0x0a + dce: 24 30 cpi r18, 0x04 ; 4 + dd0: 11 f0 breq .+4 ; 0xdd6 <__divsf3+0x62> + dd2: 22 30 cpi r18, 0x02 ; 2 + dd4: 31 f4 brne .+12 ; 0xde2 <__divsf3+0x6e> + dd6: 23 17 cp r18, r19 + dd8: 09 f0 breq .+2 ; 0xddc <__divsf3+0x68> + dda: 6e c0 rjmp .+220 ; 0xeb8 <__divsf3+0x144> + ddc: 69 e1 ldi r22, 0x19 ; 25 + dde: 71 e0 ldi r23, 0x01 ; 1 + de0: 6e c0 rjmp .+220 ; 0xebe <__divsf3+0x14a> + de2: 34 30 cpi r19, 0x04 ; 4 + de4: 39 f4 brne .+14 ; 0xdf4 <__divsf3+0x80> + de6: 1d 86 std Y+13, r1 ; 0x0d + de8: 1e 86 std Y+14, r1 ; 0x0e + dea: 1f 86 std Y+15, r1 ; 0x0f + dec: 18 8a std Y+16, r1 ; 0x10 + dee: 1c 86 std Y+12, r1 ; 0x0c + df0: 1b 86 std Y+11, r1 ; 0x0b + df2: 04 c0 rjmp .+8 ; 0xdfc <__divsf3+0x88> + df4: 32 30 cpi r19, 0x02 ; 2 + df6: 21 f4 brne .+8 ; 0xe00 <__divsf3+0x8c> + df8: 84 e0 ldi r24, 0x04 ; 4 + dfa: 89 87 std Y+9, r24 ; 0x09 + dfc: b7 01 movw r22, r14 + dfe: 5f c0 rjmp .+190 ; 0xebe <__divsf3+0x14a> + e00: 2b 85 ldd r18, Y+11 ; 0x0b + e02: 3c 85 ldd r19, Y+12 ; 0x0c + e04: 8b 89 ldd r24, Y+19 ; 0x13 + e06: 9c 89 ldd r25, Y+20 ; 0x14 + e08: 28 1b sub r18, r24 + e0a: 39 0b sbc r19, r25 + e0c: 3c 87 std Y+12, r19 ; 0x0c + e0e: 2b 87 std Y+11, r18 ; 0x0b + e10: ed 84 ldd r14, Y+13 ; 0x0d + e12: fe 84 ldd r15, Y+14 ; 0x0e + e14: 0f 85 ldd r16, Y+15 ; 0x0f + e16: 18 89 ldd r17, Y+16 ; 0x10 + e18: ad 88 ldd r10, Y+21 ; 0x15 + e1a: be 88 ldd r11, Y+22 ; 0x16 + e1c: cf 88 ldd r12, Y+23 ; 0x17 + e1e: d8 8c ldd r13, Y+24 ; 0x18 + e20: ea 14 cp r14, r10 + e22: fb 04 cpc r15, r11 + e24: 0c 05 cpc r16, r12 + e26: 1d 05 cpc r17, r13 + e28: 40 f4 brcc .+16 ; 0xe3a <__divsf3+0xc6> + e2a: ee 0c add r14, r14 + e2c: ff 1c adc r15, r15 + e2e: 00 1f adc r16, r16 + e30: 11 1f adc r17, r17 + e32: 21 50 subi r18, 0x01 ; 1 + e34: 30 40 sbci r19, 0x00 ; 0 + e36: 3c 87 std Y+12, r19 ; 0x0c + e38: 2b 87 std Y+11, r18 ; 0x0b + e3a: 20 e0 ldi r18, 0x00 ; 0 + e3c: 30 e0 ldi r19, 0x00 ; 0 + e3e: 40 e0 ldi r20, 0x00 ; 0 + e40: 50 e0 ldi r21, 0x00 ; 0 + e42: 80 e0 ldi r24, 0x00 ; 0 + e44: 90 e0 ldi r25, 0x00 ; 0 + e46: a0 e0 ldi r26, 0x00 ; 0 + e48: b0 e4 ldi r27, 0x40 ; 64 + e4a: 60 e0 ldi r22, 0x00 ; 0 + e4c: 70 e0 ldi r23, 0x00 ; 0 + e4e: ea 14 cp r14, r10 + e50: fb 04 cpc r15, r11 + e52: 0c 05 cpc r16, r12 + e54: 1d 05 cpc r17, r13 + e56: 40 f0 brcs .+16 ; 0xe68 <__divsf3+0xf4> + e58: 28 2b or r18, r24 + e5a: 39 2b or r19, r25 + e5c: 4a 2b or r20, r26 + e5e: 5b 2b or r21, r27 + e60: ea 18 sub r14, r10 + e62: fb 08 sbc r15, r11 + e64: 0c 09 sbc r16, r12 + e66: 1d 09 sbc r17, r13 + e68: b6 95 lsr r27 + e6a: a7 95 ror r26 + e6c: 97 95 ror r25 + e6e: 87 95 ror r24 + e70: ee 0c add r14, r14 + e72: ff 1c adc r15, r15 + e74: 00 1f adc r16, r16 + e76: 11 1f adc r17, r17 + e78: 6f 5f subi r22, 0xFF ; 255 + e7a: 7f 4f sbci r23, 0xFF ; 255 + e7c: 6f 31 cpi r22, 0x1F ; 31 + e7e: 71 05 cpc r23, r1 + e80: 31 f7 brne .-52 ; 0xe4e <__divsf3+0xda> + e82: da 01 movw r26, r20 + e84: c9 01 movw r24, r18 + e86: 8f 77 andi r24, 0x7F ; 127 + e88: 90 70 andi r25, 0x00 ; 0 + e8a: a0 70 andi r26, 0x00 ; 0 + e8c: b0 70 andi r27, 0x00 ; 0 + e8e: 80 34 cpi r24, 0x40 ; 64 + e90: 91 05 cpc r25, r1 + e92: a1 05 cpc r26, r1 + e94: b1 05 cpc r27, r1 + e96: 61 f4 brne .+24 ; 0xeb0 <__divsf3+0x13c> + e98: 27 fd sbrc r18, 7 + e9a: 0a c0 rjmp .+20 ; 0xeb0 <__divsf3+0x13c> + e9c: e1 14 cp r14, r1 + e9e: f1 04 cpc r15, r1 + ea0: 01 05 cpc r16, r1 + ea2: 11 05 cpc r17, r1 + ea4: 29 f0 breq .+10 ; 0xeb0 <__divsf3+0x13c> + ea6: 20 5c subi r18, 0xC0 ; 192 + ea8: 3f 4f sbci r19, 0xFF ; 255 + eaa: 4f 4f sbci r20, 0xFF ; 255 + eac: 5f 4f sbci r21, 0xFF ; 255 + eae: 20 78 andi r18, 0x80 ; 128 + eb0: 2d 87 std Y+13, r18 ; 0x0d + eb2: 3e 87 std Y+14, r19 ; 0x0e + eb4: 4f 87 std Y+15, r20 ; 0x0f + eb6: 58 8b std Y+16, r21 ; 0x10 + eb8: be 01 movw r22, r28 + eba: 67 5f subi r22, 0xF7 ; 247 + ebc: 7f 4f sbci r23, 0xFF ; 255 + ebe: cb 01 movw r24, r22 + ec0: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + ec4: 68 96 adiw r28, 0x18 ; 24 + ec6: ea e0 ldi r30, 0x0A ; 10 + ec8: 0c 94 8f 09 jmp 0x131e ; 0x131e <__epilogue_restores__+0x10> + +00000ecc <__fixsfsi>: + ecc: ac e0 ldi r26, 0x0C ; 12 + ece: b0 e0 ldi r27, 0x00 ; 0 + ed0: ec e6 ldi r30, 0x6C ; 108 + ed2: f7 e0 ldi r31, 0x07 ; 7 + ed4: 0c 94 7b 09 jmp 0x12f6 ; 0x12f6 <__prologue_saves__+0x20> + ed8: 69 83 std Y+1, r22 ; 0x01 + eda: 7a 83 std Y+2, r23 ; 0x02 + edc: 8b 83 std Y+3, r24 ; 0x03 + ede: 9c 83 std Y+4, r25 ; 0x04 + ee0: ce 01 movw r24, r28 + ee2: 01 96 adiw r24, 0x01 ; 1 + ee4: be 01 movw r22, r28 + ee6: 6b 5f subi r22, 0xFB ; 251 + ee8: 7f 4f sbci r23, 0xFF ; 255 + eea: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + eee: 8d 81 ldd r24, Y+5 ; 0x05 + ef0: 82 30 cpi r24, 0x02 ; 2 + ef2: 61 f1 breq .+88 ; 0xf4c <__fixsfsi+0x80> + ef4: 82 30 cpi r24, 0x02 ; 2 + ef6: 50 f1 brcs .+84 ; 0xf4c <__fixsfsi+0x80> + ef8: 84 30 cpi r24, 0x04 ; 4 + efa: 21 f4 brne .+8 ; 0xf04 <__fixsfsi+0x38> + efc: 8e 81 ldd r24, Y+6 ; 0x06 + efe: 88 23 and r24, r24 + f00: 51 f1 breq .+84 ; 0xf56 <__fixsfsi+0x8a> + f02: 2e c0 rjmp .+92 ; 0xf60 <__fixsfsi+0x94> + f04: 2f 81 ldd r18, Y+7 ; 0x07 + f06: 38 85 ldd r19, Y+8 ; 0x08 + f08: 37 fd sbrc r19, 7 + f0a: 20 c0 rjmp .+64 ; 0xf4c <__fixsfsi+0x80> + f0c: 6e 81 ldd r22, Y+6 ; 0x06 + f0e: 2f 31 cpi r18, 0x1F ; 31 + f10: 31 05 cpc r19, r1 + f12: 1c f0 brlt .+6 ; 0xf1a <__fixsfsi+0x4e> + f14: 66 23 and r22, r22 + f16: f9 f0 breq .+62 ; 0xf56 <__fixsfsi+0x8a> + f18: 23 c0 rjmp .+70 ; 0xf60 <__fixsfsi+0x94> + f1a: 8e e1 ldi r24, 0x1E ; 30 + f1c: 90 e0 ldi r25, 0x00 ; 0 + f1e: 82 1b sub r24, r18 + f20: 93 0b sbc r25, r19 + f22: 29 85 ldd r18, Y+9 ; 0x09 + f24: 3a 85 ldd r19, Y+10 ; 0x0a + f26: 4b 85 ldd r20, Y+11 ; 0x0b + f28: 5c 85 ldd r21, Y+12 ; 0x0c + f2a: 04 c0 rjmp .+8 ; 0xf34 <__fixsfsi+0x68> + f2c: 56 95 lsr r21 + f2e: 47 95 ror r20 + f30: 37 95 ror r19 + f32: 27 95 ror r18 + f34: 8a 95 dec r24 + f36: d2 f7 brpl .-12 ; 0xf2c <__fixsfsi+0x60> + f38: 66 23 and r22, r22 + f3a: b1 f0 breq .+44 ; 0xf68 <__fixsfsi+0x9c> + f3c: 50 95 com r21 + f3e: 40 95 com r20 + f40: 30 95 com r19 + f42: 21 95 neg r18 + f44: 3f 4f sbci r19, 0xFF ; 255 + f46: 4f 4f sbci r20, 0xFF ; 255 + f48: 5f 4f sbci r21, 0xFF ; 255 + f4a: 0e c0 rjmp .+28 ; 0xf68 <__fixsfsi+0x9c> + f4c: 20 e0 ldi r18, 0x00 ; 0 + f4e: 30 e0 ldi r19, 0x00 ; 0 + f50: 40 e0 ldi r20, 0x00 ; 0 + f52: 50 e0 ldi r21, 0x00 ; 0 + f54: 09 c0 rjmp .+18 ; 0xf68 <__fixsfsi+0x9c> + f56: 2f ef ldi r18, 0xFF ; 255 + f58: 3f ef ldi r19, 0xFF ; 255 + f5a: 4f ef ldi r20, 0xFF ; 255 + f5c: 5f e7 ldi r21, 0x7F ; 127 + f5e: 04 c0 rjmp .+8 ; 0xf68 <__fixsfsi+0x9c> + f60: 20 e0 ldi r18, 0x00 ; 0 + f62: 30 e0 ldi r19, 0x00 ; 0 + f64: 40 e0 ldi r20, 0x00 ; 0 + f66: 50 e8 ldi r21, 0x80 ; 128 + f68: b9 01 movw r22, r18 + f6a: ca 01 movw r24, r20 + f6c: 2c 96 adiw r28, 0x0c ; 12 + f6e: e2 e0 ldi r30, 0x02 ; 2 + f70: 0c 94 97 09 jmp 0x132e ; 0x132e <__epilogue_restores__+0x20> + +00000f74 <__pack_f>: + f74: df 92 push r13 + f76: ef 92 push r14 + f78: ff 92 push r15 + f7a: 0f 93 push r16 + f7c: 1f 93 push r17 + f7e: fc 01 movw r30, r24 + f80: e4 80 ldd r14, Z+4 ; 0x04 + f82: f5 80 ldd r15, Z+5 ; 0x05 + f84: 06 81 ldd r16, Z+6 ; 0x06 + f86: 17 81 ldd r17, Z+7 ; 0x07 + f88: d1 80 ldd r13, Z+1 ; 0x01 + f8a: 80 81 ld r24, Z + f8c: 82 30 cpi r24, 0x02 ; 2 + f8e: 48 f4 brcc .+18 ; 0xfa2 <__pack_f+0x2e> + f90: 80 e0 ldi r24, 0x00 ; 0 + f92: 90 e0 ldi r25, 0x00 ; 0 + f94: a0 e1 ldi r26, 0x10 ; 16 + f96: b0 e0 ldi r27, 0x00 ; 0 + f98: e8 2a or r14, r24 + f9a: f9 2a or r15, r25 + f9c: 0a 2b or r16, r26 + f9e: 1b 2b or r17, r27 + fa0: a5 c0 rjmp .+330 ; 0x10ec <__pack_f+0x178> + fa2: 84 30 cpi r24, 0x04 ; 4 + fa4: 09 f4 brne .+2 ; 0xfa8 <__pack_f+0x34> + fa6: 9f c0 rjmp .+318 ; 0x10e6 <__pack_f+0x172> + fa8: 82 30 cpi r24, 0x02 ; 2 + faa: 21 f4 brne .+8 ; 0xfb4 <__pack_f+0x40> + fac: ee 24 eor r14, r14 + fae: ff 24 eor r15, r15 + fb0: 87 01 movw r16, r14 + fb2: 05 c0 rjmp .+10 ; 0xfbe <__pack_f+0x4a> + fb4: e1 14 cp r14, r1 + fb6: f1 04 cpc r15, r1 + fb8: 01 05 cpc r16, r1 + fba: 11 05 cpc r17, r1 + fbc: 19 f4 brne .+6 ; 0xfc4 <__pack_f+0x50> + fbe: e0 e0 ldi r30, 0x00 ; 0 + fc0: f0 e0 ldi r31, 0x00 ; 0 + fc2: 96 c0 rjmp .+300 ; 0x10f0 <__pack_f+0x17c> + fc4: 62 81 ldd r22, Z+2 ; 0x02 + fc6: 73 81 ldd r23, Z+3 ; 0x03 + fc8: 9f ef ldi r25, 0xFF ; 255 + fca: 62 38 cpi r22, 0x82 ; 130 + fcc: 79 07 cpc r23, r25 + fce: 0c f0 brlt .+2 ; 0xfd2 <__pack_f+0x5e> + fd0: 5b c0 rjmp .+182 ; 0x1088 <__pack_f+0x114> + fd2: 22 e8 ldi r18, 0x82 ; 130 + fd4: 3f ef ldi r19, 0xFF ; 255 + fd6: 26 1b sub r18, r22 + fd8: 37 0b sbc r19, r23 + fda: 2a 31 cpi r18, 0x1A ; 26 + fdc: 31 05 cpc r19, r1 + fde: 2c f0 brlt .+10 ; 0xfea <__pack_f+0x76> + fe0: 20 e0 ldi r18, 0x00 ; 0 + fe2: 30 e0 ldi r19, 0x00 ; 0 + fe4: 40 e0 ldi r20, 0x00 ; 0 + fe6: 50 e0 ldi r21, 0x00 ; 0 + fe8: 2a c0 rjmp .+84 ; 0x103e <__pack_f+0xca> + fea: b8 01 movw r22, r16 + fec: a7 01 movw r20, r14 + fee: 02 2e mov r0, r18 + ff0: 04 c0 rjmp .+8 ; 0xffa <__pack_f+0x86> + ff2: 76 95 lsr r23 + ff4: 67 95 ror r22 + ff6: 57 95 ror r21 + ff8: 47 95 ror r20 + ffa: 0a 94 dec r0 + ffc: d2 f7 brpl .-12 ; 0xff2 <__pack_f+0x7e> + ffe: 81 e0 ldi r24, 0x01 ; 1 + 1000: 90 e0 ldi r25, 0x00 ; 0 + 1002: a0 e0 ldi r26, 0x00 ; 0 + 1004: b0 e0 ldi r27, 0x00 ; 0 + 1006: 04 c0 rjmp .+8 ; 0x1010 <__pack_f+0x9c> + 1008: 88 0f add r24, r24 + 100a: 99 1f adc r25, r25 + 100c: aa 1f adc r26, r26 + 100e: bb 1f adc r27, r27 + 1010: 2a 95 dec r18 + 1012: d2 f7 brpl .-12 ; 0x1008 <__pack_f+0x94> + 1014: 01 97 sbiw r24, 0x01 ; 1 + 1016: a1 09 sbc r26, r1 + 1018: b1 09 sbc r27, r1 + 101a: 8e 21 and r24, r14 + 101c: 9f 21 and r25, r15 + 101e: a0 23 and r26, r16 + 1020: b1 23 and r27, r17 + 1022: 00 97 sbiw r24, 0x00 ; 0 + 1024: a1 05 cpc r26, r1 + 1026: b1 05 cpc r27, r1 + 1028: 21 f0 breq .+8 ; 0x1032 <__pack_f+0xbe> + 102a: 81 e0 ldi r24, 0x01 ; 1 + 102c: 90 e0 ldi r25, 0x00 ; 0 + 102e: a0 e0 ldi r26, 0x00 ; 0 + 1030: b0 e0 ldi r27, 0x00 ; 0 + 1032: 9a 01 movw r18, r20 + 1034: ab 01 movw r20, r22 + 1036: 28 2b or r18, r24 + 1038: 39 2b or r19, r25 + 103a: 4a 2b or r20, r26 + 103c: 5b 2b or r21, r27 + 103e: da 01 movw r26, r20 + 1040: c9 01 movw r24, r18 + 1042: 8f 77 andi r24, 0x7F ; 127 + 1044: 90 70 andi r25, 0x00 ; 0 + 1046: a0 70 andi r26, 0x00 ; 0 + 1048: b0 70 andi r27, 0x00 ; 0 + 104a: 80 34 cpi r24, 0x40 ; 64 + 104c: 91 05 cpc r25, r1 + 104e: a1 05 cpc r26, r1 + 1050: b1 05 cpc r27, r1 + 1052: 39 f4 brne .+14 ; 0x1062 <__pack_f+0xee> + 1054: 27 ff sbrs r18, 7 + 1056: 09 c0 rjmp .+18 ; 0x106a <__pack_f+0xf6> + 1058: 20 5c subi r18, 0xC0 ; 192 + 105a: 3f 4f sbci r19, 0xFF ; 255 + 105c: 4f 4f sbci r20, 0xFF ; 255 + 105e: 5f 4f sbci r21, 0xFF ; 255 + 1060: 04 c0 rjmp .+8 ; 0x106a <__pack_f+0xf6> + 1062: 21 5c subi r18, 0xC1 ; 193 + 1064: 3f 4f sbci r19, 0xFF ; 255 + 1066: 4f 4f sbci r20, 0xFF ; 255 + 1068: 5f 4f sbci r21, 0xFF ; 255 + 106a: e0 e0 ldi r30, 0x00 ; 0 + 106c: f0 e0 ldi r31, 0x00 ; 0 + 106e: 20 30 cpi r18, 0x00 ; 0 + 1070: a0 e0 ldi r26, 0x00 ; 0 + 1072: 3a 07 cpc r19, r26 + 1074: a0 e0 ldi r26, 0x00 ; 0 + 1076: 4a 07 cpc r20, r26 + 1078: a0 e4 ldi r26, 0x40 ; 64 + 107a: 5a 07 cpc r21, r26 + 107c: 10 f0 brcs .+4 ; 0x1082 <__pack_f+0x10e> + 107e: e1 e0 ldi r30, 0x01 ; 1 + 1080: f0 e0 ldi r31, 0x00 ; 0 + 1082: 79 01 movw r14, r18 + 1084: 8a 01 movw r16, r20 + 1086: 27 c0 rjmp .+78 ; 0x10d6 <__pack_f+0x162> + 1088: 60 38 cpi r22, 0x80 ; 128 + 108a: 71 05 cpc r23, r1 + 108c: 64 f5 brge .+88 ; 0x10e6 <__pack_f+0x172> + 108e: fb 01 movw r30, r22 + 1090: e1 58 subi r30, 0x81 ; 129 + 1092: ff 4f sbci r31, 0xFF ; 255 + 1094: d8 01 movw r26, r16 + 1096: c7 01 movw r24, r14 + 1098: 8f 77 andi r24, 0x7F ; 127 + 109a: 90 70 andi r25, 0x00 ; 0 + 109c: a0 70 andi r26, 0x00 ; 0 + 109e: b0 70 andi r27, 0x00 ; 0 + 10a0: 80 34 cpi r24, 0x40 ; 64 + 10a2: 91 05 cpc r25, r1 + 10a4: a1 05 cpc r26, r1 + 10a6: b1 05 cpc r27, r1 + 10a8: 39 f4 brne .+14 ; 0x10b8 <__pack_f+0x144> + 10aa: e7 fe sbrs r14, 7 + 10ac: 0d c0 rjmp .+26 ; 0x10c8 <__pack_f+0x154> + 10ae: 80 e4 ldi r24, 0x40 ; 64 + 10b0: 90 e0 ldi r25, 0x00 ; 0 + 10b2: a0 e0 ldi r26, 0x00 ; 0 + 10b4: b0 e0 ldi r27, 0x00 ; 0 + 10b6: 04 c0 rjmp .+8 ; 0x10c0 <__pack_f+0x14c> + 10b8: 8f e3 ldi r24, 0x3F ; 63 + 10ba: 90 e0 ldi r25, 0x00 ; 0 + 10bc: a0 e0 ldi r26, 0x00 ; 0 + 10be: b0 e0 ldi r27, 0x00 ; 0 + 10c0: e8 0e add r14, r24 + 10c2: f9 1e adc r15, r25 + 10c4: 0a 1f adc r16, r26 + 10c6: 1b 1f adc r17, r27 + 10c8: 17 ff sbrs r17, 7 + 10ca: 05 c0 rjmp .+10 ; 0x10d6 <__pack_f+0x162> + 10cc: 16 95 lsr r17 + 10ce: 07 95 ror r16 + 10d0: f7 94 ror r15 + 10d2: e7 94 ror r14 + 10d4: 31 96 adiw r30, 0x01 ; 1 + 10d6: 87 e0 ldi r24, 0x07 ; 7 + 10d8: 16 95 lsr r17 + 10da: 07 95 ror r16 + 10dc: f7 94 ror r15 + 10de: e7 94 ror r14 + 10e0: 8a 95 dec r24 + 10e2: d1 f7 brne .-12 ; 0x10d8 <__pack_f+0x164> + 10e4: 05 c0 rjmp .+10 ; 0x10f0 <__pack_f+0x17c> + 10e6: ee 24 eor r14, r14 + 10e8: ff 24 eor r15, r15 + 10ea: 87 01 movw r16, r14 + 10ec: ef ef ldi r30, 0xFF ; 255 + 10ee: f0 e0 ldi r31, 0x00 ; 0 + 10f0: 6e 2f mov r22, r30 + 10f2: 67 95 ror r22 + 10f4: 66 27 eor r22, r22 + 10f6: 67 95 ror r22 + 10f8: 90 2f mov r25, r16 + 10fa: 9f 77 andi r25, 0x7F ; 127 + 10fc: d7 94 ror r13 + 10fe: dd 24 eor r13, r13 + 1100: d7 94 ror r13 + 1102: 8e 2f mov r24, r30 + 1104: 86 95 lsr r24 + 1106: 49 2f mov r20, r25 + 1108: 46 2b or r20, r22 + 110a: 58 2f mov r21, r24 + 110c: 5d 29 or r21, r13 + 110e: b7 01 movw r22, r14 + 1110: ca 01 movw r24, r20 + 1112: 1f 91 pop r17 + 1114: 0f 91 pop r16 + 1116: ff 90 pop r15 + 1118: ef 90 pop r14 + 111a: df 90 pop r13 + 111c: 08 95 ret + +0000111e <__unpack_f>: + 111e: fc 01 movw r30, r24 + 1120: db 01 movw r26, r22 + 1122: 40 81 ld r20, Z + 1124: 51 81 ldd r21, Z+1 ; 0x01 + 1126: 22 81 ldd r18, Z+2 ; 0x02 + 1128: 62 2f mov r22, r18 + 112a: 6f 77 andi r22, 0x7F ; 127 + 112c: 70 e0 ldi r23, 0x00 ; 0 + 112e: 22 1f adc r18, r18 + 1130: 22 27 eor r18, r18 + 1132: 22 1f adc r18, r18 + 1134: 93 81 ldd r25, Z+3 ; 0x03 + 1136: 89 2f mov r24, r25 + 1138: 88 0f add r24, r24 + 113a: 82 2b or r24, r18 + 113c: 28 2f mov r18, r24 + 113e: 30 e0 ldi r19, 0x00 ; 0 + 1140: 99 1f adc r25, r25 + 1142: 99 27 eor r25, r25 + 1144: 99 1f adc r25, r25 + 1146: 11 96 adiw r26, 0x01 ; 1 + 1148: 9c 93 st X, r25 + 114a: 11 97 sbiw r26, 0x01 ; 1 + 114c: 21 15 cp r18, r1 + 114e: 31 05 cpc r19, r1 + 1150: a9 f5 brne .+106 ; 0x11bc <__unpack_f+0x9e> + 1152: 41 15 cp r20, r1 + 1154: 51 05 cpc r21, r1 + 1156: 61 05 cpc r22, r1 + 1158: 71 05 cpc r23, r1 + 115a: 11 f4 brne .+4 ; 0x1160 <__unpack_f+0x42> + 115c: 82 e0 ldi r24, 0x02 ; 2 + 115e: 37 c0 rjmp .+110 ; 0x11ce <__unpack_f+0xb0> + 1160: 82 e8 ldi r24, 0x82 ; 130 + 1162: 9f ef ldi r25, 0xFF ; 255 + 1164: 13 96 adiw r26, 0x03 ; 3 + 1166: 9c 93 st X, r25 + 1168: 8e 93 st -X, r24 + 116a: 12 97 sbiw r26, 0x02 ; 2 + 116c: 9a 01 movw r18, r20 + 116e: ab 01 movw r20, r22 + 1170: 67 e0 ldi r22, 0x07 ; 7 + 1172: 22 0f add r18, r18 + 1174: 33 1f adc r19, r19 + 1176: 44 1f adc r20, r20 + 1178: 55 1f adc r21, r21 + 117a: 6a 95 dec r22 + 117c: d1 f7 brne .-12 ; 0x1172 <__unpack_f+0x54> + 117e: 83 e0 ldi r24, 0x03 ; 3 + 1180: 8c 93 st X, r24 + 1182: 0d c0 rjmp .+26 ; 0x119e <__unpack_f+0x80> + 1184: 22 0f add r18, r18 + 1186: 33 1f adc r19, r19 + 1188: 44 1f adc r20, r20 + 118a: 55 1f adc r21, r21 + 118c: 12 96 adiw r26, 0x02 ; 2 + 118e: 8d 91 ld r24, X+ + 1190: 9c 91 ld r25, X + 1192: 13 97 sbiw r26, 0x03 ; 3 + 1194: 01 97 sbiw r24, 0x01 ; 1 + 1196: 13 96 adiw r26, 0x03 ; 3 + 1198: 9c 93 st X, r25 + 119a: 8e 93 st -X, r24 + 119c: 12 97 sbiw r26, 0x02 ; 2 + 119e: 20 30 cpi r18, 0x00 ; 0 + 11a0: 80 e0 ldi r24, 0x00 ; 0 + 11a2: 38 07 cpc r19, r24 + 11a4: 80 e0 ldi r24, 0x00 ; 0 + 11a6: 48 07 cpc r20, r24 + 11a8: 80 e4 ldi r24, 0x40 ; 64 + 11aa: 58 07 cpc r21, r24 + 11ac: 58 f3 brcs .-42 ; 0x1184 <__unpack_f+0x66> + 11ae: 14 96 adiw r26, 0x04 ; 4 + 11b0: 2d 93 st X+, r18 + 11b2: 3d 93 st X+, r19 + 11b4: 4d 93 st X+, r20 + 11b6: 5c 93 st X, r21 + 11b8: 17 97 sbiw r26, 0x07 ; 7 + 11ba: 08 95 ret + 11bc: 2f 3f cpi r18, 0xFF ; 255 + 11be: 31 05 cpc r19, r1 + 11c0: 79 f4 brne .+30 ; 0x11e0 <__unpack_f+0xc2> + 11c2: 41 15 cp r20, r1 + 11c4: 51 05 cpc r21, r1 + 11c6: 61 05 cpc r22, r1 + 11c8: 71 05 cpc r23, r1 + 11ca: 19 f4 brne .+6 ; 0x11d2 <__unpack_f+0xb4> + 11cc: 84 e0 ldi r24, 0x04 ; 4 + 11ce: 8c 93 st X, r24 + 11d0: 08 95 ret + 11d2: 64 ff sbrs r22, 4 + 11d4: 03 c0 rjmp .+6 ; 0x11dc <__unpack_f+0xbe> + 11d6: 81 e0 ldi r24, 0x01 ; 1 + 11d8: 8c 93 st X, r24 + 11da: 12 c0 rjmp .+36 ; 0x1200 <__unpack_f+0xe2> + 11dc: 1c 92 st X, r1 + 11de: 10 c0 rjmp .+32 ; 0x1200 <__unpack_f+0xe2> + 11e0: 2f 57 subi r18, 0x7F ; 127 + 11e2: 30 40 sbci r19, 0x00 ; 0 + 11e4: 13 96 adiw r26, 0x03 ; 3 + 11e6: 3c 93 st X, r19 + 11e8: 2e 93 st -X, r18 + 11ea: 12 97 sbiw r26, 0x02 ; 2 + 11ec: 83 e0 ldi r24, 0x03 ; 3 + 11ee: 8c 93 st X, r24 + 11f0: 87 e0 ldi r24, 0x07 ; 7 + 11f2: 44 0f add r20, r20 + 11f4: 55 1f adc r21, r21 + 11f6: 66 1f adc r22, r22 + 11f8: 77 1f adc r23, r23 + 11fa: 8a 95 dec r24 + 11fc: d1 f7 brne .-12 ; 0x11f2 <__unpack_f+0xd4> + 11fe: 70 64 ori r23, 0x40 ; 64 + 1200: 14 96 adiw r26, 0x04 ; 4 + 1202: 4d 93 st X+, r20 + 1204: 5d 93 st X+, r21 + 1206: 6d 93 st X+, r22 + 1208: 7c 93 st X, r23 + 120a: 17 97 sbiw r26, 0x07 ; 7 + 120c: 08 95 ret + +0000120e <__divmodhi4>: + 120e: 97 fb bst r25, 7 + 1210: 09 2e mov r0, r25 + 1212: 07 26 eor r0, r23 + 1214: 0a d0 rcall .+20 ; 0x122a <__divmodhi4_neg1> + 1216: 77 fd sbrc r23, 7 + 1218: 04 d0 rcall .+8 ; 0x1222 <__divmodhi4_neg2> + 121a: 49 d0 rcall .+146 ; 0x12ae <__udivmodhi4> + 121c: 06 d0 rcall .+12 ; 0x122a <__divmodhi4_neg1> + 121e: 00 20 and r0, r0 + 1220: 1a f4 brpl .+6 ; 0x1228 <__divmodhi4_exit> + +00001222 <__divmodhi4_neg2>: + 1222: 70 95 com r23 + 1224: 61 95 neg r22 + 1226: 7f 4f sbci r23, 0xFF ; 255 + +00001228 <__divmodhi4_exit>: + 1228: 08 95 ret + +0000122a <__divmodhi4_neg1>: + 122a: f6 f7 brtc .-4 ; 0x1228 <__divmodhi4_exit> + 122c: 90 95 com r25 + 122e: 81 95 neg r24 + 1230: 9f 4f sbci r25, 0xFF ; 255 + 1232: 08 95 ret + +00001234 <__udivmodsi4>: + 1234: a1 e2 ldi r26, 0x21 ; 33 + 1236: 1a 2e mov r1, r26 + 1238: aa 1b sub r26, r26 + 123a: bb 1b sub r27, r27 + 123c: fd 01 movw r30, r26 + 123e: 0d c0 rjmp .+26 ; 0x125a <__udivmodsi4_ep> + +00001240 <__udivmodsi4_loop>: + 1240: aa 1f adc r26, r26 + 1242: bb 1f adc r27, r27 + 1244: ee 1f adc r30, r30 + 1246: ff 1f adc r31, r31 + 1248: a2 17 cp r26, r18 + 124a: b3 07 cpc r27, r19 + 124c: e4 07 cpc r30, r20 + 124e: f5 07 cpc r31, r21 + 1250: 20 f0 brcs .+8 ; 0x125a <__udivmodsi4_ep> + 1252: a2 1b sub r26, r18 + 1254: b3 0b sbc r27, r19 + 1256: e4 0b sbc r30, r20 + 1258: f5 0b sbc r31, r21 + +0000125a <__udivmodsi4_ep>: + 125a: 66 1f adc r22, r22 + 125c: 77 1f adc r23, r23 + 125e: 88 1f adc r24, r24 + 1260: 99 1f adc r25, r25 + 1262: 1a 94 dec r1 + 1264: 69 f7 brne .-38 ; 0x1240 <__udivmodsi4_loop> + 1266: 60 95 com r22 + 1268: 70 95 com r23 + 126a: 80 95 com r24 + 126c: 90 95 com r25 + 126e: 9b 01 movw r18, r22 + 1270: ac 01 movw r20, r24 + 1272: bd 01 movw r22, r26 + 1274: cf 01 movw r24, r30 + 1276: 08 95 ret + +00001278 <__divmodsi4>: + 1278: 97 fb bst r25, 7 + 127a: 09 2e mov r0, r25 + 127c: 05 26 eor r0, r21 + 127e: 0e d0 rcall .+28 ; 0x129c <__divmodsi4_neg1> + 1280: 57 fd sbrc r21, 7 + 1282: 04 d0 rcall .+8 ; 0x128c <__divmodsi4_neg2> + 1284: d7 df rcall .-82 ; 0x1234 <__udivmodsi4> + 1286: 0a d0 rcall .+20 ; 0x129c <__divmodsi4_neg1> + 1288: 00 1c adc r0, r0 + 128a: 38 f4 brcc .+14 ; 0x129a <__divmodsi4_exit> + +0000128c <__divmodsi4_neg2>: + 128c: 50 95 com r21 + 128e: 40 95 com r20 + 1290: 30 95 com r19 + 1292: 21 95 neg r18 + 1294: 3f 4f sbci r19, 0xFF ; 255 + 1296: 4f 4f sbci r20, 0xFF ; 255 + 1298: 5f 4f sbci r21, 0xFF ; 255 + +0000129a <__divmodsi4_exit>: + 129a: 08 95 ret + +0000129c <__divmodsi4_neg1>: + 129c: f6 f7 brtc .-4 ; 0x129a <__divmodsi4_exit> + 129e: 90 95 com r25 + 12a0: 80 95 com r24 + 12a2: 70 95 com r23 + 12a4: 61 95 neg r22 + 12a6: 7f 4f sbci r23, 0xFF ; 255 + 12a8: 8f 4f sbci r24, 0xFF ; 255 + 12aa: 9f 4f sbci r25, 0xFF ; 255 + 12ac: 08 95 ret + +000012ae <__udivmodhi4>: + 12ae: aa 1b sub r26, r26 + 12b0: bb 1b sub r27, r27 + 12b2: 51 e1 ldi r21, 0x11 ; 17 + 12b4: 07 c0 rjmp .+14 ; 0x12c4 <__udivmodhi4_ep> + +000012b6 <__udivmodhi4_loop>: + 12b6: aa 1f adc r26, r26 + 12b8: bb 1f adc r27, r27 + 12ba: a6 17 cp r26, r22 + 12bc: b7 07 cpc r27, r23 + 12be: 10 f0 brcs .+4 ; 0x12c4 <__udivmodhi4_ep> + 12c0: a6 1b sub r26, r22 + 12c2: b7 0b sbc r27, r23 + +000012c4 <__udivmodhi4_ep>: + 12c4: 88 1f adc r24, r24 + 12c6: 99 1f adc r25, r25 + 12c8: 5a 95 dec r21 + 12ca: a9 f7 brne .-22 ; 0x12b6 <__udivmodhi4_loop> + 12cc: 80 95 com r24 + 12ce: 90 95 com r25 + 12d0: bc 01 movw r22, r24 + 12d2: cd 01 movw r24, r26 + 12d4: 08 95 ret + +000012d6 <__prologue_saves__>: + 12d6: 2f 92 push r2 + 12d8: 3f 92 push r3 + 12da: 4f 92 push r4 + 12dc: 5f 92 push r5 + 12de: 6f 92 push r6 + 12e0: 7f 92 push r7 + 12e2: 8f 92 push r8 + 12e4: 9f 92 push r9 + 12e6: af 92 push r10 + 12e8: bf 92 push r11 + 12ea: cf 92 push r12 + 12ec: df 92 push r13 + 12ee: ef 92 push r14 + 12f0: ff 92 push r15 + 12f2: 0f 93 push r16 + 12f4: 1f 93 push r17 + 12f6: cf 93 push r28 + 12f8: df 93 push r29 + 12fa: cd b7 in r28, 0x3d ; 61 + 12fc: de b7 in r29, 0x3e ; 62 + 12fe: ca 1b sub r28, r26 + 1300: db 0b sbc r29, r27 + 1302: 0f b6 in r0, 0x3f ; 63 + 1304: f8 94 cli + 1306: de bf out 0x3e, r29 ; 62 + 1308: 0f be out 0x3f, r0 ; 63 + 130a: cd bf out 0x3d, r28 ; 61 + 130c: 09 94 ijmp + +0000130e <__epilogue_restores__>: + 130e: 2a 88 ldd r2, Y+18 ; 0x12 + 1310: 39 88 ldd r3, Y+17 ; 0x11 + 1312: 48 88 ldd r4, Y+16 ; 0x10 + 1314: 5f 84 ldd r5, Y+15 ; 0x0f + 1316: 6e 84 ldd r6, Y+14 ; 0x0e + 1318: 7d 84 ldd r7, Y+13 ; 0x0d + 131a: 8c 84 ldd r8, Y+12 ; 0x0c + 131c: 9b 84 ldd r9, Y+11 ; 0x0b + 131e: aa 84 ldd r10, Y+10 ; 0x0a + 1320: b9 84 ldd r11, Y+9 ; 0x09 + 1322: c8 84 ldd r12, Y+8 ; 0x08 + 1324: df 80 ldd r13, Y+7 ; 0x07 + 1326: ee 80 ldd r14, Y+6 ; 0x06 + 1328: fd 80 ldd r15, Y+5 ; 0x05 + 132a: 0c 81 ldd r16, Y+4 ; 0x04 + 132c: 1b 81 ldd r17, Y+3 ; 0x03 + 132e: aa 81 ldd r26, Y+2 ; 0x02 + 1330: b9 81 ldd r27, Y+1 ; 0x01 + 1332: ce 0f add r28, r30 + 1334: d1 1d adc r29, r1 + 1336: 0f b6 in r0, 0x3f ; 63 + 1338: f8 94 cli + 133a: de bf out 0x3e, r29 ; 62 + 133c: 0f be out 0x3f, r0 ; 63 + 133e: cd bf out 0x3d, r28 ; 61 + 1340: ed 01 movw r28, r26 + 1342: 08 95 ret + +00001344 <__tablejump2__>: + 1344: ee 0f add r30, r30 + 1346: ff 1f adc r31, r31 + +00001348 <__tablejump__>: + 1348: 05 90 lpm r0, Z+ + 134a: f4 91 lpm r31, Z+ + 134c: e0 2d mov r30, r0 + 134e: 09 94 ijmp + +00001350 <sin>: + 1350: 9f 93 push r25 + 1352: 05 d0 rcall .+10 ; 0x135e <__fp_rempio2> + 1354: 0f 90 pop r0 + 1356: 07 fc sbrc r0, 7 + 1358: ee 5f subi r30, 0xFE ; 254 + 135a: 28 c0 rjmp .+80 ; 0x13ac <__fp_sinus> + 135c: ce c0 rjmp .+412 ; 0x14fa <__fp_nan> + +0000135e <__fp_rempio2>: + 135e: 3f d0 rcall .+126 ; 0x13de <__fp_splitA> + 1360: e8 f3 brcs .-6 ; 0x135c <sin+0xc> + 1362: e8 94 clt + 1364: e0 e0 ldi r30, 0x00 ; 0 + 1366: bb 27 eor r27, r27 + 1368: 9f 57 subi r25, 0x7F ; 127 + 136a: f0 f0 brcs .+60 ; 0x13a8 <__fp_rempio2+0x4a> + 136c: 2a ed ldi r18, 0xDA ; 218 + 136e: 3f e0 ldi r19, 0x0F ; 15 + 1370: 49 ec ldi r20, 0xC9 ; 201 + 1372: 06 c0 rjmp .+12 ; 0x1380 <__fp_rempio2+0x22> + 1374: ee 0f add r30, r30 + 1376: bb 0f add r27, r27 + 1378: 66 1f adc r22, r22 + 137a: 77 1f adc r23, r23 + 137c: 88 1f adc r24, r24 + 137e: 28 f0 brcs .+10 ; 0x138a <__fp_rempio2+0x2c> + 1380: b2 3a cpi r27, 0xA2 ; 162 + 1382: 62 07 cpc r22, r18 + 1384: 73 07 cpc r23, r19 + 1386: 84 07 cpc r24, r20 + 1388: 28 f0 brcs .+10 ; 0x1394 <__fp_rempio2+0x36> + 138a: b2 5a subi r27, 0xA2 ; 162 + 138c: 62 0b sbc r22, r18 + 138e: 73 0b sbc r23, r19 + 1390: 84 0b sbc r24, r20 + 1392: e3 95 inc r30 + 1394: 9a 95 dec r25 + 1396: 72 f7 brpl .-36 ; 0x1374 <__fp_rempio2+0x16> + 1398: 80 38 cpi r24, 0x80 ; 128 + 139a: 30 f4 brcc .+12 ; 0x13a8 <__fp_rempio2+0x4a> + 139c: 9a 95 dec r25 + 139e: bb 0f add r27, r27 + 13a0: 66 1f adc r22, r22 + 13a2: 77 1f adc r23, r23 + 13a4: 88 1f adc r24, r24 + 13a6: d2 f7 brpl .-12 ; 0x139c <__fp_rempio2+0x3e> + 13a8: 90 48 sbci r25, 0x80 ; 128 + 13aa: 9b c0 rjmp .+310 ; 0x14e2 <__fp_mpack_finite> + +000013ac <__fp_sinus>: + 13ac: ef 93 push r30 + 13ae: e0 ff sbrs r30, 0 + 13b0: 06 c0 rjmp .+12 ; 0x13be <__fp_sinus+0x12> + 13b2: a2 ea ldi r26, 0xA2 ; 162 + 13b4: 2a ed ldi r18, 0xDA ; 218 + 13b6: 3f e0 ldi r19, 0x0F ; 15 + 13b8: 49 ec ldi r20, 0xC9 ; 201 + 13ba: 5f eb ldi r21, 0xBF ; 191 + 13bc: 37 d0 rcall .+110 ; 0x142c <__addsf3x> + 13be: bf d0 rcall .+382 ; 0x153e <__fp_round> + 13c0: 0f 90 pop r0 + 13c2: 03 94 inc r0 + 13c4: 01 fc sbrc r0, 1 + 13c6: 90 58 subi r25, 0x80 ; 128 + 13c8: e8 e6 ldi r30, 0x68 ; 104 + 13ca: f0 e0 ldi r31, 0x00 ; 0 + 13cc: 99 c0 rjmp .+306 ; 0x1500 <__fp_powsodd> + +000013ce <__fp_split3>: + 13ce: 57 fd sbrc r21, 7 + 13d0: 90 58 subi r25, 0x80 ; 128 + 13d2: 44 0f add r20, r20 + 13d4: 55 1f adc r21, r21 + 13d6: 59 f0 breq .+22 ; 0x13ee <__fp_splitA+0x10> + 13d8: 5f 3f cpi r21, 0xFF ; 255 + 13da: 71 f0 breq .+28 ; 0x13f8 <__fp_splitA+0x1a> + 13dc: 47 95 ror r20 + +000013de <__fp_splitA>: + 13de: 88 0f add r24, r24 + 13e0: 97 fb bst r25, 7 + 13e2: 99 1f adc r25, r25 + 13e4: 61 f0 breq .+24 ; 0x13fe <__fp_splitA+0x20> + 13e6: 9f 3f cpi r25, 0xFF ; 255 + 13e8: 79 f0 breq .+30 ; 0x1408 <__fp_splitA+0x2a> + 13ea: 87 95 ror r24 + 13ec: 08 95 ret + 13ee: 12 16 cp r1, r18 + 13f0: 13 06 cpc r1, r19 + 13f2: 14 06 cpc r1, r20 + 13f4: 55 1f adc r21, r21 + 13f6: f2 cf rjmp .-28 ; 0x13dc <__fp_split3+0xe> + 13f8: 46 95 lsr r20 + 13fa: f1 df rcall .-30 ; 0x13de <__fp_splitA> + 13fc: 08 c0 rjmp .+16 ; 0x140e <__fp_splitA+0x30> + 13fe: 16 16 cp r1, r22 + 1400: 17 06 cpc r1, r23 + 1402: 18 06 cpc r1, r24 + 1404: 99 1f adc r25, r25 + 1406: f1 cf rjmp .-30 ; 0x13ea <__fp_splitA+0xc> + 1408: 86 95 lsr r24 + 140a: 71 05 cpc r23, r1 + 140c: 61 05 cpc r22, r1 + 140e: 08 94 sec + 1410: 08 95 ret + 1412: 87 d0 rcall .+270 ; 0x1522 <__fp_pscA> + 1414: 30 f0 brcs .+12 ; 0x1422 <__fp_splitA+0x44> + 1416: 8c d0 rcall .+280 ; 0x1530 <__fp_pscB> + 1418: 20 f0 brcs .+8 ; 0x1422 <__fp_splitA+0x44> + 141a: 31 f4 brne .+12 ; 0x1428 <__fp_splitA+0x4a> + 141c: 9f 3f cpi r25, 0xFF ; 255 + 141e: 11 f4 brne .+4 ; 0x1424 <__fp_splitA+0x46> + 1420: 1e f4 brtc .+6 ; 0x1428 <__fp_splitA+0x4a> + 1422: 6b c0 rjmp .+214 ; 0x14fa <__fp_nan> + 1424: 0e f4 brtc .+2 ; 0x1428 <__fp_splitA+0x4a> + 1426: e0 95 com r30 + 1428: e7 fb bst r30, 7 + 142a: 53 c0 rjmp .+166 ; 0x14d2 <__fp_inf> + +0000142c <__addsf3x>: + 142c: e9 2f mov r30, r25 + 142e: cf df rcall .-98 ; 0x13ce <__fp_split3> + 1430: 80 f3 brcs .-32 ; 0x1412 <__fp_splitA+0x34> + 1432: ba 17 cp r27, r26 + 1434: 62 07 cpc r22, r18 + 1436: 73 07 cpc r23, r19 + 1438: 84 07 cpc r24, r20 + 143a: 95 07 cpc r25, r21 + 143c: 18 f0 brcs .+6 ; 0x1444 <__addsf3x+0x18> + 143e: 71 f4 brne .+28 ; 0x145c <__addsf3x+0x30> + 1440: 9e f5 brtc .+102 ; 0x14a8 <__addsf3x+0x7c> + 1442: 8e c0 rjmp .+284 ; 0x1560 <__fp_zero> + 1444: 0e f4 brtc .+2 ; 0x1448 <__addsf3x+0x1c> + 1446: e0 95 com r30 + 1448: 0b 2e mov r0, r27 + 144a: ba 2f mov r27, r26 + 144c: a0 2d mov r26, r0 + 144e: 0b 01 movw r0, r22 + 1450: b9 01 movw r22, r18 + 1452: 90 01 movw r18, r0 + 1454: 0c 01 movw r0, r24 + 1456: ca 01 movw r24, r20 + 1458: a0 01 movw r20, r0 + 145a: 11 24 eor r1, r1 + 145c: ff 27 eor r31, r31 + 145e: 59 1b sub r21, r25 + 1460: 99 f0 breq .+38 ; 0x1488 <__addsf3x+0x5c> + 1462: 59 3f cpi r21, 0xF9 ; 249 + 1464: 50 f4 brcc .+20 ; 0x147a <__addsf3x+0x4e> + 1466: 50 3e cpi r21, 0xE0 ; 224 + 1468: 68 f1 brcs .+90 ; 0x14c4 <__addsf3x+0x98> + 146a: 1a 16 cp r1, r26 + 146c: f0 40 sbci r31, 0x00 ; 0 + 146e: a2 2f mov r26, r18 + 1470: 23 2f mov r18, r19 + 1472: 34 2f mov r19, r20 + 1474: 44 27 eor r20, r20 + 1476: 58 5f subi r21, 0xF8 ; 248 + 1478: f3 cf rjmp .-26 ; 0x1460 <__addsf3x+0x34> + 147a: 46 95 lsr r20 + 147c: 37 95 ror r19 + 147e: 27 95 ror r18 + 1480: a7 95 ror r26 + 1482: f0 40 sbci r31, 0x00 ; 0 + 1484: 53 95 inc r21 + 1486: c9 f7 brne .-14 ; 0x147a <__addsf3x+0x4e> + 1488: 7e f4 brtc .+30 ; 0x14a8 <__addsf3x+0x7c> + 148a: 1f 16 cp r1, r31 + 148c: ba 0b sbc r27, r26 + 148e: 62 0b sbc r22, r18 + 1490: 73 0b sbc r23, r19 + 1492: 84 0b sbc r24, r20 + 1494: ba f0 brmi .+46 ; 0x14c4 <__addsf3x+0x98> + 1496: 91 50 subi r25, 0x01 ; 1 + 1498: a1 f0 breq .+40 ; 0x14c2 <__addsf3x+0x96> + 149a: ff 0f add r31, r31 + 149c: bb 1f adc r27, r27 + 149e: 66 1f adc r22, r22 + 14a0: 77 1f adc r23, r23 + 14a2: 88 1f adc r24, r24 + 14a4: c2 f7 brpl .-16 ; 0x1496 <__addsf3x+0x6a> + 14a6: 0e c0 rjmp .+28 ; 0x14c4 <__addsf3x+0x98> + 14a8: ba 0f add r27, r26 + 14aa: 62 1f adc r22, r18 + 14ac: 73 1f adc r23, r19 + 14ae: 84 1f adc r24, r20 + 14b0: 48 f4 brcc .+18 ; 0x14c4 <__addsf3x+0x98> + 14b2: 87 95 ror r24 + 14b4: 77 95 ror r23 + 14b6: 67 95 ror r22 + 14b8: b7 95 ror r27 + 14ba: f7 95 ror r31 + 14bc: 9e 3f cpi r25, 0xFE ; 254 + 14be: 08 f0 brcs .+2 ; 0x14c2 <__addsf3x+0x96> + 14c0: b3 cf rjmp .-154 ; 0x1428 <__fp_splitA+0x4a> + 14c2: 93 95 inc r25 + 14c4: 88 0f add r24, r24 + 14c6: 08 f0 brcs .+2 ; 0x14ca <__addsf3x+0x9e> + 14c8: 99 27 eor r25, r25 + 14ca: ee 0f add r30, r30 + 14cc: 97 95 ror r25 + 14ce: 87 95 ror r24 + 14d0: 08 95 ret + +000014d2 <__fp_inf>: + 14d2: 97 f9 bld r25, 7 + 14d4: 9f 67 ori r25, 0x7F ; 127 + 14d6: 80 e8 ldi r24, 0x80 ; 128 + 14d8: 70 e0 ldi r23, 0x00 ; 0 + 14da: 60 e0 ldi r22, 0x00 ; 0 + 14dc: 08 95 ret + +000014de <__fp_mpack>: + 14de: 9f 3f cpi r25, 0xFF ; 255 + 14e0: 31 f0 breq .+12 ; 0x14ee <__fp_mpack_finite+0xc> + +000014e2 <__fp_mpack_finite>: + 14e2: 91 50 subi r25, 0x01 ; 1 + 14e4: 20 f4 brcc .+8 ; 0x14ee <__fp_mpack_finite+0xc> + 14e6: 87 95 ror r24 + 14e8: 77 95 ror r23 + 14ea: 67 95 ror r22 + 14ec: b7 95 ror r27 + 14ee: 88 0f add r24, r24 + 14f0: 91 1d adc r25, r1 + 14f2: 96 95 lsr r25 + 14f4: 87 95 ror r24 + 14f6: 97 f9 bld r25, 7 + 14f8: 08 95 ret + +000014fa <__fp_nan>: + 14fa: 9f ef ldi r25, 0xFF ; 255 + 14fc: 80 ec ldi r24, 0xC0 ; 192 + 14fe: 08 95 ret + +00001500 <__fp_powsodd>: + 1500: 9f 93 push r25 + 1502: 8f 93 push r24 + 1504: 7f 93 push r23 + 1506: 6f 93 push r22 + 1508: ff 93 push r31 + 150a: ef 93 push r30 + 150c: 9b 01 movw r18, r22 + 150e: ac 01 movw r20, r24 + 1510: 37 db rcall .-2450 ; 0xb80 <__mulsf3> + 1512: ef 91 pop r30 + 1514: ff 91 pop r31 + 1516: 2b d0 rcall .+86 ; 0x156e <__fp_powser> + 1518: 2f 91 pop r18 + 151a: 3f 91 pop r19 + 151c: 4f 91 pop r20 + 151e: 5f 91 pop r21 + 1520: 2f cb rjmp .-2466 ; 0xb80 <__mulsf3> + +00001522 <__fp_pscA>: + 1522: 00 24 eor r0, r0 + 1524: 0a 94 dec r0 + 1526: 16 16 cp r1, r22 + 1528: 17 06 cpc r1, r23 + 152a: 18 06 cpc r1, r24 + 152c: 09 06 cpc r0, r25 + 152e: 08 95 ret + +00001530 <__fp_pscB>: + 1530: 00 24 eor r0, r0 + 1532: 0a 94 dec r0 + 1534: 12 16 cp r1, r18 + 1536: 13 06 cpc r1, r19 + 1538: 14 06 cpc r1, r20 + 153a: 05 06 cpc r0, r21 + 153c: 08 95 ret + +0000153e <__fp_round>: + 153e: 09 2e mov r0, r25 + 1540: 03 94 inc r0 + 1542: 00 0c add r0, r0 + 1544: 11 f4 brne .+4 ; 0x154a <__fp_round+0xc> + 1546: 88 23 and r24, r24 + 1548: 52 f0 brmi .+20 ; 0x155e <__fp_round+0x20> + 154a: bb 0f add r27, r27 + 154c: 40 f4 brcc .+16 ; 0x155e <__fp_round+0x20> + 154e: bf 2b or r27, r31 + 1550: 11 f4 brne .+4 ; 0x1556 <__fp_round+0x18> + 1552: 60 ff sbrs r22, 0 + 1554: 04 c0 rjmp .+8 ; 0x155e <__fp_round+0x20> + 1556: 6f 5f subi r22, 0xFF ; 255 + 1558: 7f 4f sbci r23, 0xFF ; 255 + 155a: 8f 4f sbci r24, 0xFF ; 255 + 155c: 9f 4f sbci r25, 0xFF ; 255 + 155e: 08 95 ret + +00001560 <__fp_zero>: + 1560: e8 94 clt + +00001562 <__fp_szero>: + 1562: bb 27 eor r27, r27 + 1564: 66 27 eor r22, r22 + 1566: 77 27 eor r23, r23 + 1568: cb 01 movw r24, r22 + 156a: 97 f9 bld r25, 7 + 156c: 08 95 ret + +0000156e <__fp_powser>: + 156e: df 93 push r29 + 1570: cf 93 push r28 + 1572: 1f 93 push r17 + 1574: 0f 93 push r16 + 1576: ff 92 push r15 + 1578: ef 92 push r14 + 157a: df 92 push r13 + 157c: 7b 01 movw r14, r22 + 157e: 8c 01 movw r16, r24 + 1580: 68 94 set + 1582: 05 c0 rjmp .+10 ; 0x158e <__fp_powser+0x20> + 1584: da 2e mov r13, r26 + 1586: ef 01 movw r28, r30 + 1588: 21 d0 rcall .+66 ; 0x15cc <__mulsf3x> + 158a: fe 01 movw r30, r28 + 158c: e8 94 clt + 158e: a5 91 lpm r26, Z+ + 1590: 25 91 lpm r18, Z+ + 1592: 35 91 lpm r19, Z+ + 1594: 45 91 lpm r20, Z+ + 1596: 55 91 lpm r21, Z+ + 1598: ae f3 brts .-22 ; 0x1584 <__fp_powser+0x16> + 159a: ef 01 movw r28, r30 + 159c: 47 df rcall .-370 ; 0x142c <__addsf3x> + 159e: fe 01 movw r30, r28 + 15a0: 97 01 movw r18, r14 + 15a2: a8 01 movw r20, r16 + 15a4: da 94 dec r13 + 15a6: 79 f7 brne .-34 ; 0x1586 <__fp_powser+0x18> + 15a8: df 90 pop r13 + 15aa: ef 90 pop r14 + 15ac: ff 90 pop r15 + 15ae: 0f 91 pop r16 + 15b0: 1f 91 pop r17 + 15b2: cf 91 pop r28 + 15b4: df 91 pop r29 + 15b6: 08 95 ret + 15b8: b4 df rcall .-152 ; 0x1522 <__fp_pscA> + 15ba: 28 f0 brcs .+10 ; 0x15c6 <__fp_powser+0x58> + 15bc: b9 df rcall .-142 ; 0x1530 <__fp_pscB> + 15be: 18 f0 brcs .+6 ; 0x15c6 <__fp_powser+0x58> + 15c0: 95 23 and r25, r21 + 15c2: 09 f0 breq .+2 ; 0x15c6 <__fp_powser+0x58> + 15c4: 86 cf rjmp .-244 ; 0x14d2 <__fp_inf> + 15c6: 99 cf rjmp .-206 ; 0x14fa <__fp_nan> + 15c8: 11 24 eor r1, r1 + 15ca: cb cf rjmp .-106 ; 0x1562 <__fp_szero> + +000015cc <__mulsf3x>: + 15cc: 00 df rcall .-512 ; 0x13ce <__fp_split3> + 15ce: a0 f3 brcs .-24 ; 0x15b8 <__fp_powser+0x4a> + +000015d0 <__mulsf3_pse>: + 15d0: 95 9f mul r25, r21 + 15d2: d1 f3 breq .-12 ; 0x15c8 <__fp_powser+0x5a> + 15d4: 95 0f add r25, r21 + 15d6: 50 e0 ldi r21, 0x00 ; 0 + 15d8: 55 1f adc r21, r21 + 15da: 62 9f mul r22, r18 + 15dc: f0 01 movw r30, r0 + 15de: 72 9f mul r23, r18 + 15e0: bb 27 eor r27, r27 + 15e2: f0 0d add r31, r0 + 15e4: b1 1d adc r27, r1 + 15e6: 63 9f mul r22, r19 + 15e8: aa 27 eor r26, r26 + 15ea: f0 0d add r31, r0 + 15ec: b1 1d adc r27, r1 + 15ee: aa 1f adc r26, r26 + 15f0: 64 9f mul r22, r20 + 15f2: 66 27 eor r22, r22 + 15f4: b0 0d add r27, r0 + 15f6: a1 1d adc r26, r1 + 15f8: 66 1f adc r22, r22 + 15fa: 82 9f mul r24, r18 + 15fc: 22 27 eor r18, r18 + 15fe: b0 0d add r27, r0 + 1600: a1 1d adc r26, r1 + 1602: 62 1f adc r22, r18 + 1604: 73 9f mul r23, r19 + 1606: b0 0d add r27, r0 + 1608: a1 1d adc r26, r1 + 160a: 62 1f adc r22, r18 + 160c: 83 9f mul r24, r19 + 160e: a0 0d add r26, r0 + 1610: 61 1d adc r22, r1 + 1612: 22 1f adc r18, r18 + 1614: 74 9f mul r23, r20 + 1616: 33 27 eor r19, r19 + 1618: a0 0d add r26, r0 + 161a: 61 1d adc r22, r1 + 161c: 23 1f adc r18, r19 + 161e: 84 9f mul r24, r20 + 1620: 60 0d add r22, r0 + 1622: 21 1d adc r18, r1 + 1624: 82 2f mov r24, r18 + 1626: 76 2f mov r23, r22 + 1628: 6a 2f mov r22, r26 + 162a: 11 24 eor r1, r1 + 162c: 9f 57 subi r25, 0x7F ; 127 + 162e: 50 40 sbci r21, 0x00 ; 0 + 1630: 8a f0 brmi .+34 ; 0x1654 <__mulsf3_pse+0x84> + 1632: e1 f0 breq .+56 ; 0x166c <__mulsf3_pse+0x9c> + 1634: 88 23 and r24, r24 + 1636: 4a f0 brmi .+18 ; 0x164a <__mulsf3_pse+0x7a> + 1638: ee 0f add r30, r30 + 163a: ff 1f adc r31, r31 + 163c: bb 1f adc r27, r27 + 163e: 66 1f adc r22, r22 + 1640: 77 1f adc r23, r23 + 1642: 88 1f adc r24, r24 + 1644: 91 50 subi r25, 0x01 ; 1 + 1646: 50 40 sbci r21, 0x00 ; 0 + 1648: a9 f7 brne .-22 ; 0x1634 <__mulsf3_pse+0x64> + 164a: 9e 3f cpi r25, 0xFE ; 254 + 164c: 51 05 cpc r21, r1 + 164e: 70 f0 brcs .+28 ; 0x166c <__mulsf3_pse+0x9c> + 1650: 40 cf rjmp .-384 ; 0x14d2 <__fp_inf> + 1652: 87 cf rjmp .-242 ; 0x1562 <__fp_szero> + 1654: 5f 3f cpi r21, 0xFF ; 255 + 1656: ec f3 brlt .-6 ; 0x1652 <__mulsf3_pse+0x82> + 1658: 98 3e cpi r25, 0xE8 ; 232 + 165a: dc f3 brlt .-10 ; 0x1652 <__mulsf3_pse+0x82> + 165c: 86 95 lsr r24 + 165e: 77 95 ror r23 + 1660: 67 95 ror r22 + 1662: b7 95 ror r27 + 1664: f7 95 ror r31 + 1666: e7 95 ror r30 + 1668: 9f 5f subi r25, 0xFF ; 255 + 166a: c1 f7 brne .-16 ; 0x165c <__mulsf3_pse+0x8c> + 166c: fe 2b or r31, r30 + 166e: 88 0f add r24, r24 + 1670: 91 1d adc r25, r1 + 1672: 96 95 lsr r25 + 1674: 87 95 ror r24 + 1676: 97 f9 bld r25, 7 + 1678: 08 95 ret + +0000167a <_exit>: + 167a: f8 94 cli + +0000167c <__stop_program>: + 167c: ff cf rjmp .-2 ; 0x167c <__stop_program> diff --git a/electic_streaming2560/bin/Debug/electic_streaming.elf.map b/electic_streaming2560/bin/Debug/electic_streaming.elf.map new file mode 100644 index 0000000..24ba79a --- /dev/null +++ b/electic_streaming2560/bin/Debug/electic_streaming.elf.map @@ -0,0 +1,1643 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o (HardwareSerial::begin(long)) +../arduino_libs/core0022_2560.a(Print.cpp.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) (Print::write(char const*)) +../arduino_libs/core0022_2560.a(WString.cpp.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) (String::operator[](unsigned int) const) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) + obj/Debug/main.o (__divmodhi4) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodsi4.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) (__udivmodsi4) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) (__divmodsi4) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o (exit) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) + obj/Debug/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) (__do_global_ctors) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) (__fixunssfsi) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) (__subsf3) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + obj/Debug/main.o (__mulsf3) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + obj/Debug/main.o (__divsf3) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) (__gesf2) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) (__ltsf2) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) (__floatsisf) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + obj/Debug/main.o (__fixsfsi) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) (__floatunsisf) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) (__udivmodhi4) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) (__clzsi2) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) (__fpcmp_parts_f) +/usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clzsi2.o) (__clz_tab) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) + obj/Debug/main.o (sin) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) (__fp_rempio2) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) (__fp_sinus) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) (__fp_splitA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) (__addsf3x) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) (__fp_inf) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) (__fp_mpack_finite) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) (__fp_nan) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) (__fp_powsodd) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) (__fp_pscA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) (__fp_pscB) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) (__fp_round) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) (__fp_zero) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) (__fp_powser) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) (__mulsf3x) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (malloc) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (realloc) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (atol) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (isspace) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(tolower.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (tolower) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(toupper.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (toupper) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) (memcpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcat.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strcat) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strchr.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strchr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcmp.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strcmp) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcpy.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strcpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncmp.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strncmp) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncpy.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strncpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrchr.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strrchr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strstr.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (strstr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (itoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (ltoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) (__mulsi_const_10) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) (ultoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) (__ctype_isfalse) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrev.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) (strrev) + +Allocating common symbols +Common symbol size file + +__brkval 0x2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) +__flp 0x2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00100000 xr +data 0x00800200 0x0000fe00 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800200 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_2560.a +LOAD /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x38aa + *(.vectors) + .vectors 0x00000000 0xe4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + .progmem.gcc_fplib + 0x000000e4 0x1e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + *(.progmem*) + 0x00000102 . = ALIGN (0x2) + 0x00000102 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000102 0x0 linker stubs + *(.trampolines*) + 0x00000102 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000102 __ctors_start = . + *(.ctors) + .ctors 0x00000102 0x2 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00000104 __ctors_end = . + 0x00000104 __dtors_start = . + *(.dtors) + 0x00000104 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000104 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + 0x00000104 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000104 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000114 0x1a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + 0x00000114 __do_copy_data + .init4 0x0000012e 0x10 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) + 0x0000012e __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x0000013e 0x16 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) + 0x0000013e __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000154 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + *(.init9) + *(.text) + .text 0x0000015c 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + 0x0000015c __vector_38 + 0x0000015c __vector_22 + 0x0000015c __vector_28 + 0x0000015c __vector_1 + 0x0000015c __vector_32 + 0x0000015c __vector_34 + 0x0000015c __vector_24 + 0x0000015c __vector_12 + 0x0000015c __vector_55 + 0x0000015c __vector_46 + 0x0000015c __bad_interrupt + 0x0000015c __vector_6 + 0x0000015c __vector_31 + 0x0000015c __vector_35 + 0x0000015c __vector_39 + 0x0000015c __vector_3 + 0x0000015c __vector_23 + 0x0000015c __vector_30 + 0x0000015c __vector_45 + 0x0000015c __vector_11 + 0x0000015c __vector_13 + 0x0000015c __vector_19 + 0x0000015c __vector_56 + 0x0000015c __vector_7 + 0x0000015c __vector_49 + 0x0000015c __vector_41 + 0x0000015c __vector_43 + 0x0000015c __vector_27 + 0x0000015c __vector_5 + 0x0000015c __vector_33 + 0x0000015c __vector_47 + 0x0000015c __vector_52 + 0x0000015c __vector_37 + 0x0000015c __vector_4 + 0x0000015c __vector_44 + 0x0000015c __vector_9 + 0x0000015c __vector_2 + 0x0000015c __vector_21 + 0x0000015c __vector_15 + 0x0000015c __vector_29 + 0x0000015c __vector_40 + 0x0000015c __vector_8 + 0x0000015c __vector_26 + 0x0000015c __vector_48 + 0x0000015c __vector_14 + 0x0000015c __vector_53 + 0x0000015c __vector_10 + 0x0000015c __vector_50 + 0x0000015c __vector_16 + 0x0000015c __vector_18 + 0x0000015c __vector_20 + 0x0000015c __vector_42 + .text 0x00000160 0x2a2 obj/Debug/main.o + 0x00000160 __vector_17 + 0x00000230 fill_sinewave() + 0x0000034a main + .text 0x00000402 0x0 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + .text 0x00000402 0x0 ../arduino_libs/core0022_2560.a(Print.cpp.o) + .text 0x00000402 0x0 ../arduino_libs/core0022_2560.a(WString.cpp.o) + .text 0x00000402 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) + .text 0x00000402 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodsi4.o) + .text 0x00000402 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodsi4.o) + .text 0x00000402 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + .text 0x00000402 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) + .text 0x00000402 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) + .text 0x00000402 0x58 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) + 0x00000402 __fixunssfsi + .text 0x0000045a 0x354 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) + 0x000006f2 __subsf3 + 0x00000754 __addsf3 + .text 0x000007ae 0x1f4 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + 0x000007ae __mulsf3 + .text 0x000009a2 0x158 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + 0x000009a2 __divsf3 + .text 0x00000afa 0x60 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + 0x00000afa __gesf2 + .text 0x00000b5a 0x60 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + 0x00000b5a __ltsf2 + .text 0x00000bba 0xbc /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + 0x00000bba __floatsisf + .text 0x00000c76 0xa8 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + 0x00000c76 __fixsfsi + .text 0x00000d1e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_thenan_sf.o) + .text 0x00000d1e 0xf2 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + 0x00000d1e __floatunsisf + .text 0x00000e10 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodhi4.o) + .text 0x00000e10 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_prologue.o) + .text 0x00000e10 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_epilogue.o) + .text 0x00000e10 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_tablejump.o) + .text 0x00000e10 0x9e /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clzsi2.o) + 0x00000e10 __clzsi2 + .text 0x00000eae 0x1aa /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_pack_sf.o) + 0x00000eae __pack_f + .text 0x00001058 0xf0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_unpack_sf.o) + 0x00001058 __unpack_f + .text 0x00001148 0xb2 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fpcmp_parts_sf.o) + 0x00001148 __fpcmp_parts_f + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clz.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_inf.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_nan.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscA.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscB.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_round.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(tolower.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(toupper.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(memcpy.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcat.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strchr.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcmp.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcpy.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncmp.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncpy.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrchr.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strstr.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(mulsi10.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) + .text 0x000011fa 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrev.o) + 0x000011fa . = ALIGN (0x2) + *(.text.*) + .text.__vector_25 + 0x000011fa 0x6a ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x000011fa __vector_25 + .text.__vector_36 + 0x00001264 0x6a ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00001264 __vector_36 + .text.__vector_51 + 0x000012ce 0x6a ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x000012ce __vector_51 + .text.__vector_54 + 0x00001338 0x6a ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00001338 __vector_54 + .text._ZN14HardwareSerialC2EP11ring_bufferPVhS3_S3_S3_S3_hhhhh + 0x000013a2 0x60 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x000013a2 HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + .text._ZN14HardwareSerialC1EP11ring_bufferPVhS3_S3_S3_S3_hhhhh + 0x00001402 0x60 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00001402 HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + .text._ZN14HardwareSerial5beginEl + 0x00001462 0xba ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00001462 HardwareSerial::begin(long) + .text._ZN14HardwareSerial3endEv + 0x0000151c 0x54 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x0000151c HardwareSerial::end() + .text._ZN14HardwareSerial9availableEv + 0x00001570 0x22 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00001570 HardwareSerial::available() + .text._ZN14HardwareSerial4peekEv + 0x00001592 0x34 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00001592 HardwareSerial::peek() + .text._ZN14HardwareSerial4readEv + 0x000015c6 0x48 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x000015c6 HardwareSerial::read() + .text._ZN14HardwareSerial5flushEv + 0x0000160e 0x18 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x0000160e HardwareSerial::flush() + .text._ZN14HardwareSerial5writeEh + 0x00001626 0x26 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00001626 HardwareSerial::write(unsigned char) + .text._GLOBAL__I_rx_buffer + 0x0000164c 0x1a0 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + .text._ZN5Print5writeEPKc + 0x000017ec 0x30 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x000017ec Print::write(char const*) + .text._ZN5Print5writeEPKhj + 0x0000181c 0x3e ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x0000181c Print::write(unsigned char const*, unsigned int) + .text._ZN5Print5printEPKc + 0x0000185a 0x10 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x0000185a Print::print(char const*) + .text._ZN5Print5printERK6String + 0x0000186a 0x54 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x0000186a Print::print(String const&) + .text._ZN5Print11printNumberEmh + 0x000018be 0x134 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x000018be Print::printNumber(unsigned long, unsigned char) + .text._ZN5Print5printEmi + 0x000019f2 0x1e ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x000019f2 Print::print(unsigned long, int) + .text._ZN5Print5printEji + 0x00001a10 0x22 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001a10 Print::print(unsigned int, int) + .text._ZN5Print5printEhi + 0x00001a32 0x24 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001a32 Print::print(unsigned char, int) + .text._ZN5Print5printEli + 0x00001a56 0x6c ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001a56 Print::print(long, int) + .text._ZN5Print5printEii + 0x00001ac2 0x26 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001ac2 Print::print(int, int) + .text._ZN5Print5printEci + 0x00001ae8 0x28 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001ae8 Print::print(char, int) + .text._ZN5Print7printlnEv + 0x00001b10 0x2e ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001b10 Print::println() + .text._ZN5Print7printlnEmi + 0x00001b3e 0x16 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001b3e Print::println(unsigned long, int) + .text._ZN5Print7printlnEji + 0x00001b54 0x32 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001b54 Print::println(unsigned int, int) + .text._ZN5Print7printlnEhi + 0x00001b86 0x34 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001b86 Print::println(unsigned char, int) + .text._ZN5Print7printlnEPKc + 0x00001bba 0x16 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001bba Print::println(char const*) + .text._ZN5Print7printlnERK6String + 0x00001bd0 0x16 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001bd0 Print::println(String const&) + .text._ZN5Print7printlnEli + 0x00001be6 0x16 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001be6 Print::println(long, int) + .text._ZN5Print7printlnEii + 0x00001bfc 0x36 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001bfc Print::println(int, int) + .text._ZN5Print7printlnEci + 0x00001c32 0x38 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001c32 Print::println(char, int) + .text._ZN5Print10printFloatEdh + 0x00001c6a 0x118 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001c6a Print::printFloat(double, unsigned char) + .text._ZN5Print5printEdi + 0x00001d82 0x6 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001d82 Print::print(double, int) + .text._ZN5Print7printlnEdi + 0x00001d88 0x16 ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00001d88 Print::println(double, int) + .text._ZNK6String6charAtEj + 0x00001d9e 0x10 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001d9e String::charAt(unsigned int) const + .text._ZN6String9setCharAtEjc + 0x00001dae 0x22 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001dae String::setCharAt(unsigned int, char) + .text._ZN6StringixEj + 0x00001dd0 0x2a ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001dd0 String::operator[](unsigned int) + .text._ZNK6StringixEj + 0x00001dfa 0x10 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001dfa String::operator[](unsigned int) const + .text._ZN6String5toIntEv + 0x00001e0a 0xc ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001e0a String::toInt() + .text._ZN6String11toCharArrayEPcj + 0x00001e16 0x44 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001e16 String::toCharArray(char*, unsigned int) + .text._ZN6String8getBytesEPhj + 0x00001e5a 0x44 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001e5a String::getBytes(unsigned char*, unsigned int) + .text._ZN6StringD1Ev + 0x00001e9e 0x20 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001e9e String::~String() + .text._ZNK6String10startsWithERKS_j + 0x00001ebe 0x3c ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001ebe String::startsWith(String const&, unsigned int) const + .text._ZNK6String10startsWithERKS_ + 0x00001efa 0x26 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001efa String::startsWith(String const&) const + .text._ZNK6String11lastIndexOfEcj + 0x00001f20 0x6e ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001f20 String::lastIndexOf(char, unsigned int) const + .text._ZNK6String11lastIndexOfEc + 0x00001f8e 0x10 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001f8e String::lastIndexOf(char) const + .text._ZNK6String7indexOfERKS_j + 0x00001f9e 0x3c ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001f9e String::indexOf(String const&, unsigned int) const + .text._ZNK6String7indexOfERKS_ + 0x00001fda 0xa ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001fda String::indexOf(String const&) const + .text._ZNK6String7indexOfEcj + 0x00001fe4 0x3c ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00001fe4 String::indexOf(char, unsigned int) const + .text._ZNK6String7indexOfEc + 0x00002020 0xa ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002020 String::indexOf(char) const + .text._ZNK6String6equalsERKS_ + 0x0000202a 0x32 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000202a String::equals(String const&) const + .text._ZNK6String8endsWithERKS_ + 0x0000205c 0x3a ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000205c String::endsWith(String const&) const + .text._ZNK6StringgeERKS_ + 0x00002096 0x28 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002096 String::operator>=(String const&) const + .text._ZNK6StringleERKS_ + 0x000020be 0x22 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000020be String::operator<=(String const&) const + .text._ZNK6StringgtERKS_ + 0x000020e0 0x22 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000020e0 String::operator>(String const&) const + .text._ZNK6StringltERKS_ + 0x00002102 0x24 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002102 String::operator<(String const&) const + .text._ZNK6StringneERKS_ + 0x00002126 0x30 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002126 String::operator!=(String const&) const + .text._ZNK6StringeqERKS_ + 0x00002156 0x34 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002156 String::operator==(String const&) const + .text._ZNK6String9compareToERKS_ + 0x0000218a 0x12 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000218a String::compareTo(String const&) const + .text._ZN6StringpLERKS_ + 0x0000219c 0x70 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000219c String::operator+=(String const&) + .text._ZN6String6concatERKS_ + 0x0000220c 0x6 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000220c String::concat(String const&) + .text._ZN6String9getBufferEj + 0x00002212 0x28 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002212 String::getBuffer(unsigned int) + .text._ZN6StringaSERKS_ + 0x0000223a 0x60 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000223a String::operator=(String const&) + .text._ZN6StringC1Eh + 0x0000229a 0x34 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000229a String::String(unsigned char) + .text._ZN6StringC2Eh + 0x000022ce 0x34 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000022ce String::String(unsigned char) + .text._ZN6StringC1Ec + 0x00002302 0x34 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002302 String::String(char) + .text._ZN6StringC2Ec + 0x00002336 0x34 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002336 String::String(char) + .text._ZN6StringC1ERKS_ + 0x0000236a 0x36 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000236a String::String(String const&) + .text._ZN6StringC2ERKS_ + 0x000023a0 0x36 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000023a0 String::String(String const&) + .text._ZN6StringC1Emi + 0x000023d6 0x7e ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000023d6 String::String(unsigned long, int) + .text._ZN6StringC2Emi + 0x00002454 0x7e ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002454 String::String(unsigned long, int) + .text._ZN6StringC1Eji + 0x000024d2 0x7c ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000024d2 String::String(unsigned int, int) + .text._ZN6StringC2Eji + 0x0000254e 0x7c ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000254e String::String(unsigned int, int) + .text._ZN6StringC1EPKc + 0x000025ca 0x50 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000025ca String::String(char const*) + .text._ZNK6String11toUpperCaseEv + 0x0000261a 0x76 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000261a String::toUpperCase() const + .text._ZNK6String11toLowerCaseEv + 0x00002690 0x76 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002690 String::toLowerCase() const + .text._ZNK6String16equalsIgnoreCaseERKS_ + 0x00002706 0x98 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002706 String::equalsIgnoreCase(String const&) const + .text._ZNK6String9substringEjj + 0x0000279e 0x6e ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000279e String::substring(unsigned int, unsigned int) const + .text._ZNK6String9substringEj + 0x0000280c 0x18 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x0000280c String::substring(unsigned int) const + .text._ZNK6String11lastIndexOfERKS_j + 0x00002824 0xc8 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002824 String::lastIndexOf(String const&, unsigned int) const + .text._ZNK6String11lastIndexOfERKS_ + 0x000028ec 0x1c ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000028ec String::lastIndexOf(String const&) const + .text._ZNK6String4trimEv + 0x00002908 0xdc ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002908 String::trim() const + .text._ZN6String7replaceERKS_S1_ + 0x000029e4 0x136 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x000029e4 String::replace(String const&, String const&) + .text._ZN6String7replaceEcc + 0x00002b1a 0x86 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002b1a String::replace(char, char) + .text._ZN6StringC2EPKc + 0x00002ba0 0x50 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002ba0 String::String(char const*) + .text._ZN6StringC1Eli + 0x00002bf0 0x7a ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002bf0 String::String(long, int) + .text._ZN6StringC2Eli + 0x00002c6a 0x7a ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002c6a String::String(long, int) + .text._ZN6StringC1Eii + 0x00002ce4 0x78 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002ce4 String::String(int, int) + .text._ZN6StringC2Eii + 0x00002d5c 0x78 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x00002d5c String::String(int, int) + .text.libgcc 0x00002dd4 0x26 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) + 0x00002dd4 __divmodhi4 + 0x00002dd4 _div + .text.libgcc 0x00002dfa 0x44 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodsi4.o) + 0x00002dfa __udivmodsi4 + .text.libgcc 0x00002e3e 0x36 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodsi4.o) + 0x00002e3e __divmodsi4 + .text.libgcc 0x00002e74 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + .text.libgcc 0x00002e74 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) + .text.libgcc 0x00002e74 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) + .text.libgcc 0x00002e74 0x28 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodhi4.o) + 0x00002e74 __udivmodhi4 + .text.libgcc 0x00002e9c 0x38 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_prologue.o) + 0x00002e9c __prologue_saves__ + .text.libgcc 0x00002ed4 0x36 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_epilogue.o) + 0x00002ed4 __epilogue_restores__ + .text.libgcc 0x00002f0a 0xc /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_tablejump.o) + 0x00002f0a __tablejump2__ + 0x00002f0e __tablejump__ + .text.avr-libc.fplib + 0x00002f16 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) + 0x00002f16 sin + .text.avr-libc.fplib + 0x00002f22 0x50 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) + 0x00002f24 __fp_rempio2 + .text.avr-libc.fplib + 0x00002f72 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + 0x00002f72 __fp_sinus + .text.avr-libc.fplib + 0x00002f94 0x44 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + 0x00002f94 __fp_split3 + 0x00002fa4 __fp_splitA + .text.avr-libc.fplib + 0x00002fd8 0xc0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + 0x00002ff2 __addsf3x + .text.avr-libc.fplib + 0x00003098 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_inf.o) + 0x00003098 __fp_inf + .text.avr-libc.fplib + 0x000030a4 0x1c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) + 0x000030a4 __fp_mpack + 0x000030a8 __fp_mpack_finite + .text.avr-libc.fplib + 0x000030c0 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_nan.o) + 0x000030c0 __fp_nan + .text.avr-libc.fplib + 0x000030c6 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + 0x000030c6 __fp_powsodd + .text.avr-libc.fplib + 0x000030e8 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscA.o) + 0x000030e8 __fp_pscA + .text.avr-libc.fplib + 0x000030f6 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscB.o) + 0x000030f6 __fp_pscB + .text.avr-libc.fplib + 0x00003104 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_round.o) + 0x00003104 __fp_round + .text.avr-libc.fplib + 0x00003126 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + 0x00003126 __fp_zero + 0x00003128 __fp_szero + .text.avr-libc.fplib + 0x00003134 0x4a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + 0x00003134 __fp_powser + .text.avr-libc.fplib + 0x0000317e 0xc2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + 0x00003192 __mulsf3x + 0x00003196 __mulsf3_pse + .text.avr-libc + 0x00003240 0x20a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + 0x00003240 malloc + 0x0000339a free + .text.avr-libc + 0x0000344a 0x1b8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + 0x0000344a realloc + .text.avr-libc + 0x00003602 0x4e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) + 0x00003602 atol + .text.avr-libc + 0x00003650 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) + 0x00003650 isspace + .text.avr-libc + 0x00003660 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(tolower.o) + 0x00003660 tolower + .text.avr-libc + 0x00003670 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(toupper.o) + 0x00003670 toupper + .text.avr-libc + 0x00003680 0x12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(memcpy.o) + 0x00003680 memcpy + .text.avr-libc + 0x00003692 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcat.o) + 0x00003692 strcat + .text.avr-libc + 0x000036a8 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strchr.o) + 0x000036a8 strchr + .text.avr-libc + 0x000036be 0x12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcmp.o) + 0x000036be strcmp + .text.avr-libc + 0x000036d0 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcpy.o) + 0x000036d0 strcpy + .text.avr-libc + 0x000036de 0x1c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncmp.o) + 0x000036de strncmp + .text.avr-libc + 0x000036fa 0x1e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncpy.o) + 0x000036fa strncpy + .text.avr-libc + 0x00003718 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrchr.o) + 0x00003718 strrchr + .text.avr-libc + 0x0000372e 0x34 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strstr.o) + 0x0000372e strstr + .text.avr-libc + 0x00003762 0x42 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + 0x00003762 itoa + .text.avr-libc + 0x000037a4 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + 0x000037a4 ltoa + .text.avr-libc + 0x0000380c 0x2a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(mulsi10.o) + 0x0000380c __mulsi_const_10 + .text.avr-libc + 0x00003836 0x4a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + 0x00003836 ultoa + .text.avr-libc + 0x00003880 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) + 0x00003880 __ctype_isfalse + 0x00003884 __ctype_istrue + .text.avr-libc + 0x00003886 0x20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrev.o) + 0x00003886 strrev + 0x000038a6 . = ALIGN (0x2) + *(.fini9) + .fini9 0x000038a6 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + 0x000038a6 exit + 0x000038a6 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000038a6 0x4 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + *(.fini0) + 0x000038aa _etext = . + +.data 0x00800200 0x152 load address 0x000038aa + 0x00800200 PROVIDE (__data_start, .) + *(.data) + .data 0x00800200 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + .data 0x00800200 0x13 obj/Debug/main.o + .data 0x00800213 0x0 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + .data 0x00800213 0x2 ../arduino_libs/core0022_2560.a(Print.cpp.o) + .data 0x00800215 0x1 ../arduino_libs/core0022_2560.a(WString.cpp.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodsi4.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodsi4.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + .data 0x00800216 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + .data 0x00800216 0x8 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_thenan_sf.o) + 0x00800216 __thenan_sf + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodhi4.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_prologue.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_epilogue.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_tablejump.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clzsi2.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_pack_sf.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_unpack_sf.o) + .data 0x0080021e 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fpcmp_parts_sf.o) + .data 0x0080021e 0x100 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clz.o) + 0x0080021e __clz_tab + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_inf.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_nan.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscA.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscB.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_round.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + .data 0x0080031e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + .data 0x0080031e 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + 0x0080031e __malloc_margin + 0x00800320 __malloc_heap_start + 0x00800322 __malloc_heap_end + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(tolower.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(toupper.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(memcpy.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcat.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strchr.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcmp.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcpy.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncmp.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncpy.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrchr.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strstr.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(mulsi10.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) + .data 0x00800324 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrev.o) + *(.data*) + *(.rodata) + *(.rodata*) + .rodata._ZTV14HardwareSerial + 0x00800324 0x12 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00800324 vtable for HardwareSerial + .rodata._ZTV6Stream + 0x00800336 0x12 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00800336 vtable for Stream + .rodata._ZTV5Print + 0x00800348 0xa ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x00800348 vtable for Print + *(.gnu.linkonce.d*) + 0x00800352 . = ALIGN (0x2) + 0x00800352 _edata = . + 0x00800352 PROVIDE (__data_end, .) + +.bss 0x00800352 0x465 + 0x00800352 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800352 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + .bss 0x00800352 0x204 obj/Debug/main.o + 0x00800352 dd + 0x00800552 loopCount + 0x00800554 sample + .bss 0x00800556 0x0 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + .bss 0x00800556 0x0 ../arduino_libs/core0022_2560.a(Print.cpp.o) + .bss 0x00800556 0x0 ../arduino_libs/core0022_2560.a(WString.cpp.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodsi4.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodsi4.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_thenan_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodhi4.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_prologue.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_epilogue.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_tablejump.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clzsi2.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_pack_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_unpack_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fpcmp_parts_sf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clz.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_inf.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_nan.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscA.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscB.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_round.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(tolower.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(toupper.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(memcpy.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcat.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strchr.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcmp.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcpy.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncmp.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncpy.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrchr.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strstr.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(mulsi10.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) + .bss 0x00800556 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrev.o) + *(.bss*) + .bss.rx_buffer + 0x00800556 0x84 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00800556 rx_buffer + .bss.rx_buffer1 + 0x008005da 0x84 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x008005da rx_buffer1 + .bss.rx_buffer2 + 0x0080065e 0x84 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x0080065e rx_buffer2 + .bss.rx_buffer3 + 0x008006e2 0x84 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x008006e2 rx_buffer3 + .bss.Serial 0x00800766 0x13 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00800766 Serial + .bss.Serial1 0x00800779 0x13 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x00800779 Serial1 + .bss.Serial2 0x0080078c 0x13 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x0080078c Serial2 + .bss.Serial3 0x0080079f 0x13 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0x0080079f Serial3 + .bss._ZZN6StringixEjE19dummy_writable_char + 0x008007b2 0x1 ../arduino_libs/core0022_2560.a(WString.cpp.o) + *(COMMON) + COMMON 0x008007b3 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + 0x008007b3 __brkval + 0x008007b5 __flp + 0x008007b7 PROVIDE (__bss_end, .) + 0x000038aa __data_load_start = LOADADDR (.data) + 0x000039fc __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x008007b7 0x0 + 0x008007b7 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x008007b7 PROVIDE (__noinit_end, .) + 0x008007b7 _end = . + 0x008007b7 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x8310 + *(.stab) + .stab 0x00000000 0x768 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + .stab 0x00000768 0x75c obj/Debug/main.o + 0x768 (size before relaxing) + .stab 0x00000ec4 0xef4 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + 0xf00 (size before relaxing) + .stab 0x00001db8 0xffc ../arduino_libs/core0022_2560.a(Print.cpp.o) + 0x1008 (size before relaxing) + .stab 0x00002db4 0x2250 ../arduino_libs/core0022_2560.a(WString.cpp.o) + 0x225c (size before relaxing) + .stab 0x00005004 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) + 0x84 (size before relaxing) + .stab 0x0000507c 0x21c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) + 0x228 (size before relaxing) + .stab 0x00005298 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + 0x108 (size before relaxing) + .stab 0x00005394 0x1d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + 0x1e0 (size before relaxing) + .stab 0x00005568 0x4bc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + 0x4c8 (size before relaxing) + .stab 0x00005a24 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_inf.o) + 0x84 (size before relaxing) + .stab 0x00005a9c 0xe4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) + 0xf0 (size before relaxing) + .stab 0x00005b80 0x54 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_nan.o) + 0x60 (size before relaxing) + .stab 0x00005bd4 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + 0x108 (size before relaxing) + .stab 0x00005cd0 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscA.o) + 0x90 (size before relaxing) + .stab 0x00005d54 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscB.o) + 0x90 (size before relaxing) + .stab 0x00005dd8 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_round.o) + 0x108 (size before relaxing) + .stab 0x00005ed4 0x90 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + 0x9c (size before relaxing) + .stab 0x00005f64 0x1ec /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + 0x1f8 (size before relaxing) + .stab 0x00006150 0x4d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + 0x4e0 (size before relaxing) + .stab 0x00006624 0x6f0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + 0x6fc (size before relaxing) + .stab 0x00006d14 0x3b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + 0x5ac (size before relaxing) + .stab 0x000070c8 0x1e0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) + 0x1ec (size before relaxing) + .stab 0x000072a8 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) + 0xa8 (size before relaxing) + .stab 0x00007344 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(tolower.o) + 0xa8 (size before relaxing) + .stab 0x000073e0 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(toupper.o) + 0xa8 (size before relaxing) + .stab 0x0000747c 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(memcpy.o) + 0x90 (size before relaxing) + .stab 0x00007500 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcat.o) + 0xa8 (size before relaxing) + .stab 0x0000759c 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strchr.o) + 0xa8 (size before relaxing) + .stab 0x00007638 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcmp.o) + 0x90 (size before relaxing) + .stab 0x000076bc 0x6c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcpy.o) + 0x78 (size before relaxing) + .stab 0x00007728 0xc0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncmp.o) + 0xcc (size before relaxing) + .stab 0x000077e8 0xcc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncpy.o) + 0xd8 (size before relaxing) + .stab 0x000078b4 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrchr.o) + 0xa8 (size before relaxing) + .stab 0x00007950 0x150 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strstr.o) + 0x15c (size before relaxing) + .stab 0x00007aa0 0x1b0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + 0x1bc (size before relaxing) + .stab 0x00007c50 0x294 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + 0x2a0 (size before relaxing) + .stab 0x00007ee4 0x114 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(mulsi10.o) + 0x120 (size before relaxing) + .stab 0x00007ff8 0x1e0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + 0x1ec (size before relaxing) + .stab 0x000081d8 0x60 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) + 0x6c (size before relaxing) + .stab 0x00008238 0xd8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrev.o) + 0xe4 (size before relaxing) + +.stabstr 0x00000000 0x6497 + *(.stabstr) + .stabstr 0x00000000 0x6497 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges + *(.debug_aranges) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info + *(.debug_info) + *(.gnu.linkonce.wi.*) + +.debug_abbrev + *(.debug_abbrev) + +.debug_line + *(.debug_line) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/electic_streaming.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +HardwareSerial::available() ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::begin(long) ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::end() ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +HardwareSerial::flush() ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +HardwareSerial::peek() ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +HardwareSerial::read() ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::write(unsigned char) ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o +Print::print(String const&) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(char const*) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(char, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(double, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(int, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(long, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(unsigned char, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(unsigned int, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::print(unsigned long, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::printFloat(double, unsigned char) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::printNumber(unsigned long, unsigned char) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println() ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(String const&) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(char const*) ../arduino_libs/core0022_2560.a(Print.cpp.o) + obj/Debug/main.o +Print::println(char, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(double, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(int, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(long, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(unsigned char, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(unsigned int, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::println(unsigned long, int) ../arduino_libs/core0022_2560.a(Print.cpp.o) +Print::write(char const*) ../arduino_libs/core0022_2560.a(Print.cpp.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +Print::write(unsigned char const*, unsigned int) ../arduino_libs/core0022_2560.a(Print.cpp.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +Serial ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o +Serial1 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +Serial2 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +Serial3 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +String::String(String const&) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(String const&) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(char const*) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(char const*) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(char) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(char) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(int, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(int, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(long, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(long, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(unsigned char) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(unsigned char) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(unsigned int, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(unsigned int, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(unsigned long, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::String(unsigned long, int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::charAt(unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::compareTo(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::concat(String const&) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::endsWith(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::equals(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::equalsIgnoreCase(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::getBuffer(unsigned int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::getBytes(unsigned char*, unsigned int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::indexOf(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::indexOf(String const&, unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::indexOf(char) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::indexOf(char, unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::lastIndexOf(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::lastIndexOf(String const&, unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::lastIndexOf(char) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::lastIndexOf(char, unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator!=(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator+=(String const&) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator<(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator<=(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator=(String const&) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator==(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator>(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator>=(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator[](unsigned int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::operator[](unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) +String::replace(String const&, String const&) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::replace(char, char) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::setCharAt(unsigned int, char) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::startsWith(String const&) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::startsWith(String const&, unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::substring(unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::substring(unsigned int, unsigned int) const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::toCharArray(char*, unsigned int) ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::toInt() ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::toLowerCase() const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::toUpperCase() const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::trim() const ../arduino_libs/core0022_2560.a(WString.cpp.o) +String::~String() ../arduino_libs/core0022_2560.a(WString.cpp.o) +__addsf3 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) + obj/Debug/main.o +__addsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__brkval /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) +__bss_end /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) +__clz_tab /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clzsi2.o) +__clzsi2 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) +__ctors_end /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) +__ctype_isfalse /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) +__ctype_istrue /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(cty_isfalse.o) +__cxa_pure_virtual ../arduino_libs/core0022_2560.a(Print.cpp.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +__data_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__data_load_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__data_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__divmodhi4 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) + obj/Debug/main.o +__divmodsi4 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +__divsf3 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) + obj/Debug/main.o +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clear_bss.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__do_copy_data /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_thenan_sf.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__do_global_ctors /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) + ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +__epilogue_restores__ /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) + obj/Debug/main.o +__fixunssfsi /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) +__floatsisf /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) +__floatunsisf /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) +__flp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) +__fp_inf /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) +__fp_mpack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) +__fp_mpack_finite /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) +__fp_nan /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) +__fp_powser /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) +__fp_powsodd /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) +__fp_pscA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) +__fp_pscB /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) +__fp_rempio2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) +__fp_round /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) +__fp_sinus /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) +__fp_split3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) +__fp_splitA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_rempio2.o) +__fp_szero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) +__fp_zero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(addsf3x.o) +__fpcmp_parts_f /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) +__gesf2 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) +__heap_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__ltsf2 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) +__malloc_heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) +__malloc_heap_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) +__malloc_margin /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) +__mulsf3 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powsodd.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) + obj/Debug/main.o +__mulsf3_pse /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) +__mulsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(fp_powser.o) +__mulsi_const_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) +__pack_f /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__subsf3 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_fixunssfsi.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) +__tablejump2__ /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) +__udivmodsi4 /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_2560.a(Print.cpp.o) +__unpack_f /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_addsub_sf.o) +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_17 obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_25 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_26 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_27 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_28 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_29 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_30 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_31 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_32 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_33 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_34 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_35 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_36 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_37 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_38 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_39 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_40 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_41 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_42 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_43 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_44 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_45 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_46 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_47 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_48 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_49 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_50 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_51 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_52 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_53 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_54 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_55 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_56 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +_div /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) +atol /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(atol.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +dd obj/Debug/main.o +exit /usr/lib/gcc/avr/4.3.5/avr6/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +fill_sinewave() obj/Debug/main.o +free /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +isspace /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(isspace.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +itoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +loopCount obj/Debug/main.o +ltoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/crtm2560.o +malloc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +memcpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) +realloc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(realloc.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +rx_buffer ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +rx_buffer1 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +rx_buffer2 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +rx_buffer3 ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +sample obj/Debug/main.o +sin /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libm.a(sin.o) + obj/Debug/main.o +strcat /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcat.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +strchr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strchr.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +strcmp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcmp.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +strcpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strcpy.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +strncmp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncmp.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +strncpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strncpy.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +strrchr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrchr.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +strrev /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strrev.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(itoa.o) +strstr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(strstr.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +tolower /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(tolower.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +toupper /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(toupper.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +ultoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr6/libc.a(ultoa.o) + ../arduino_libs/core0022_2560.a(WString.cpp.o) +vtable for HardwareSerial ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) +vtable for Print ../arduino_libs/core0022_2560.a(Print.cpp.o) +vtable for Stream ../arduino_libs/core0022_2560.a(HardwareSerial.cpp.o) diff --git a/electic_streaming2560/bin/Release/electic_streaming.elf b/electic_streaming2560/bin/Release/electic_streaming.elf Binary files differnew file mode 100755 index 0000000..be0b7e9 --- /dev/null +++ b/electic_streaming2560/bin/Release/electic_streaming.elf diff --git a/electic_streaming2560/bin/Release/electic_streaming.elf.eep.hex b/electic_streaming2560/bin/Release/electic_streaming.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/electic_streaming2560/bin/Release/electic_streaming.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/electic_streaming2560/bin/Release/electic_streaming.elf.hex b/electic_streaming2560/bin/Release/electic_streaming.elf.hex new file mode 100644 index 0000000..d3fe242 --- /dev/null +++ b/electic_streaming2560/bin/Release/electic_streaming.elf.hex @@ -0,0 +1,328 @@ +:100000000C9444000C946C000C946C000C946C00E8
+:100010000C946C000C946C000C946C000C946C00B0
+:100020000C946C000C946C000C946C000C946E009E
+:100030000C946C000C946C000C946C000C946C0090
+:100040000C946C000C946C000C9460030C946C0089
+:100050000C946C000C946C000C946C000C946C0070
+:100060000C946C000C946C0005A84CCDB2D44EB925
+:100070003836A9020C50B9918688083CA6AAAA2A4B
+:10008000BE000000803F3E0111241FBECFEFD8E02C
+:10009000DEBFCDBF11E0A0E0B1E0E4E3F4E102C0D7
+:1000A00005900D92A232B107D9F713E0A2E2B1E0B8
+:1000B00001C01D92AC3AB107E1F710E0C8E8D0E00A
+:1000C00004C02297FE010E947F08C638D107C9F7F5
+:1000D0000E9402010C94180A0C9400001F920F92C7
+:1000E0000FB60F9211242F933F934F935F936F930B
+:1000F0007F938F939F93AF93BF93CF93DF93EF93B0
+:10010000FF9385B190E2892785B9C0E0D0E0E09106
+:100110002403F0912503EE5DFE4F86E293E06081BB
+:100120000E9445018091240390912503019660E08F
+:1001300072E00E94E20790932503809324032196A6
+:1001400081E0C034D80719F786E293E060E00E94AE
+:100150004501FF91EF91DF91CF91BF91AF919F91B9
+:100160008F917F916F915F914F913F912F910F9060
+:100170000FBE0F901F901895AF92BF92CF92DF9253
+:10018000EF92FF920F931F93CF93DF93C2E2D1E0E0
+:100190000F2EF0E0AF2EF0E0BF2EF0E0CF2EF0E01B
+:1001A000DF2EF02DC601B5010E9483087B018C0172
+:1001B000C601B50128ED3FE049E45CE30E941A0561
+:1001C0005B016C01C801B70120E030E04EEF52E462
+:1001D0000E94470520E030E040E053E40E941A0509
+:1001E0000E944106699383E0C232D807D9F6DF91B5
+:1001F000CF911F910F91FF90EF90DF90CF90BF9024
+:10020000AF9008951F930E94BC0086E293E040E007
+:1002100052EC61E070E00E945201259A80E285B9BB
+:100220008091810088608093810080916F0082605E
+:1002300080936F0086E891E0909389008093880016
+:10024000789410E286E293E00E944F011816190696
+:10025000CCF785B1812785B986E293E00E944C01F5
+:10026000813681F786E293E060E071E00E94A601AA
+:1002700080918100856080938100E4CF87E191E0E7
+:1002800090932703809326030895862F0E941F03CF
+:1002900008950E94570308950E94380308950E940C
+:1002A00027030895CB01BA010E94E6020895DC01FC
+:1002B000ED91FC910190F081E02D09950895DC010C
+:1002C000ED91FC910190F081E02D099508950F9337
+:1002D0001F93CF93DF938C01EB0109C02196D801C6
+:1002E000ED91FC910190F081E02DC80109956881A4
+:1002F0006623A1F7DF91CF911F910F9108950F937E
+:100300001F938C01DC01ED91FC910190F081E02DB7
+:100310006DE00995D801ED91FC910190F081E02DFF
+:100320006AE0C80109951F910F9108950F931F93DB
+:100330008C01DC01ED91FC910190F081E02D09959B
+:10034000C8010E947F011F910F9108950F931F9381
+:100350008C010E946701C8010E947F011F910F91CB
+:1003600008950F931F938C01DC01ED91FC91019096
+:10037000F081E02D0995C8010E947F011F910F9126
+:1003800008952F923F924F925F926F927F928F9239
+:100390009F92AF92BF92CF92DF92EF92FF920F9314
+:1003A0001F93DF93CF93CDB7DEB7A0970FB6F89426
+:1003B000DEBF0FBECDBF1C016A017B014115510597
+:1003C0006105710549F4DC01ED91FC910190F0812A
+:1003D000E02D60E3099554C0882499245401422EED
+:1003E00055246624772401E010E00C0F1D1F080D32
+:1003F000191DC701B601A30192010E94F507F8017A
+:1004000060830894811C911CA11CB11CC701B6011A
+:10041000A30192010E94F507C901DA016C017D0177
+:10042000C114D104E104F104F1F681E0E82EF12CCD
+:10043000EC0EFD1EE80CF91C3E010894611C711CB9
+:10044000D501C4010197A109B1096C01C818D908E7
+:1004500014C0F601EE0DFF1D60816A3010F4605D7E
+:1004600001C0695CD101ED91FC910190F081E02D1A
+:10047000C10109950894E108F1086E147F0449F759
+:10048000A0960FB6F894DEBF0FBECDBFCF91DF911F
+:100490001F910F91FF90EF90DF90CF90BF90AF90A2
+:1004A0009F908F907F906F905F904F903F902F9094
+:1004B00008952AE00E94C10108950F931F938C01B3
+:1004C0000E945902C8010E947F011F910F91089557
+:1004D000AB0160E070E00E94590208950F931F93F2
+:1004E0008C01AB0160E070E00E945902C8010E94DB
+:1004F0007F011F910F910895EF92FF920F931F9329
+:10050000CF93DF93EC017A018B0177FF0FC0E88175
+:10051000F9810190F081E02D6DE20995109500952B
+:10052000F094E094E11CF11C011D111D2AE0B801BA
+:10053000A701CE010E94C101DF91CF911F910F91C0
+:10054000FF90EF9008950F931F938C010E947C02FF
+:10055000C8010E947F011F910F910895AB0166278A
+:1005600057FD6095762F0E947C0208950F931F938C
+:100570008C01AB01662757FD6095762F0E947C02A7
+:10058000C8010E947F011F910F910895DC01211580
+:10059000310541F4ED91FC910190F081E02D642F43
+:1005A000099508952A30310519F40E947C020895B6
+:1005B0000E94C10108950F931F938C010E94C602EF
+:1005C000C8010E947F011F910F910895EF92FF9241
+:1005D0000F931F937B018C0122E030E040E050E05C
+:1005E0000E941708205C3D4B404F5F4FCA01B90184
+:1005F000A80197010E941708C901DA010197A10912
+:10060000B109292F3A2F4B2F552747FD5A950196AF
+:10061000A11DB11D2093C50081508093C400E1EC61
+:10062000F0E0808180618083808188608083808128
+:10063000806880831F910F91FF90EF900895982F0D
+:100640008091C00085FFFCCF9093C60008958091F3
+:1006500028039091290380589F4F20912A033091BD
+:100660002B03821B930B60E870E00E94E207089561
+:1006700040912A0350912B038091280390912903E4
+:100680008417950719F42FEF3FEF0FC0FA01E45DCF
+:10069000FC4F2081CA01019660E870E00E94E207E9
+:1006A00090932B0380932A0330E0C9010895809131
+:1006B0002A0390912B039093290380932803089594
+:1006C0001F920F920FB60F9211242F933F934F93C7
+:1006D0005F936F937F938F939F93AF93BF93EF93AA
+:1006E000FF934091C600E0912803F0912903CF01C8
+:1006F000019660E870E00E94E2079C0180912A0365
+:1007000090912B032817390739F0E45DFC4F4083A3
+:100710003093290320932803FF91EF91BF91AF916C
+:100720009F918F917F916F915F914F913F912F9109
+:100730000F900FBE0F901F901895A0E0B0E0E3EA75
+:10074000F3E00C944608DC012B01FA019C919230F5
+:1007500008F439C1EB018881823008F433C1943048
+:1007600069F4843009F02FC111969C911197898109
+:10077000981709F428C1A9E1B1E025C1843009F432
+:1007800021C18230A9F4923009F01DC19A01AD0156
+:1007900088E0EA010990AE01E90109929E018150C9
+:1007A000C1F7E201898111969C918923818308C157
+:1007B000923009F407C112962D903C901397EB01EB
+:1007C0008A819B811496AD90BD90CD90DC90179757
+:1007D000EC80FD800E811F819101281B390BB9012E
+:1007E00037FF04C066277727621B730B60327105E1
+:1007F0000CF061C0121613066CF537014801062E85
+:1008000004C096948794779467940A94D2F721E071
+:1008100030E040E050E004C0220F331F441F551F5A
+:100820006A95D2F721503040404050402E213F2160
+:1008300040235123211531054105510521F021E0C7
+:1008400030E040E050E079018A01E628F7280829E5
+:1008500019293CC0232BD1F1260E371E3501460144
+:10086000062E04C096948794779467940A94D2F7DE
+:1008700021E030E040E050E004C0220F331F441F6D
+:10088000551F6A95D2F721503040404050402A21F0
+:100890003B214C215D21211531054105510521F0F8
+:1008A00021E030E040E050E059016A01A628B72875
+:1008B000C828D9280BC0821593052CF01C01AA2446
+:1008C000BB24650103C0EE24FF24870111969C918F
+:1008D000D20111968C91981709F445C0992339F0EB
+:1008E000A80197012A193B094C095D0906C0A60118
+:1008F00095012E193F09400B510B57FD08C011827D
+:100900003382228224833583468357831DC081E04E
+:1009100081833382228288279927DC01821B930BF3
+:10092000A40BB50B84839583A683B7830DC0220FD8
+:10093000331F441F551F2483358346835783828189
+:1009400093810197938382832481358146815781E6
+:10095000DA01C9010197A109B1098F5F9F4FAF4F1C
+:10096000BF4328F30BC0918333822282EA0CFB1C25
+:100970000C1D1D1DE482F5820683178383E08083AE
+:10098000248135814681578157FF1AC0C901AA27A2
+:1009900097FDA095BA2F81709070A070B070569599
+:1009A000479537952795822B932BA42BB52B8483C2
+:1009B0009583A683B78382819381019693838283F3
+:1009C000DF0101C0D201CD01CDB7DEB7E2E10C9469
+:1009D0006208A0E2B0E0EFEEF4E00C945208698304
+:1009E0007A838B839C832D833E834F835887E9E0F2
+:1009F000EE2EF12CEC0EFD1ECE010196B7010E94E9
+:100A00006A078E010F5E1F4FCE010596B8010E9446
+:100A10006A078A8991E089278A8BC701B801AE01EC
+:100A2000475E5F4F0E949D030E949506A096E6E0F8
+:100A30000C946E08A0E2B0E0E0E2F5E00C945208FD
+:100A400069837A838B839C832D833E834F8358876E
+:100A5000F9E0EF2EF12CEC0EFD1ECE010196B70150
+:100A60000E946A078E010F5E1F4FCE010596B801E6
+:100A70000E946A07C701B801AE01475E5F4F0E943E
+:100A80009D030E949506A096E6E00C946E08A0E2F5
+:100A9000B0E0EDE4F5E00C94460869837A838B833B
+:100AA0009C832D833E834F835887CE010196BE01E0
+:100AB000675F7F4F0E946A07CE010596BE016F5E99
+:100AC0007F4F0E946A079985923088F08989823029
+:100AD000C8F0943019F4823051F404C0843029F401
+:100AE000923081F489E191E0C6C0923049F420E06F
+:100AF0009A858A89981321E02A87CE010996BBC07E
+:100B0000823049F420E09A858A89981321E02A8B63
+:100B1000CE014196B0C02D843E844F8458886D88A4
+:100B20007E888F88988CEE24FF248701AA24BB241A
+:100B3000650140E050E060E070E0E0E0F0E0C1011D
+:100B400081709070892BE9F0E60CF71C081D191DC7
+:100B50009A01AB012A0D3B1D4C1D5D1D80E090E00C
+:100B6000A0E0B0E0E614F7040805190520F481E0E0
+:100B700090E0A0E0B0E0BA01A901480F591F6A1F38
+:100B80007B1FAA0CBB1CCC1CDD1C97FE08C081E09F
+:100B900090E0A0E0B0E0A82AB92ACA2ADB2A319660
+:100BA000E032F10549F0660C771C881C991C5694BC
+:100BB000479437942794C3CFFA85EA892B893C89D7
+:100BC0008B859C85280F391F2E5F3F4F17C0CA01A8
+:100BD00081709070892B61F016950795F794E794D2
+:100BE00080E090E0A0E0B0E8E82AF92A0A2B1B2B6D
+:100BF00076956795579547952F5F3F4F77FDE7CFE0
+:100C00000CC0440F551F661F771F17FD4160EE0C87
+:100C1000FF1C001F111F21503040403090E0590749
+:100C200090E0690790E4790760F32B8F3C8FDB013C
+:100C3000CA018F779070A070B07080349105A105C3
+:100C4000B10561F447FD0AC0E114F1040105110585
+:100C500029F0405C5F4F6F4F7F4F40781A8EFE1730
+:100C600011F081E08A8F4D8F5E8F6F8F78A383E0C4
+:100C7000898FCE0149960E949506A096E2E10C94D8
+:100C80006208ACE0B0E0E7E4F6E00C945608698353
+:100C90007A838B839C83CE010196BE016B5F7F4F6D
+:100CA0000E946A078D81823061F1823050F1843078
+:100CB00021F48E81882351F12EC02F81388537FD94
+:100CC00020C06E812F3131051CF06623F9F023C05E
+:100CD0008EE190E0821B930B29853A854B855C85DC
+:100CE00004C056954795379527958A95D2F7662380
+:100CF000B1F050954095309521953F4F4F4F5F4F44
+:100D00000EC020E030E040E050E009C02FEF3FEFA0
+:100D10004FEF5FE704C020E030E040E050E8B90169
+:100D2000CA012C96E2E00C947208DF92EF92FF92D7
+:100D30000F931F93FC01E480F58006811781D18019
+:100D40008081823048F480E090E0A0E1B0E0E82AC1
+:100D5000F92A0A2B1B2BA5C0843009F49FC08230CE
+:100D600021F4EE24FF24870105C0E114F1040105FC
+:100D7000110519F4E0E0F0E096C0628173819FEF05
+:100D8000623879070CF05BC022E83FEF261B370B77
+:100D90002A3131052CF020E030E040E050E02AC05C
+:100DA000B801A701022E04C076956795579547951F
+:100DB0000A94D2F781E090E0A0E0B0E004C0880F90
+:100DC000991FAA1FBB1F2A95D2F70197A109B10944
+:100DD0008E219F21A023B1230097A105B10521F009
+:100DE00081E090E0A0E0B0E09A01AB01282B392B24
+:100DF0004A2B5B2BDA01C9018F779070A070B0701D
+:100E000080349105A105B10539F427FF09C0205CA4
+:100E10003F4F4F4F5F4F04C0215C3F4F4F4F5F4FDD
+:100E2000E0E0F0E02030A0E03A07A0E04A07A0E4CC
+:100E30005A0710F0E1E0F0E079018A0127C060383C
+:100E4000710564F5FB01E158FF4FD801C7018F77A9
+:100E50009070A070B07080349105A105B10539F48F
+:100E6000E7FE0DC080E490E0A0E0B0E004C08FE3B6
+:100E700090E0A0E0B0E0E80EF91E0A1F1B1F17FF6C
+:100E800005C016950795F794E794319687E0169577
+:100E90000795F794E7948A95D1F705C0EE24FF24CF
+:100EA0008701EFEFF0E06E2F679566276795902F2B
+:100EB0009F77D794DD24D7948E2F8695492F462B84
+:100EC000582F5D29B701CA011F910F91FF90EF9034
+:100ED000DF900895FC01DB01408151812281622F66
+:100EE0006F7770E0221F2227221F9381892F880F9E
+:100EF000822B282F30E0991F9927991F11969C93D8
+:100F0000119721153105A9F54115510561057105A7
+:100F100011F482E037C082E89FEF13969C938E9382
+:100F200012979A01AB0167E0220F331F441F551F30
+:100F30006A95D1F783E08C930DC0220F331F441FB5
+:100F4000551F12968D919C911397019713969C9320
+:100F50008E931297203080E0380780E0480780E4C5
+:100F6000580758F314962D933D934D935C93179720
+:100F700008952F3F310579F441155105610571053B
+:100F800019F484E08C93089564FF03C081E08C938E
+:100F900012C01C9210C02F57304013963C932E93D2
+:100FA000129783E08C9387E0440F551F661F771FCD
+:100FB0008A95D1F7706414964D935D936D937C93ED
+:100FC0001797089597FB092E07260AD077FD04D0BE
+:100FD00049D006D000201AF4709561957F4F08958E
+:100FE000F6F7909581959F4F0895A1E21A2EAA1BBE
+:100FF000BB1BFD010DC0AA1FBB1FEE1FFF1FA217C9
+:10100000B307E407F50720F0A21BB30BE40BF50BC5
+:10101000661F771F881F991F1A9469F7609570954E
+:10102000809590959B01AC01BD01CF01089597FB80
+:10103000092E05260ED057FD04D0D7DF0AD0001C9C
+:1010400038F450954095309521953F4F4F4F5F4F65
+:101050000895F6F790958095709561957F4F8F4F25
+:101060009F4F0895AA1BBB1B51E107C0AA1FBB1FBE
+:10107000A617B70710F0A61BB70B881F991F5A9524
+:10108000A9F780959095BC01CD0108952F923F92CC
+:101090004F925F926F927F928F929F92AF92BF9288
+:1010A000CF92DF92EF92FF920F931F93CF93DF9334
+:1010B000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE91
+:1010C000CDBF09942A88398848885F846E847D84DE
+:1010D0008C849B84AA84B984C884DF80EE80FD80E0
+:1010E0000C811B81AA81B981CE0FD11D0FB6F89456
+:1010F000DEBF0FBECDBFED010895EE0FFF1F0590BF
+:10110000F491E02D09949F9305D00F9007FCEE5FBA
+:1011100028C0CEC03FD0E8F3E894E0E0BB279F575B
+:10112000F0F02AED3FE049EC06C0EE0FBB0F661F62
+:10113000771F881F28F0B23A62077307840728F0E8
+:10114000B25A620B730B840BE3959A9572F7803851
+:1011500030F49A95BB0F661F771F881FD2F790480F
+:101160009BC0EF93E0FF06C0A2EA2AED3FE049EC06
+:101170005FEB37D0BFD00F90039401FC9058E8E6A6
+:10118000F0E099C057FD9058440F551F59F05F3F4C
+:1011900071F04795880F97FB991F61F09F3F79F099
+:1011A00087950895121613061406551FF2CF46951B
+:1011B000F1DF08C0161617061806991FF1CF86959D
+:1011C000710561050894089587D030F08CD020F027
+:1011D00031F49F3F11F41EF46BC00EF4E095E7FB71
+:1011E00053C0E92FCFDF80F3BA1762077307840774
+:1011F000950718F071F49EF58EC00EF4E0950B2E55
+:10120000BA2FA02D0B01B90190010C01CA01A00158
+:101210001124FF27591B99F0593F50F4503E68F1B3
+:101220001A16F040A22F232F342F4427585FF3CFF4
+:10123000469537952795A795F0405395C9F77EF4C5
+:101240001F16BA0B620B730B840BBAF09150A1F00E
+:10125000FF0FBB1F661F771F881FC2F70EC0BA0F94
+:10126000621F731F841F48F4879577956795B7951C
+:10127000F7959E3F08F0B3CF9395880F08F0992714
+:10128000EE0F97958795089597F99F6780E870E02E
+:1012900060E008959F3F31F0915020F48795779555
+:1012A0006795B795880F911D9695879597F908953D
+:1012B0009FEF80EC08959F938F937F936F93FF939D
+:1012C000EF939B01AC01E3DBEF91FF912BD02F91CA
+:1012D0003F914F915F91DBCB00240A9416161706BD
+:1012E00018060906089500240A9412161306140617
+:1012F00005060895092E0394000C11F4882352F07A
+:10130000BB0F40F4BF2B11F460FF04C06F5F7F4F31
+:101310008F4F9F4F0895E894BB2766277727CB010F
+:1013200097F90895DF93CF931F930F93FF92EF9256
+:10133000DF927B018C01689405C0DA2EEF0121D089
+:10134000FE01E894A5912591359145915591AEF313
+:10135000EF0147DFFE019701A801DA9479F7DF90EA
+:10136000EF90FF900F911F91CF91DF910895B4DF1F
+:1013700028F0B9DF18F0952309F086CF99CF112412
+:10138000CBCF00DFA0F3959FD1F3950F50E0551F11
+:10139000629FF001729FBB27F00DB11D639FAA27CA
+:1013A000F00DB11DAA1F649F6627B00DA11D661F19
+:1013B000829F2227B00DA11D621F739FB00DA11D3A
+:1013C000621F839FA00D611D221F749F3327A00DF4
+:1013D000611D231F849F600D211D822F762F6A2F90
+:1013E00011249F5750408AF0E1F088234AF0EE0F15
+:1013F000FF1FBB1F661F771F881F91505040A9F722
+:101400009E3F510570F040CF87CF5F3FECF3983E91
+:10141000DCF3869577956795B795F795E7959F5F88
+:10142000C1F7FE2B880F911D9695879597F9089522
+:04143000F894FFCF5E
+:1014340057656C636F6D6520746F20656C656374AC
+:101444006963000000000045010000000000000086
+:02145400000096
+:00000001FF
diff --git a/electic_streaming2560/bin/Release/electic_streaming.elf.lss b/electic_streaming2560/bin/Release/electic_streaming.elf.lss new file mode 100644 index 0000000..06e1adb --- /dev/null +++ b/electic_streaming2560/bin/Release/electic_streaming.elf.lss @@ -0,0 +1,2665 @@ + +bin/Release/electic_streaming.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000022 00800100 00001434 000014c8 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00001434 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 0000028a 00800122 00800122 000014ea 2**0 + ALLOC + 3 .stab 00001cd4 00000000 00000000 000014ec 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 0000030d 00000000 00000000 000031c0 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_aranges 00000060 00000000 00000000 000034cd 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_pubnames 000002a7 00000000 00000000 0000352d 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_info 00000d0b 00000000 00000000 000037d4 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_abbrev 000003f7 00000000 00000000 000044df 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_line 00000689 00000000 00000000 000048d6 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_frame 00000210 00000000 00000000 00004f60 2**2 + CONTENTS, READONLY, DEBUGGING + 11 .debug_str 00000420 00000000 00000000 00005170 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_loc 0000075a 00000000 00000000 00005590 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 44 00 jmp 0x88 ; 0x88 <__ctors_end> + 4: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 8: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 10: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 14: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 18: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 1c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 20: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 24: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 28: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 2c: 0c 94 6e 00 jmp 0xdc ; 0xdc <__vector_11> + 30: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 34: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 38: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 3c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 40: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 44: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 48: 0c 94 60 03 jmp 0x6c0 ; 0x6c0 <__vector_18> + 4c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 50: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 54: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 58: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 5c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 60: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 64: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 68: 05 a8 ldd r0, Z+53 ; 0x35 + 6a: 4c cd rjmp .-1384 ; 0xfffffb04 <__eeprom_end+0xff7efb04> + 6c: b2 d4 rcall .+2404 ; 0x9d2 <__subsf3> + 6e: 4e b9 out 0x0e, r20 ; 14 + 70: 38 36 cpi r19, 0x68 ; 104 + 72: a9 02 muls r26, r25 + 74: 0c 50 subi r16, 0x0C ; 12 + 76: b9 91 ld r27, Y+ + 78: 86 88 ldd r8, Z+22 ; 0x16 + 7a: 08 3c cpi r16, 0xC8 ; 200 + 7c: a6 aa std Z+54, r10 ; 0x36 + 7e: aa 2a or r10, r26 + 80: be 00 .word 0x00be ; ???? + 82: 00 00 nop + 84: 80 3f cpi r24, 0xF0 ; 240 + +00000086 <__ctors_start>: + 86: 3e 01 movw r6, r28 + +00000088 <__ctors_end>: + 88: 11 24 eor r1, r1 + 8a: 1f be out 0x3f, r1 ; 63 + 8c: cf ef ldi r28, 0xFF ; 255 + 8e: d8 e0 ldi r29, 0x08 ; 8 + 90: de bf out 0x3e, r29 ; 62 + 92: cd bf out 0x3d, r28 ; 61 + +00000094 <__do_copy_data>: + 94: 11 e0 ldi r17, 0x01 ; 1 + 96: a0 e0 ldi r26, 0x00 ; 0 + 98: b1 e0 ldi r27, 0x01 ; 1 + 9a: e4 e3 ldi r30, 0x34 ; 52 + 9c: f4 e1 ldi r31, 0x14 ; 20 + 9e: 02 c0 rjmp .+4 ; 0xa4 <.do_copy_data_start> + +000000a0 <.do_copy_data_loop>: + a0: 05 90 lpm r0, Z+ + a2: 0d 92 st X+, r0 + +000000a4 <.do_copy_data_start>: + a4: a2 32 cpi r26, 0x22 ; 34 + a6: b1 07 cpc r27, r17 + a8: d9 f7 brne .-10 ; 0xa0 <.do_copy_data_loop> + +000000aa <__do_clear_bss>: + aa: 13 e0 ldi r17, 0x03 ; 3 + ac: a2 e2 ldi r26, 0x22 ; 34 + ae: b1 e0 ldi r27, 0x01 ; 1 + b0: 01 c0 rjmp .+2 ; 0xb4 <.do_clear_bss_start> + +000000b2 <.do_clear_bss_loop>: + b2: 1d 92 st X+, r1 + +000000b4 <.do_clear_bss_start>: + b4: ac 3a cpi r26, 0xAC ; 172 + b6: b1 07 cpc r27, r17 + b8: e1 f7 brne .-8 ; 0xb2 <.do_clear_bss_loop> + +000000ba <__do_global_ctors>: + ba: 10 e0 ldi r17, 0x00 ; 0 + bc: c8 e8 ldi r28, 0x88 ; 136 + be: d0 e0 ldi r29, 0x00 ; 0 + c0: 04 c0 rjmp .+8 ; 0xca <.do_global_ctors_start> + +000000c2 <.do_global_ctors_loop>: + c2: 22 97 sbiw r28, 0x02 ; 2 + c4: fe 01 movw r30, r28 + c6: 0e 94 7f 08 call 0x10fe ; 0x10fe <__tablejump__> + +000000ca <.do_global_ctors_start>: + ca: c6 38 cpi r28, 0x86 ; 134 + cc: d1 07 cpc r29, r17 + ce: c9 f7 brne .-14 ; 0xc2 <.do_global_ctors_loop> + d0: 0e 94 02 01 call 0x204 ; 0x204 <main> + d4: 0c 94 18 0a jmp 0x1430 ; 0x1430 <_exit> + +000000d8 <__bad_interrupt>: + d8: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000dc <__vector_11>: + dc: 1f 92 push r1 + de: 0f 92 push r0 + e0: 0f b6 in r0, 0x3f ; 63 + e2: 0f 92 push r0 + e4: 11 24 eor r1, r1 + e6: 2f 93 push r18 + e8: 3f 93 push r19 + ea: 4f 93 push r20 + ec: 5f 93 push r21 + ee: 6f 93 push r22 + f0: 7f 93 push r23 + f2: 8f 93 push r24 + f4: 9f 93 push r25 + f6: af 93 push r26 + f8: bf 93 push r27 + fa: cf 93 push r28 + fc: df 93 push r29 + fe: ef 93 push r30 + 100: ff 93 push r31 + 102: 85 b1 in r24, 0x05 ; 5 + 104: 90 e2 ldi r25, 0x20 ; 32 + 106: 89 27 eor r24, r25 + 108: 85 b9 out 0x05, r24 ; 5 + 10a: c0 e0 ldi r28, 0x00 ; 0 + 10c: d0 e0 ldi r29, 0x00 ; 0 + 10e: e0 91 24 03 lds r30, 0x0324 + 112: f0 91 25 03 lds r31, 0x0325 + 116: ee 5d subi r30, 0xDE ; 222 + 118: fe 4f sbci r31, 0xFE ; 254 + 11a: 86 e2 ldi r24, 0x26 ; 38 + 11c: 93 e0 ldi r25, 0x03 ; 3 + 11e: 60 81 ld r22, Z + 120: 0e 94 45 01 call 0x28a ; 0x28a <_ZN14HardwareSerial5writeEh> + 124: 80 91 24 03 lds r24, 0x0324 + 128: 90 91 25 03 lds r25, 0x0325 + 12c: 01 96 adiw r24, 0x01 ; 1 + 12e: 60 e0 ldi r22, 0x00 ; 0 + 130: 72 e0 ldi r23, 0x02 ; 2 + 132: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 136: 90 93 25 03 sts 0x0325, r25 + 13a: 80 93 24 03 sts 0x0324, r24 + 13e: 21 96 adiw r28, 0x01 ; 1 + 140: 81 e0 ldi r24, 0x01 ; 1 + 142: c0 34 cpi r28, 0x40 ; 64 + 144: d8 07 cpc r29, r24 + 146: 19 f7 brne .-58 ; 0x10e <__vector_11+0x32> + 148: 86 e2 ldi r24, 0x26 ; 38 + 14a: 93 e0 ldi r25, 0x03 ; 3 + 14c: 60 e0 ldi r22, 0x00 ; 0 + 14e: 0e 94 45 01 call 0x28a ; 0x28a <_ZN14HardwareSerial5writeEh> + 152: ff 91 pop r31 + 154: ef 91 pop r30 + 156: df 91 pop r29 + 158: cf 91 pop r28 + 15a: bf 91 pop r27 + 15c: af 91 pop r26 + 15e: 9f 91 pop r25 + 160: 8f 91 pop r24 + 162: 7f 91 pop r23 + 164: 6f 91 pop r22 + 166: 5f 91 pop r21 + 168: 4f 91 pop r20 + 16a: 3f 91 pop r19 + 16c: 2f 91 pop r18 + 16e: 0f 90 pop r0 + 170: 0f be out 0x3f, r0 ; 63 + 172: 0f 90 pop r0 + 174: 1f 90 pop r1 + 176: 18 95 reti + +00000178 <_Z13fill_sinewavev>: + 178: af 92 push r10 + 17a: bf 92 push r11 + 17c: cf 92 push r12 + 17e: df 92 push r13 + 180: ef 92 push r14 + 182: ff 92 push r15 + 184: 0f 93 push r16 + 186: 1f 93 push r17 + 188: cf 93 push r28 + 18a: df 93 push r29 + 18c: c2 e2 ldi r28, 0x22 ; 34 + 18e: d1 e0 ldi r29, 0x01 ; 1 + 190: 0f 2e mov r0, r31 + 192: f0 e0 ldi r31, 0x00 ; 0 + 194: af 2e mov r10, r31 + 196: f0 e0 ldi r31, 0x00 ; 0 + 198: bf 2e mov r11, r31 + 19a: f0 e0 ldi r31, 0x00 ; 0 + 19c: cf 2e mov r12, r31 + 19e: f0 e0 ldi r31, 0x00 ; 0 + 1a0: df 2e mov r13, r31 + 1a2: f0 2d mov r31, r0 + 1a4: c6 01 movw r24, r12 + 1a6: b5 01 movw r22, r10 + 1a8: 0e 94 83 08 call 0x1106 ; 0x1106 <sin> + 1ac: 7b 01 movw r14, r22 + 1ae: 8c 01 movw r16, r24 + 1b0: c6 01 movw r24, r12 + 1b2: b5 01 movw r22, r10 + 1b4: 28 ed ldi r18, 0xD8 ; 216 + 1b6: 3f e0 ldi r19, 0x0F ; 15 + 1b8: 49 e4 ldi r20, 0x49 ; 73 + 1ba: 5c e3 ldi r21, 0x3C ; 60 + 1bc: 0e 94 1a 05 call 0xa34 ; 0xa34 <__addsf3> + 1c0: 5b 01 movw r10, r22 + 1c2: 6c 01 movw r12, r24 + 1c4: c8 01 movw r24, r16 + 1c6: b7 01 movw r22, r14 + 1c8: 20 e0 ldi r18, 0x00 ; 0 + 1ca: 30 e0 ldi r19, 0x00 ; 0 + 1cc: 4e ef ldi r20, 0xFE ; 254 + 1ce: 52 e4 ldi r21, 0x42 ; 66 + 1d0: 0e 94 47 05 call 0xa8e ; 0xa8e <__mulsf3> + 1d4: 20 e0 ldi r18, 0x00 ; 0 + 1d6: 30 e0 ldi r19, 0x00 ; 0 + 1d8: 40 e0 ldi r20, 0x00 ; 0 + 1da: 53 e4 ldi r21, 0x43 ; 67 + 1dc: 0e 94 1a 05 call 0xa34 ; 0xa34 <__addsf3> + 1e0: 0e 94 41 06 call 0xc82 ; 0xc82 <__fixsfsi> + 1e4: 69 93 st Y+, r22 + 1e6: 83 e0 ldi r24, 0x03 ; 3 + 1e8: c2 32 cpi r28, 0x22 ; 34 + 1ea: d8 07 cpc r29, r24 + 1ec: d9 f6 brne .-74 ; 0x1a4 <_Z13fill_sinewavev+0x2c> + 1ee: df 91 pop r29 + 1f0: cf 91 pop r28 + 1f2: 1f 91 pop r17 + 1f4: 0f 91 pop r16 + 1f6: ff 90 pop r15 + 1f8: ef 90 pop r14 + 1fa: df 90 pop r13 + 1fc: cf 90 pop r12 + 1fe: bf 90 pop r11 + 200: af 90 pop r10 + 202: 08 95 ret + +00000204 <main>: + 204: 1f 93 push r17 + 206: 0e 94 bc 00 call 0x178 ; 0x178 <_Z13fill_sinewavev> + 20a: 86 e2 ldi r24, 0x26 ; 38 + 20c: 93 e0 ldi r25, 0x03 ; 3 + 20e: 40 e0 ldi r20, 0x00 ; 0 + 210: 52 ec ldi r21, 0xC2 ; 194 + 212: 61 e0 ldi r22, 0x01 ; 1 + 214: 70 e0 ldi r23, 0x00 ; 0 + 216: 0e 94 52 01 call 0x2a4 ; 0x2a4 <_ZN14HardwareSerial5beginEl> + 21a: 25 9a sbi 0x04, 5 ; 4 + 21c: 80 e2 ldi r24, 0x20 ; 32 + 21e: 85 b9 out 0x05, r24 ; 5 + 220: 80 91 81 00 lds r24, 0x0081 + 224: 88 60 ori r24, 0x08 ; 8 + 226: 80 93 81 00 sts 0x0081, r24 + 22a: 80 91 6f 00 lds r24, 0x006F + 22e: 82 60 ori r24, 0x02 ; 2 + 230: 80 93 6f 00 sts 0x006F, r24 + 234: 86 e8 ldi r24, 0x86 ; 134 + 236: 91 e0 ldi r25, 0x01 ; 1 + 238: 90 93 89 00 sts 0x0089, r25 + 23c: 80 93 88 00 sts 0x0088, r24 + 240: 78 94 sei + 242: 10 e2 ldi r17, 0x20 ; 32 + 244: 86 e2 ldi r24, 0x26 ; 38 + 246: 93 e0 ldi r25, 0x03 ; 3 + 248: 0e 94 4f 01 call 0x29e ; 0x29e <_ZN14HardwareSerial9availableEv> + 24c: 18 16 cp r1, r24 + 24e: 19 06 cpc r1, r25 + 250: cc f7 brge .-14 ; 0x244 <main+0x40> + 252: 85 b1 in r24, 0x05 ; 5 + 254: 81 27 eor r24, r17 + 256: 85 b9 out 0x05, r24 ; 5 + 258: 86 e2 ldi r24, 0x26 ; 38 + 25a: 93 e0 ldi r25, 0x03 ; 3 + 25c: 0e 94 4c 01 call 0x298 ; 0x298 <_ZN14HardwareSerial4readEv> + 260: 81 36 cpi r24, 0x61 ; 97 + 262: 81 f7 brne .-32 ; 0x244 <main+0x40> + 264: 86 e2 ldi r24, 0x26 ; 38 + 266: 93 e0 ldi r25, 0x03 ; 3 + 268: 60 e0 ldi r22, 0x00 ; 0 + 26a: 71 e0 ldi r23, 0x01 ; 1 + 26c: 0e 94 a6 01 call 0x34c ; 0x34c <_ZN5Print7printlnEPKc> + 270: 80 91 81 00 lds r24, 0x0081 + 274: 85 60 ori r24, 0x05 ; 5 + 276: 80 93 81 00 sts 0x0081, r24 + 27a: e4 cf rjmp .-56 ; 0x244 <main+0x40> + +0000027c <_GLOBAL__I__ZN14HardwareSerial5beginEl>: + 27c: 87 e1 ldi r24, 0x17 ; 23 + 27e: 91 e0 ldi r25, 0x01 ; 1 + 280: 90 93 27 03 sts 0x0327, r25 + 284: 80 93 26 03 sts 0x0326, r24 + 288: 08 95 ret + +0000028a <_ZN14HardwareSerial5writeEh>: + 28a: 86 2f mov r24, r22 + 28c: 0e 94 1f 03 call 0x63e ; 0x63e <serialWrite> + 290: 08 95 ret + +00000292 <_ZN14HardwareSerial5flushEv>: + 292: 0e 94 57 03 call 0x6ae ; 0x6ae <serialFlush> + 296: 08 95 ret + +00000298 <_ZN14HardwareSerial4readEv>: + 298: 0e 94 38 03 call 0x670 ; 0x670 <serialRead> + 29c: 08 95 ret + +0000029e <_ZN14HardwareSerial9availableEv>: + 29e: 0e 94 27 03 call 0x64e ; 0x64e <serialAvailable> + 2a2: 08 95 ret + +000002a4 <_ZN14HardwareSerial5beginEl>: + 2a4: cb 01 movw r24, r22 + 2a6: ba 01 movw r22, r20 + 2a8: 0e 94 e6 02 call 0x5cc ; 0x5cc <beginSerial> + 2ac: 08 95 ret + +000002ae <_ZN5Print5printEh>: + 2ae: dc 01 movw r26, r24 + 2b0: ed 91 ld r30, X+ + 2b2: fc 91 ld r31, X + 2b4: 01 90 ld r0, Z+ + 2b6: f0 81 ld r31, Z + 2b8: e0 2d mov r30, r0 + 2ba: 09 95 icall + 2bc: 08 95 ret + +000002be <_ZN5Print5printEc>: + 2be: dc 01 movw r26, r24 + 2c0: ed 91 ld r30, X+ + 2c2: fc 91 ld r31, X + 2c4: 01 90 ld r0, Z+ + 2c6: f0 81 ld r31, Z + 2c8: e0 2d mov r30, r0 + 2ca: 09 95 icall + 2cc: 08 95 ret + +000002ce <_ZN5Print5printEPKc>: + 2ce: 0f 93 push r16 + 2d0: 1f 93 push r17 + 2d2: cf 93 push r28 + 2d4: df 93 push r29 + 2d6: 8c 01 movw r16, r24 + 2d8: eb 01 movw r28, r22 + 2da: 09 c0 rjmp .+18 ; 0x2ee <_ZN5Print5printEPKc+0x20> + 2dc: 21 96 adiw r28, 0x01 ; 1 + 2de: d8 01 movw r26, r16 + 2e0: ed 91 ld r30, X+ + 2e2: fc 91 ld r31, X + 2e4: 01 90 ld r0, Z+ + 2e6: f0 81 ld r31, Z + 2e8: e0 2d mov r30, r0 + 2ea: c8 01 movw r24, r16 + 2ec: 09 95 icall + 2ee: 68 81 ld r22, Y + 2f0: 66 23 and r22, r22 + 2f2: a1 f7 brne .-24 ; 0x2dc <_ZN5Print5printEPKc+0xe> + 2f4: df 91 pop r29 + 2f6: cf 91 pop r28 + 2f8: 1f 91 pop r17 + 2fa: 0f 91 pop r16 + 2fc: 08 95 ret + +000002fe <_ZN5Print7printlnEv>: + 2fe: 0f 93 push r16 + 300: 1f 93 push r17 + 302: 8c 01 movw r16, r24 + 304: dc 01 movw r26, r24 + 306: ed 91 ld r30, X+ + 308: fc 91 ld r31, X + 30a: 01 90 ld r0, Z+ + 30c: f0 81 ld r31, Z + 30e: e0 2d mov r30, r0 + 310: 6d e0 ldi r22, 0x0D ; 13 + 312: 09 95 icall + 314: d8 01 movw r26, r16 + 316: ed 91 ld r30, X+ + 318: fc 91 ld r31, X + 31a: 01 90 ld r0, Z+ + 31c: f0 81 ld r31, Z + 31e: e0 2d mov r30, r0 + 320: 6a e0 ldi r22, 0x0A ; 10 + 322: c8 01 movw r24, r16 + 324: 09 95 icall + 326: 1f 91 pop r17 + 328: 0f 91 pop r16 + 32a: 08 95 ret + +0000032c <_ZN5Print7printlnEc>: + 32c: 0f 93 push r16 + 32e: 1f 93 push r17 + 330: 8c 01 movw r16, r24 + 332: dc 01 movw r26, r24 + 334: ed 91 ld r30, X+ + 336: fc 91 ld r31, X + 338: 01 90 ld r0, Z+ + 33a: f0 81 ld r31, Z + 33c: e0 2d mov r30, r0 + 33e: 09 95 icall + 340: c8 01 movw r24, r16 + 342: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 346: 1f 91 pop r17 + 348: 0f 91 pop r16 + 34a: 08 95 ret + +0000034c <_ZN5Print7printlnEPKc>: + 34c: 0f 93 push r16 + 34e: 1f 93 push r17 + 350: 8c 01 movw r16, r24 + 352: 0e 94 67 01 call 0x2ce ; 0x2ce <_ZN5Print5printEPKc> + 356: c8 01 movw r24, r16 + 358: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 35c: 1f 91 pop r17 + 35e: 0f 91 pop r16 + 360: 08 95 ret + +00000362 <_ZN5Print7printlnEh>: + 362: 0f 93 push r16 + 364: 1f 93 push r17 + 366: 8c 01 movw r16, r24 + 368: dc 01 movw r26, r24 + 36a: ed 91 ld r30, X+ + 36c: fc 91 ld r31, X + 36e: 01 90 ld r0, Z+ + 370: f0 81 ld r31, Z + 372: e0 2d mov r30, r0 + 374: 09 95 icall + 376: c8 01 movw r24, r16 + 378: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 37c: 1f 91 pop r17 + 37e: 0f 91 pop r16 + 380: 08 95 ret + +00000382 <_ZN5Print11printNumberEmh>: + 382: 2f 92 push r2 + 384: 3f 92 push r3 + 386: 4f 92 push r4 + 388: 5f 92 push r5 + 38a: 6f 92 push r6 + 38c: 7f 92 push r7 + 38e: 8f 92 push r8 + 390: 9f 92 push r9 + 392: af 92 push r10 + 394: bf 92 push r11 + 396: cf 92 push r12 + 398: df 92 push r13 + 39a: ef 92 push r14 + 39c: ff 92 push r15 + 39e: 0f 93 push r16 + 3a0: 1f 93 push r17 + 3a2: df 93 push r29 + 3a4: cf 93 push r28 + 3a6: cd b7 in r28, 0x3d ; 61 + 3a8: de b7 in r29, 0x3e ; 62 + 3aa: a0 97 sbiw r28, 0x20 ; 32 + 3ac: 0f b6 in r0, 0x3f ; 63 + 3ae: f8 94 cli + 3b0: de bf out 0x3e, r29 ; 62 + 3b2: 0f be out 0x3f, r0 ; 63 + 3b4: cd bf out 0x3d, r28 ; 61 + 3b6: 1c 01 movw r2, r24 + 3b8: 6a 01 movw r12, r20 + 3ba: 7b 01 movw r14, r22 + 3bc: 41 15 cp r20, r1 + 3be: 51 05 cpc r21, r1 + 3c0: 61 05 cpc r22, r1 + 3c2: 71 05 cpc r23, r1 + 3c4: 49 f4 brne .+18 ; 0x3d8 <_ZN5Print11printNumberEmh+0x56> + 3c6: dc 01 movw r26, r24 + 3c8: ed 91 ld r30, X+ + 3ca: fc 91 ld r31, X + 3cc: 01 90 ld r0, Z+ + 3ce: f0 81 ld r31, Z + 3d0: e0 2d mov r30, r0 + 3d2: 60 e3 ldi r22, 0x30 ; 48 + 3d4: 09 95 icall + 3d6: 54 c0 rjmp .+168 ; 0x480 <_ZN5Print11printNumberEmh+0xfe> + 3d8: 88 24 eor r8, r8 + 3da: 99 24 eor r9, r9 + 3dc: 54 01 movw r10, r8 + 3de: 42 2e mov r4, r18 + 3e0: 55 24 eor r5, r5 + 3e2: 66 24 eor r6, r6 + 3e4: 77 24 eor r7, r7 + 3e6: 01 e0 ldi r16, 0x01 ; 1 + 3e8: 10 e0 ldi r17, 0x00 ; 0 + 3ea: 0c 0f add r16, r28 + 3ec: 1d 1f adc r17, r29 + 3ee: 08 0d add r16, r8 + 3f0: 19 1d adc r17, r9 + 3f2: c7 01 movw r24, r14 + 3f4: b6 01 movw r22, r12 + 3f6: a3 01 movw r20, r6 + 3f8: 92 01 movw r18, r4 + 3fa: 0e 94 f5 07 call 0xfea ; 0xfea <__udivmodsi4> + 3fe: f8 01 movw r30, r16 + 400: 60 83 st Z, r22 + 402: 08 94 sec + 404: 81 1c adc r8, r1 + 406: 91 1c adc r9, r1 + 408: a1 1c adc r10, r1 + 40a: b1 1c adc r11, r1 + 40c: c7 01 movw r24, r14 + 40e: b6 01 movw r22, r12 + 410: a3 01 movw r20, r6 + 412: 92 01 movw r18, r4 + 414: 0e 94 f5 07 call 0xfea ; 0xfea <__udivmodsi4> + 418: c9 01 movw r24, r18 + 41a: da 01 movw r26, r20 + 41c: 6c 01 movw r12, r24 + 41e: 7d 01 movw r14, r26 + 420: c1 14 cp r12, r1 + 422: d1 04 cpc r13, r1 + 424: e1 04 cpc r14, r1 + 426: f1 04 cpc r15, r1 + 428: f1 f6 brne .-68 ; 0x3e6 <_ZN5Print11printNumberEmh+0x64> + 42a: 81 e0 ldi r24, 0x01 ; 1 + 42c: e8 2e mov r14, r24 + 42e: f1 2c mov r15, r1 + 430: ec 0e add r14, r28 + 432: fd 1e adc r15, r29 + 434: e8 0c add r14, r8 + 436: f9 1c adc r15, r9 + 438: 3e 01 movw r6, r28 + 43a: 08 94 sec + 43c: 61 1c adc r6, r1 + 43e: 71 1c adc r7, r1 + 440: d5 01 movw r26, r10 + 442: c4 01 movw r24, r8 + 444: 01 97 sbiw r24, 0x01 ; 1 + 446: a1 09 sbc r26, r1 + 448: b1 09 sbc r27, r1 + 44a: 6c 01 movw r12, r24 + 44c: c8 18 sub r12, r8 + 44e: d9 08 sbc r13, r9 + 450: 14 c0 rjmp .+40 ; 0x47a <_ZN5Print11printNumberEmh+0xf8> + 452: f6 01 movw r30, r12 + 454: ee 0d add r30, r14 + 456: ff 1d adc r31, r15 + 458: 60 81 ld r22, Z + 45a: 6a 30 cpi r22, 0x0A ; 10 + 45c: 10 f4 brcc .+4 ; 0x462 <_ZN5Print11printNumberEmh+0xe0> + 45e: 60 5d subi r22, 0xD0 ; 208 + 460: 01 c0 rjmp .+2 ; 0x464 <_ZN5Print11printNumberEmh+0xe2> + 462: 69 5c subi r22, 0xC9 ; 201 + 464: d1 01 movw r26, r2 + 466: ed 91 ld r30, X+ + 468: fc 91 ld r31, X + 46a: 01 90 ld r0, Z+ + 46c: f0 81 ld r31, Z + 46e: e0 2d mov r30, r0 + 470: c1 01 movw r24, r2 + 472: 09 95 icall + 474: 08 94 sec + 476: e1 08 sbc r14, r1 + 478: f1 08 sbc r15, r1 + 47a: 6e 14 cp r6, r14 + 47c: 7f 04 cpc r7, r15 + 47e: 49 f7 brne .-46 ; 0x452 <_ZN5Print11printNumberEmh+0xd0> + 480: a0 96 adiw r28, 0x20 ; 32 + 482: 0f b6 in r0, 0x3f ; 63 + 484: f8 94 cli + 486: de bf out 0x3e, r29 ; 62 + 488: 0f be out 0x3f, r0 ; 63 + 48a: cd bf out 0x3d, r28 ; 61 + 48c: cf 91 pop r28 + 48e: df 91 pop r29 + 490: 1f 91 pop r17 + 492: 0f 91 pop r16 + 494: ff 90 pop r15 + 496: ef 90 pop r14 + 498: df 90 pop r13 + 49a: cf 90 pop r12 + 49c: bf 90 pop r11 + 49e: af 90 pop r10 + 4a0: 9f 90 pop r9 + 4a2: 8f 90 pop r8 + 4a4: 7f 90 pop r7 + 4a6: 6f 90 pop r6 + 4a8: 5f 90 pop r5 + 4aa: 4f 90 pop r4 + 4ac: 3f 90 pop r3 + 4ae: 2f 90 pop r2 + 4b0: 08 95 ret + +000004b2 <_ZN5Print5printEm>: + 4b2: 2a e0 ldi r18, 0x0A ; 10 + 4b4: 0e 94 c1 01 call 0x382 ; 0x382 <_ZN5Print11printNumberEmh> + 4b8: 08 95 ret + +000004ba <_ZN5Print7printlnEm>: + 4ba: 0f 93 push r16 + 4bc: 1f 93 push r17 + 4be: 8c 01 movw r16, r24 + 4c0: 0e 94 59 02 call 0x4b2 ; 0x4b2 <_ZN5Print5printEm> + 4c4: c8 01 movw r24, r16 + 4c6: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 4ca: 1f 91 pop r17 + 4cc: 0f 91 pop r16 + 4ce: 08 95 ret + +000004d0 <_ZN5Print5printEj>: + 4d0: ab 01 movw r20, r22 + 4d2: 60 e0 ldi r22, 0x00 ; 0 + 4d4: 70 e0 ldi r23, 0x00 ; 0 + 4d6: 0e 94 59 02 call 0x4b2 ; 0x4b2 <_ZN5Print5printEm> + 4da: 08 95 ret + +000004dc <_ZN5Print7printlnEj>: + 4dc: 0f 93 push r16 + 4de: 1f 93 push r17 + 4e0: 8c 01 movw r16, r24 + 4e2: ab 01 movw r20, r22 + 4e4: 60 e0 ldi r22, 0x00 ; 0 + 4e6: 70 e0 ldi r23, 0x00 ; 0 + 4e8: 0e 94 59 02 call 0x4b2 ; 0x4b2 <_ZN5Print5printEm> + 4ec: c8 01 movw r24, r16 + 4ee: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 4f2: 1f 91 pop r17 + 4f4: 0f 91 pop r16 + 4f6: 08 95 ret + +000004f8 <_ZN5Print5printEl>: + 4f8: ef 92 push r14 + 4fa: ff 92 push r15 + 4fc: 0f 93 push r16 + 4fe: 1f 93 push r17 + 500: cf 93 push r28 + 502: df 93 push r29 + 504: ec 01 movw r28, r24 + 506: 7a 01 movw r14, r20 + 508: 8b 01 movw r16, r22 + 50a: 77 ff sbrs r23, 7 + 50c: 0f c0 rjmp .+30 ; 0x52c <_ZN5Print5printEl+0x34> + 50e: e8 81 ld r30, Y + 510: f9 81 ldd r31, Y+1 ; 0x01 + 512: 01 90 ld r0, Z+ + 514: f0 81 ld r31, Z + 516: e0 2d mov r30, r0 + 518: 6d e2 ldi r22, 0x2D ; 45 + 51a: 09 95 icall + 51c: 10 95 com r17 + 51e: 00 95 com r16 + 520: f0 94 com r15 + 522: e0 94 com r14 + 524: e1 1c adc r14, r1 + 526: f1 1c adc r15, r1 + 528: 01 1d adc r16, r1 + 52a: 11 1d adc r17, r1 + 52c: 2a e0 ldi r18, 0x0A ; 10 + 52e: b8 01 movw r22, r16 + 530: a7 01 movw r20, r14 + 532: ce 01 movw r24, r28 + 534: 0e 94 c1 01 call 0x382 ; 0x382 <_ZN5Print11printNumberEmh> + 538: df 91 pop r29 + 53a: cf 91 pop r28 + 53c: 1f 91 pop r17 + 53e: 0f 91 pop r16 + 540: ff 90 pop r15 + 542: ef 90 pop r14 + 544: 08 95 ret + +00000546 <_ZN5Print7printlnEl>: + 546: 0f 93 push r16 + 548: 1f 93 push r17 + 54a: 8c 01 movw r16, r24 + 54c: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 550: c8 01 movw r24, r16 + 552: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 556: 1f 91 pop r17 + 558: 0f 91 pop r16 + 55a: 08 95 ret + +0000055c <_ZN5Print5printEi>: + 55c: ab 01 movw r20, r22 + 55e: 66 27 eor r22, r22 + 560: 57 fd sbrc r21, 7 + 562: 60 95 com r22 + 564: 76 2f mov r23, r22 + 566: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 56a: 08 95 ret + +0000056c <_ZN5Print7printlnEi>: + 56c: 0f 93 push r16 + 56e: 1f 93 push r17 + 570: 8c 01 movw r16, r24 + 572: ab 01 movw r20, r22 + 574: 66 27 eor r22, r22 + 576: 57 fd sbrc r21, 7 + 578: 60 95 com r22 + 57a: 76 2f mov r23, r22 + 57c: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 580: c8 01 movw r24, r16 + 582: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 586: 1f 91 pop r17 + 588: 0f 91 pop r16 + 58a: 08 95 ret + +0000058c <_ZN5Print5printEli>: + 58c: dc 01 movw r26, r24 + 58e: 21 15 cp r18, r1 + 590: 31 05 cpc r19, r1 + 592: 41 f4 brne .+16 ; 0x5a4 <_ZN5Print5printEli+0x18> + 594: ed 91 ld r30, X+ + 596: fc 91 ld r31, X + 598: 01 90 ld r0, Z+ + 59a: f0 81 ld r31, Z + 59c: e0 2d mov r30, r0 + 59e: 64 2f mov r22, r20 + 5a0: 09 95 icall + 5a2: 08 95 ret + 5a4: 2a 30 cpi r18, 0x0A ; 10 + 5a6: 31 05 cpc r19, r1 + 5a8: 19 f4 brne .+6 ; 0x5b0 <_ZN5Print5printEli+0x24> + 5aa: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 5ae: 08 95 ret + 5b0: 0e 94 c1 01 call 0x382 ; 0x382 <_ZN5Print11printNumberEmh> + 5b4: 08 95 ret + +000005b6 <_ZN5Print7printlnEli>: + 5b6: 0f 93 push r16 + 5b8: 1f 93 push r17 + 5ba: 8c 01 movw r16, r24 + 5bc: 0e 94 c6 02 call 0x58c ; 0x58c <_ZN5Print5printEli> + 5c0: c8 01 movw r24, r16 + 5c2: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 5c6: 1f 91 pop r17 + 5c8: 0f 91 pop r16 + 5ca: 08 95 ret + +000005cc <beginSerial>: + 5cc: ef 92 push r14 + 5ce: ff 92 push r15 + 5d0: 0f 93 push r16 + 5d2: 1f 93 push r17 + 5d4: 7b 01 movw r14, r22 + 5d6: 8c 01 movw r16, r24 + 5d8: 22 e0 ldi r18, 0x02 ; 2 + 5da: 30 e0 ldi r19, 0x00 ; 0 + 5dc: 40 e0 ldi r20, 0x00 ; 0 + 5de: 50 e0 ldi r21, 0x00 ; 0 + 5e0: 0e 94 17 08 call 0x102e ; 0x102e <__divmodsi4> + 5e4: 20 5c subi r18, 0xC0 ; 192 + 5e6: 3d 4b sbci r19, 0xBD ; 189 + 5e8: 40 4f sbci r20, 0xF0 ; 240 + 5ea: 5f 4f sbci r21, 0xFF ; 255 + 5ec: ca 01 movw r24, r20 + 5ee: b9 01 movw r22, r18 + 5f0: a8 01 movw r20, r16 + 5f2: 97 01 movw r18, r14 + 5f4: 0e 94 17 08 call 0x102e ; 0x102e <__divmodsi4> + 5f8: c9 01 movw r24, r18 + 5fa: da 01 movw r26, r20 + 5fc: 01 97 sbiw r24, 0x01 ; 1 + 5fe: a1 09 sbc r26, r1 + 600: b1 09 sbc r27, r1 + 602: 29 2f mov r18, r25 + 604: 3a 2f mov r19, r26 + 606: 4b 2f mov r20, r27 + 608: 55 27 eor r21, r21 + 60a: 47 fd sbrc r20, 7 + 60c: 5a 95 dec r21 + 60e: 01 96 adiw r24, 0x01 ; 1 + 610: a1 1d adc r26, r1 + 612: b1 1d adc r27, r1 + 614: 20 93 c5 00 sts 0x00C5, r18 + 618: 81 50 subi r24, 0x01 ; 1 + 61a: 80 93 c4 00 sts 0x00C4, r24 + 61e: e1 ec ldi r30, 0xC1 ; 193 + 620: f0 e0 ldi r31, 0x00 ; 0 + 622: 80 81 ld r24, Z + 624: 80 61 ori r24, 0x10 ; 16 + 626: 80 83 st Z, r24 + 628: 80 81 ld r24, Z + 62a: 88 60 ori r24, 0x08 ; 8 + 62c: 80 83 st Z, r24 + 62e: 80 81 ld r24, Z + 630: 80 68 ori r24, 0x80 ; 128 + 632: 80 83 st Z, r24 + 634: 1f 91 pop r17 + 636: 0f 91 pop r16 + 638: ff 90 pop r15 + 63a: ef 90 pop r14 + 63c: 08 95 ret + +0000063e <serialWrite>: + 63e: 98 2f mov r25, r24 + 640: 80 91 c0 00 lds r24, 0x00C0 + 644: 85 ff sbrs r24, 5 + 646: fc cf rjmp .-8 ; 0x640 <serialWrite+0x2> + 648: 90 93 c6 00 sts 0x00C6, r25 + 64c: 08 95 ret + +0000064e <serialAvailable>: + 64e: 80 91 28 03 lds r24, 0x0328 + 652: 90 91 29 03 lds r25, 0x0329 + 656: 80 58 subi r24, 0x80 ; 128 + 658: 9f 4f sbci r25, 0xFF ; 255 + 65a: 20 91 2a 03 lds r18, 0x032A + 65e: 30 91 2b 03 lds r19, 0x032B + 662: 82 1b sub r24, r18 + 664: 93 0b sbc r25, r19 + 666: 60 e8 ldi r22, 0x80 ; 128 + 668: 70 e0 ldi r23, 0x00 ; 0 + 66a: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 66e: 08 95 ret + +00000670 <serialRead>: + 670: 40 91 2a 03 lds r20, 0x032A + 674: 50 91 2b 03 lds r21, 0x032B + 678: 80 91 28 03 lds r24, 0x0328 + 67c: 90 91 29 03 lds r25, 0x0329 + 680: 84 17 cp r24, r20 + 682: 95 07 cpc r25, r21 + 684: 19 f4 brne .+6 ; 0x68c <serialRead+0x1c> + 686: 2f ef ldi r18, 0xFF ; 255 + 688: 3f ef ldi r19, 0xFF ; 255 + 68a: 0f c0 rjmp .+30 ; 0x6aa <serialRead+0x3a> + 68c: fa 01 movw r30, r20 + 68e: e4 5d subi r30, 0xD4 ; 212 + 690: fc 4f sbci r31, 0xFC ; 252 + 692: 20 81 ld r18, Z + 694: ca 01 movw r24, r20 + 696: 01 96 adiw r24, 0x01 ; 1 + 698: 60 e8 ldi r22, 0x80 ; 128 + 69a: 70 e0 ldi r23, 0x00 ; 0 + 69c: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 6a0: 90 93 2b 03 sts 0x032B, r25 + 6a4: 80 93 2a 03 sts 0x032A, r24 + 6a8: 30 e0 ldi r19, 0x00 ; 0 + 6aa: c9 01 movw r24, r18 + 6ac: 08 95 ret + +000006ae <serialFlush>: + 6ae: 80 91 2a 03 lds r24, 0x032A + 6b2: 90 91 2b 03 lds r25, 0x032B + 6b6: 90 93 29 03 sts 0x0329, r25 + 6ba: 80 93 28 03 sts 0x0328, r24 + 6be: 08 95 ret + +000006c0 <__vector_18>: + 6c0: 1f 92 push r1 + 6c2: 0f 92 push r0 + 6c4: 0f b6 in r0, 0x3f ; 63 + 6c6: 0f 92 push r0 + 6c8: 11 24 eor r1, r1 + 6ca: 2f 93 push r18 + 6cc: 3f 93 push r19 + 6ce: 4f 93 push r20 + 6d0: 5f 93 push r21 + 6d2: 6f 93 push r22 + 6d4: 7f 93 push r23 + 6d6: 8f 93 push r24 + 6d8: 9f 93 push r25 + 6da: af 93 push r26 + 6dc: bf 93 push r27 + 6de: ef 93 push r30 + 6e0: ff 93 push r31 + 6e2: 40 91 c6 00 lds r20, 0x00C6 + 6e6: e0 91 28 03 lds r30, 0x0328 + 6ea: f0 91 29 03 lds r31, 0x0329 + 6ee: cf 01 movw r24, r30 + 6f0: 01 96 adiw r24, 0x01 ; 1 + 6f2: 60 e8 ldi r22, 0x80 ; 128 + 6f4: 70 e0 ldi r23, 0x00 ; 0 + 6f6: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 6fa: 9c 01 movw r18, r24 + 6fc: 80 91 2a 03 lds r24, 0x032A + 700: 90 91 2b 03 lds r25, 0x032B + 704: 28 17 cp r18, r24 + 706: 39 07 cpc r19, r25 + 708: 39 f0 breq .+14 ; 0x718 <__vector_18+0x58> + 70a: e4 5d subi r30, 0xD4 ; 212 + 70c: fc 4f sbci r31, 0xFC ; 252 + 70e: 40 83 st Z, r20 + 710: 30 93 29 03 sts 0x0329, r19 + 714: 20 93 28 03 sts 0x0328, r18 + 718: ff 91 pop r31 + 71a: ef 91 pop r30 + 71c: bf 91 pop r27 + 71e: af 91 pop r26 + 720: 9f 91 pop r25 + 722: 8f 91 pop r24 + 724: 7f 91 pop r23 + 726: 6f 91 pop r22 + 728: 5f 91 pop r21 + 72a: 4f 91 pop r20 + 72c: 3f 91 pop r19 + 72e: 2f 91 pop r18 + 730: 0f 90 pop r0 + 732: 0f be out 0x3f, r0 ; 63 + 734: 0f 90 pop r0 + 736: 1f 90 pop r1 + 738: 18 95 reti + +0000073a <_fpadd_parts>: + 73a: a0 e0 ldi r26, 0x00 ; 0 + 73c: b0 e0 ldi r27, 0x00 ; 0 + 73e: e3 ea ldi r30, 0xA3 ; 163 + 740: f3 e0 ldi r31, 0x03 ; 3 + 742: 0c 94 46 08 jmp 0x108c ; 0x108c <__prologue_saves__> + 746: dc 01 movw r26, r24 + 748: 2b 01 movw r4, r22 + 74a: fa 01 movw r30, r20 + 74c: 9c 91 ld r25, X + 74e: 92 30 cpi r25, 0x02 ; 2 + 750: 08 f4 brcc .+2 ; 0x754 <_fpadd_parts+0x1a> + 752: 39 c1 rjmp .+626 ; 0x9c6 <__stack+0xc7> + 754: eb 01 movw r28, r22 + 756: 88 81 ld r24, Y + 758: 82 30 cpi r24, 0x02 ; 2 + 75a: 08 f4 brcc .+2 ; 0x75e <_fpadd_parts+0x24> + 75c: 33 c1 rjmp .+614 ; 0x9c4 <__stack+0xc5> + 75e: 94 30 cpi r25, 0x04 ; 4 + 760: 69 f4 brne .+26 ; 0x77c <_fpadd_parts+0x42> + 762: 84 30 cpi r24, 0x04 ; 4 + 764: 09 f0 breq .+2 ; 0x768 <_fpadd_parts+0x2e> + 766: 2f c1 rjmp .+606 ; 0x9c6 <__stack+0xc7> + 768: 11 96 adiw r26, 0x01 ; 1 + 76a: 9c 91 ld r25, X + 76c: 11 97 sbiw r26, 0x01 ; 1 + 76e: 89 81 ldd r24, Y+1 ; 0x01 + 770: 98 17 cp r25, r24 + 772: 09 f4 brne .+2 ; 0x776 <_fpadd_parts+0x3c> + 774: 28 c1 rjmp .+592 ; 0x9c6 <__stack+0xc7> + 776: a9 e1 ldi r26, 0x19 ; 25 + 778: b1 e0 ldi r27, 0x01 ; 1 + 77a: 25 c1 rjmp .+586 ; 0x9c6 <__stack+0xc7> + 77c: 84 30 cpi r24, 0x04 ; 4 + 77e: 09 f4 brne .+2 ; 0x782 <_fpadd_parts+0x48> + 780: 21 c1 rjmp .+578 ; 0x9c4 <__stack+0xc5> + 782: 82 30 cpi r24, 0x02 ; 2 + 784: a9 f4 brne .+42 ; 0x7b0 <_fpadd_parts+0x76> + 786: 92 30 cpi r25, 0x02 ; 2 + 788: 09 f0 breq .+2 ; 0x78c <_fpadd_parts+0x52> + 78a: 1d c1 rjmp .+570 ; 0x9c6 <__stack+0xc7> + 78c: 9a 01 movw r18, r20 + 78e: ad 01 movw r20, r26 + 790: 88 e0 ldi r24, 0x08 ; 8 + 792: ea 01 movw r28, r20 + 794: 09 90 ld r0, Y+ + 796: ae 01 movw r20, r28 + 798: e9 01 movw r28, r18 + 79a: 09 92 st Y+, r0 + 79c: 9e 01 movw r18, r28 + 79e: 81 50 subi r24, 0x01 ; 1 + 7a0: c1 f7 brne .-16 ; 0x792 <_fpadd_parts+0x58> + 7a2: e2 01 movw r28, r4 + 7a4: 89 81 ldd r24, Y+1 ; 0x01 + 7a6: 11 96 adiw r26, 0x01 ; 1 + 7a8: 9c 91 ld r25, X + 7aa: 89 23 and r24, r25 + 7ac: 81 83 std Z+1, r24 ; 0x01 + 7ae: 08 c1 rjmp .+528 ; 0x9c0 <__stack+0xc1> + 7b0: 92 30 cpi r25, 0x02 ; 2 + 7b2: 09 f4 brne .+2 ; 0x7b6 <_fpadd_parts+0x7c> + 7b4: 07 c1 rjmp .+526 ; 0x9c4 <__stack+0xc5> + 7b6: 12 96 adiw r26, 0x02 ; 2 + 7b8: 2d 90 ld r2, X+ + 7ba: 3c 90 ld r3, X + 7bc: 13 97 sbiw r26, 0x03 ; 3 + 7be: eb 01 movw r28, r22 + 7c0: 8a 81 ldd r24, Y+2 ; 0x02 + 7c2: 9b 81 ldd r25, Y+3 ; 0x03 + 7c4: 14 96 adiw r26, 0x04 ; 4 + 7c6: ad 90 ld r10, X+ + 7c8: bd 90 ld r11, X+ + 7ca: cd 90 ld r12, X+ + 7cc: dc 90 ld r13, X + 7ce: 17 97 sbiw r26, 0x07 ; 7 + 7d0: ec 80 ldd r14, Y+4 ; 0x04 + 7d2: fd 80 ldd r15, Y+5 ; 0x05 + 7d4: 0e 81 ldd r16, Y+6 ; 0x06 + 7d6: 1f 81 ldd r17, Y+7 ; 0x07 + 7d8: 91 01 movw r18, r2 + 7da: 28 1b sub r18, r24 + 7dc: 39 0b sbc r19, r25 + 7de: b9 01 movw r22, r18 + 7e0: 37 ff sbrs r19, 7 + 7e2: 04 c0 rjmp .+8 ; 0x7ec <_fpadd_parts+0xb2> + 7e4: 66 27 eor r22, r22 + 7e6: 77 27 eor r23, r23 + 7e8: 62 1b sub r22, r18 + 7ea: 73 0b sbc r23, r19 + 7ec: 60 32 cpi r22, 0x20 ; 32 + 7ee: 71 05 cpc r23, r1 + 7f0: 0c f0 brlt .+2 ; 0x7f4 <_fpadd_parts+0xba> + 7f2: 61 c0 rjmp .+194 ; 0x8b6 <_fpadd_parts+0x17c> + 7f4: 12 16 cp r1, r18 + 7f6: 13 06 cpc r1, r19 + 7f8: 6c f5 brge .+90 ; 0x854 <_fpadd_parts+0x11a> + 7fa: 37 01 movw r6, r14 + 7fc: 48 01 movw r8, r16 + 7fe: 06 2e mov r0, r22 + 800: 04 c0 rjmp .+8 ; 0x80a <_fpadd_parts+0xd0> + 802: 96 94 lsr r9 + 804: 87 94 ror r8 + 806: 77 94 ror r7 + 808: 67 94 ror r6 + 80a: 0a 94 dec r0 + 80c: d2 f7 brpl .-12 ; 0x802 <_fpadd_parts+0xc8> + 80e: 21 e0 ldi r18, 0x01 ; 1 + 810: 30 e0 ldi r19, 0x00 ; 0 + 812: 40 e0 ldi r20, 0x00 ; 0 + 814: 50 e0 ldi r21, 0x00 ; 0 + 816: 04 c0 rjmp .+8 ; 0x820 <_fpadd_parts+0xe6> + 818: 22 0f add r18, r18 + 81a: 33 1f adc r19, r19 + 81c: 44 1f adc r20, r20 + 81e: 55 1f adc r21, r21 + 820: 6a 95 dec r22 + 822: d2 f7 brpl .-12 ; 0x818 <_fpadd_parts+0xde> + 824: 21 50 subi r18, 0x01 ; 1 + 826: 30 40 sbci r19, 0x00 ; 0 + 828: 40 40 sbci r20, 0x00 ; 0 + 82a: 50 40 sbci r21, 0x00 ; 0 + 82c: 2e 21 and r18, r14 + 82e: 3f 21 and r19, r15 + 830: 40 23 and r20, r16 + 832: 51 23 and r21, r17 + 834: 21 15 cp r18, r1 + 836: 31 05 cpc r19, r1 + 838: 41 05 cpc r20, r1 + 83a: 51 05 cpc r21, r1 + 83c: 21 f0 breq .+8 ; 0x846 <_fpadd_parts+0x10c> + 83e: 21 e0 ldi r18, 0x01 ; 1 + 840: 30 e0 ldi r19, 0x00 ; 0 + 842: 40 e0 ldi r20, 0x00 ; 0 + 844: 50 e0 ldi r21, 0x00 ; 0 + 846: 79 01 movw r14, r18 + 848: 8a 01 movw r16, r20 + 84a: e6 28 or r14, r6 + 84c: f7 28 or r15, r7 + 84e: 08 29 or r16, r8 + 850: 19 29 or r17, r9 + 852: 3c c0 rjmp .+120 ; 0x8cc <_fpadd_parts+0x192> + 854: 23 2b or r18, r19 + 856: d1 f1 breq .+116 ; 0x8cc <_fpadd_parts+0x192> + 858: 26 0e add r2, r22 + 85a: 37 1e adc r3, r23 + 85c: 35 01 movw r6, r10 + 85e: 46 01 movw r8, r12 + 860: 06 2e mov r0, r22 + 862: 04 c0 rjmp .+8 ; 0x86c <_fpadd_parts+0x132> + 864: 96 94 lsr r9 + 866: 87 94 ror r8 + 868: 77 94 ror r7 + 86a: 67 94 ror r6 + 86c: 0a 94 dec r0 + 86e: d2 f7 brpl .-12 ; 0x864 <_fpadd_parts+0x12a> + 870: 21 e0 ldi r18, 0x01 ; 1 + 872: 30 e0 ldi r19, 0x00 ; 0 + 874: 40 e0 ldi r20, 0x00 ; 0 + 876: 50 e0 ldi r21, 0x00 ; 0 + 878: 04 c0 rjmp .+8 ; 0x882 <_fpadd_parts+0x148> + 87a: 22 0f add r18, r18 + 87c: 33 1f adc r19, r19 + 87e: 44 1f adc r20, r20 + 880: 55 1f adc r21, r21 + 882: 6a 95 dec r22 + 884: d2 f7 brpl .-12 ; 0x87a <_fpadd_parts+0x140> + 886: 21 50 subi r18, 0x01 ; 1 + 888: 30 40 sbci r19, 0x00 ; 0 + 88a: 40 40 sbci r20, 0x00 ; 0 + 88c: 50 40 sbci r21, 0x00 ; 0 + 88e: 2a 21 and r18, r10 + 890: 3b 21 and r19, r11 + 892: 4c 21 and r20, r12 + 894: 5d 21 and r21, r13 + 896: 21 15 cp r18, r1 + 898: 31 05 cpc r19, r1 + 89a: 41 05 cpc r20, r1 + 89c: 51 05 cpc r21, r1 + 89e: 21 f0 breq .+8 ; 0x8a8 <_fpadd_parts+0x16e> + 8a0: 21 e0 ldi r18, 0x01 ; 1 + 8a2: 30 e0 ldi r19, 0x00 ; 0 + 8a4: 40 e0 ldi r20, 0x00 ; 0 + 8a6: 50 e0 ldi r21, 0x00 ; 0 + 8a8: 59 01 movw r10, r18 + 8aa: 6a 01 movw r12, r20 + 8ac: a6 28 or r10, r6 + 8ae: b7 28 or r11, r7 + 8b0: c8 28 or r12, r8 + 8b2: d9 28 or r13, r9 + 8b4: 0b c0 rjmp .+22 ; 0x8cc <_fpadd_parts+0x192> + 8b6: 82 15 cp r24, r2 + 8b8: 93 05 cpc r25, r3 + 8ba: 2c f0 brlt .+10 ; 0x8c6 <_fpadd_parts+0x18c> + 8bc: 1c 01 movw r2, r24 + 8be: aa 24 eor r10, r10 + 8c0: bb 24 eor r11, r11 + 8c2: 65 01 movw r12, r10 + 8c4: 03 c0 rjmp .+6 ; 0x8cc <_fpadd_parts+0x192> + 8c6: ee 24 eor r14, r14 + 8c8: ff 24 eor r15, r15 + 8ca: 87 01 movw r16, r14 + 8cc: 11 96 adiw r26, 0x01 ; 1 + 8ce: 9c 91 ld r25, X + 8d0: d2 01 movw r26, r4 + 8d2: 11 96 adiw r26, 0x01 ; 1 + 8d4: 8c 91 ld r24, X + 8d6: 98 17 cp r25, r24 + 8d8: 09 f4 brne .+2 ; 0x8dc <_fpadd_parts+0x1a2> + 8da: 45 c0 rjmp .+138 ; 0x966 <__stack+0x67> + 8dc: 99 23 and r25, r25 + 8de: 39 f0 breq .+14 ; 0x8ee <_fpadd_parts+0x1b4> + 8e0: a8 01 movw r20, r16 + 8e2: 97 01 movw r18, r14 + 8e4: 2a 19 sub r18, r10 + 8e6: 3b 09 sbc r19, r11 + 8e8: 4c 09 sbc r20, r12 + 8ea: 5d 09 sbc r21, r13 + 8ec: 06 c0 rjmp .+12 ; 0x8fa <_fpadd_parts+0x1c0> + 8ee: a6 01 movw r20, r12 + 8f0: 95 01 movw r18, r10 + 8f2: 2e 19 sub r18, r14 + 8f4: 3f 09 sbc r19, r15 + 8f6: 40 0b sbc r20, r16 + 8f8: 51 0b sbc r21, r17 + 8fa: 57 fd sbrc r21, 7 + 8fc: 08 c0 rjmp .+16 ; 0x90e <__stack+0xf> + 8fe: 11 82 std Z+1, r1 ; 0x01 + 900: 33 82 std Z+3, r3 ; 0x03 + 902: 22 82 std Z+2, r2 ; 0x02 + 904: 24 83 std Z+4, r18 ; 0x04 + 906: 35 83 std Z+5, r19 ; 0x05 + 908: 46 83 std Z+6, r20 ; 0x06 + 90a: 57 83 std Z+7, r21 ; 0x07 + 90c: 1d c0 rjmp .+58 ; 0x948 <__stack+0x49> + 90e: 81 e0 ldi r24, 0x01 ; 1 + 910: 81 83 std Z+1, r24 ; 0x01 + 912: 33 82 std Z+3, r3 ; 0x03 + 914: 22 82 std Z+2, r2 ; 0x02 + 916: 88 27 eor r24, r24 + 918: 99 27 eor r25, r25 + 91a: dc 01 movw r26, r24 + 91c: 82 1b sub r24, r18 + 91e: 93 0b sbc r25, r19 + 920: a4 0b sbc r26, r20 + 922: b5 0b sbc r27, r21 + 924: 84 83 std Z+4, r24 ; 0x04 + 926: 95 83 std Z+5, r25 ; 0x05 + 928: a6 83 std Z+6, r26 ; 0x06 + 92a: b7 83 std Z+7, r27 ; 0x07 + 92c: 0d c0 rjmp .+26 ; 0x948 <__stack+0x49> + 92e: 22 0f add r18, r18 + 930: 33 1f adc r19, r19 + 932: 44 1f adc r20, r20 + 934: 55 1f adc r21, r21 + 936: 24 83 std Z+4, r18 ; 0x04 + 938: 35 83 std Z+5, r19 ; 0x05 + 93a: 46 83 std Z+6, r20 ; 0x06 + 93c: 57 83 std Z+7, r21 ; 0x07 + 93e: 82 81 ldd r24, Z+2 ; 0x02 + 940: 93 81 ldd r25, Z+3 ; 0x03 + 942: 01 97 sbiw r24, 0x01 ; 1 + 944: 93 83 std Z+3, r25 ; 0x03 + 946: 82 83 std Z+2, r24 ; 0x02 + 948: 24 81 ldd r18, Z+4 ; 0x04 + 94a: 35 81 ldd r19, Z+5 ; 0x05 + 94c: 46 81 ldd r20, Z+6 ; 0x06 + 94e: 57 81 ldd r21, Z+7 ; 0x07 + 950: da 01 movw r26, r20 + 952: c9 01 movw r24, r18 + 954: 01 97 sbiw r24, 0x01 ; 1 + 956: a1 09 sbc r26, r1 + 958: b1 09 sbc r27, r1 + 95a: 8f 5f subi r24, 0xFF ; 255 + 95c: 9f 4f sbci r25, 0xFF ; 255 + 95e: af 4f sbci r26, 0xFF ; 255 + 960: bf 43 sbci r27, 0x3F ; 63 + 962: 28 f3 brcs .-54 ; 0x92e <__stack+0x2f> + 964: 0b c0 rjmp .+22 ; 0x97c <__stack+0x7d> + 966: 91 83 std Z+1, r25 ; 0x01 + 968: 33 82 std Z+3, r3 ; 0x03 + 96a: 22 82 std Z+2, r2 ; 0x02 + 96c: ea 0c add r14, r10 + 96e: fb 1c adc r15, r11 + 970: 0c 1d adc r16, r12 + 972: 1d 1d adc r17, r13 + 974: e4 82 std Z+4, r14 ; 0x04 + 976: f5 82 std Z+5, r15 ; 0x05 + 978: 06 83 std Z+6, r16 ; 0x06 + 97a: 17 83 std Z+7, r17 ; 0x07 + 97c: 83 e0 ldi r24, 0x03 ; 3 + 97e: 80 83 st Z, r24 + 980: 24 81 ldd r18, Z+4 ; 0x04 + 982: 35 81 ldd r19, Z+5 ; 0x05 + 984: 46 81 ldd r20, Z+6 ; 0x06 + 986: 57 81 ldd r21, Z+7 ; 0x07 + 988: 57 ff sbrs r21, 7 + 98a: 1a c0 rjmp .+52 ; 0x9c0 <__stack+0xc1> + 98c: c9 01 movw r24, r18 + 98e: aa 27 eor r26, r26 + 990: 97 fd sbrc r25, 7 + 992: a0 95 com r26 + 994: ba 2f mov r27, r26 + 996: 81 70 andi r24, 0x01 ; 1 + 998: 90 70 andi r25, 0x00 ; 0 + 99a: a0 70 andi r26, 0x00 ; 0 + 99c: b0 70 andi r27, 0x00 ; 0 + 99e: 56 95 lsr r21 + 9a0: 47 95 ror r20 + 9a2: 37 95 ror r19 + 9a4: 27 95 ror r18 + 9a6: 82 2b or r24, r18 + 9a8: 93 2b or r25, r19 + 9aa: a4 2b or r26, r20 + 9ac: b5 2b or r27, r21 + 9ae: 84 83 std Z+4, r24 ; 0x04 + 9b0: 95 83 std Z+5, r25 ; 0x05 + 9b2: a6 83 std Z+6, r26 ; 0x06 + 9b4: b7 83 std Z+7, r27 ; 0x07 + 9b6: 82 81 ldd r24, Z+2 ; 0x02 + 9b8: 93 81 ldd r25, Z+3 ; 0x03 + 9ba: 01 96 adiw r24, 0x01 ; 1 + 9bc: 93 83 std Z+3, r25 ; 0x03 + 9be: 82 83 std Z+2, r24 ; 0x02 + 9c0: df 01 movw r26, r30 + 9c2: 01 c0 rjmp .+2 ; 0x9c6 <__stack+0xc7> + 9c4: d2 01 movw r26, r4 + 9c6: cd 01 movw r24, r26 + 9c8: cd b7 in r28, 0x3d ; 61 + 9ca: de b7 in r29, 0x3e ; 62 + 9cc: e2 e1 ldi r30, 0x12 ; 18 + 9ce: 0c 94 62 08 jmp 0x10c4 ; 0x10c4 <__epilogue_restores__> + +000009d2 <__subsf3>: + 9d2: a0 e2 ldi r26, 0x20 ; 32 + 9d4: b0 e0 ldi r27, 0x00 ; 0 + 9d6: ef ee ldi r30, 0xEF ; 239 + 9d8: f4 e0 ldi r31, 0x04 ; 4 + 9da: 0c 94 52 08 jmp 0x10a4 ; 0x10a4 <__prologue_saves__+0x18> + 9de: 69 83 std Y+1, r22 ; 0x01 + 9e0: 7a 83 std Y+2, r23 ; 0x02 + 9e2: 8b 83 std Y+3, r24 ; 0x03 + 9e4: 9c 83 std Y+4, r25 ; 0x04 + 9e6: 2d 83 std Y+5, r18 ; 0x05 + 9e8: 3e 83 std Y+6, r19 ; 0x06 + 9ea: 4f 83 std Y+7, r20 ; 0x07 + 9ec: 58 87 std Y+8, r21 ; 0x08 + 9ee: e9 e0 ldi r30, 0x09 ; 9 + 9f0: ee 2e mov r14, r30 + 9f2: f1 2c mov r15, r1 + 9f4: ec 0e add r14, r28 + 9f6: fd 1e adc r15, r29 + 9f8: ce 01 movw r24, r28 + 9fa: 01 96 adiw r24, 0x01 ; 1 + 9fc: b7 01 movw r22, r14 + 9fe: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a02: 8e 01 movw r16, r28 + a04: 0f 5e subi r16, 0xEF ; 239 + a06: 1f 4f sbci r17, 0xFF ; 255 + a08: ce 01 movw r24, r28 + a0a: 05 96 adiw r24, 0x05 ; 5 + a0c: b8 01 movw r22, r16 + a0e: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a12: 8a 89 ldd r24, Y+18 ; 0x12 + a14: 91 e0 ldi r25, 0x01 ; 1 + a16: 89 27 eor r24, r25 + a18: 8a 8b std Y+18, r24 ; 0x12 + a1a: c7 01 movw r24, r14 + a1c: b8 01 movw r22, r16 + a1e: ae 01 movw r20, r28 + a20: 47 5e subi r20, 0xE7 ; 231 + a22: 5f 4f sbci r21, 0xFF ; 255 + a24: 0e 94 9d 03 call 0x73a ; 0x73a <_fpadd_parts> + a28: 0e 94 95 06 call 0xd2a ; 0xd2a <__pack_f> + a2c: a0 96 adiw r28, 0x20 ; 32 + a2e: e6 e0 ldi r30, 0x06 ; 6 + a30: 0c 94 6e 08 jmp 0x10dc ; 0x10dc <__epilogue_restores__+0x18> + +00000a34 <__addsf3>: + a34: a0 e2 ldi r26, 0x20 ; 32 + a36: b0 e0 ldi r27, 0x00 ; 0 + a38: e0 e2 ldi r30, 0x20 ; 32 + a3a: f5 e0 ldi r31, 0x05 ; 5 + a3c: 0c 94 52 08 jmp 0x10a4 ; 0x10a4 <__prologue_saves__+0x18> + a40: 69 83 std Y+1, r22 ; 0x01 + a42: 7a 83 std Y+2, r23 ; 0x02 + a44: 8b 83 std Y+3, r24 ; 0x03 + a46: 9c 83 std Y+4, r25 ; 0x04 + a48: 2d 83 std Y+5, r18 ; 0x05 + a4a: 3e 83 std Y+6, r19 ; 0x06 + a4c: 4f 83 std Y+7, r20 ; 0x07 + a4e: 58 87 std Y+8, r21 ; 0x08 + a50: f9 e0 ldi r31, 0x09 ; 9 + a52: ef 2e mov r14, r31 + a54: f1 2c mov r15, r1 + a56: ec 0e add r14, r28 + a58: fd 1e adc r15, r29 + a5a: ce 01 movw r24, r28 + a5c: 01 96 adiw r24, 0x01 ; 1 + a5e: b7 01 movw r22, r14 + a60: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a64: 8e 01 movw r16, r28 + a66: 0f 5e subi r16, 0xEF ; 239 + a68: 1f 4f sbci r17, 0xFF ; 255 + a6a: ce 01 movw r24, r28 + a6c: 05 96 adiw r24, 0x05 ; 5 + a6e: b8 01 movw r22, r16 + a70: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a74: c7 01 movw r24, r14 + a76: b8 01 movw r22, r16 + a78: ae 01 movw r20, r28 + a7a: 47 5e subi r20, 0xE7 ; 231 + a7c: 5f 4f sbci r21, 0xFF ; 255 + a7e: 0e 94 9d 03 call 0x73a ; 0x73a <_fpadd_parts> + a82: 0e 94 95 06 call 0xd2a ; 0xd2a <__pack_f> + a86: a0 96 adiw r28, 0x20 ; 32 + a88: e6 e0 ldi r30, 0x06 ; 6 + a8a: 0c 94 6e 08 jmp 0x10dc ; 0x10dc <__epilogue_restores__+0x18> + +00000a8e <__mulsf3>: + a8e: a0 e2 ldi r26, 0x20 ; 32 + a90: b0 e0 ldi r27, 0x00 ; 0 + a92: ed e4 ldi r30, 0x4D ; 77 + a94: f5 e0 ldi r31, 0x05 ; 5 + a96: 0c 94 46 08 jmp 0x108c ; 0x108c <__prologue_saves__> + a9a: 69 83 std Y+1, r22 ; 0x01 + a9c: 7a 83 std Y+2, r23 ; 0x02 + a9e: 8b 83 std Y+3, r24 ; 0x03 + aa0: 9c 83 std Y+4, r25 ; 0x04 + aa2: 2d 83 std Y+5, r18 ; 0x05 + aa4: 3e 83 std Y+6, r19 ; 0x06 + aa6: 4f 83 std Y+7, r20 ; 0x07 + aa8: 58 87 std Y+8, r21 ; 0x08 + aaa: ce 01 movw r24, r28 + aac: 01 96 adiw r24, 0x01 ; 1 + aae: be 01 movw r22, r28 + ab0: 67 5f subi r22, 0xF7 ; 247 + ab2: 7f 4f sbci r23, 0xFF ; 255 + ab4: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + ab8: ce 01 movw r24, r28 + aba: 05 96 adiw r24, 0x05 ; 5 + abc: be 01 movw r22, r28 + abe: 6f 5e subi r22, 0xEF ; 239 + ac0: 7f 4f sbci r23, 0xFF ; 255 + ac2: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + ac6: 99 85 ldd r25, Y+9 ; 0x09 + ac8: 92 30 cpi r25, 0x02 ; 2 + aca: 88 f0 brcs .+34 ; 0xaee <__mulsf3+0x60> + acc: 89 89 ldd r24, Y+17 ; 0x11 + ace: 82 30 cpi r24, 0x02 ; 2 + ad0: c8 f0 brcs .+50 ; 0xb04 <__mulsf3+0x76> + ad2: 94 30 cpi r25, 0x04 ; 4 + ad4: 19 f4 brne .+6 ; 0xadc <__mulsf3+0x4e> + ad6: 82 30 cpi r24, 0x02 ; 2 + ad8: 51 f4 brne .+20 ; 0xaee <__mulsf3+0x60> + ada: 04 c0 rjmp .+8 ; 0xae4 <__mulsf3+0x56> + adc: 84 30 cpi r24, 0x04 ; 4 + ade: 29 f4 brne .+10 ; 0xaea <__mulsf3+0x5c> + ae0: 92 30 cpi r25, 0x02 ; 2 + ae2: 81 f4 brne .+32 ; 0xb04 <__mulsf3+0x76> + ae4: 89 e1 ldi r24, 0x19 ; 25 + ae6: 91 e0 ldi r25, 0x01 ; 1 + ae8: c6 c0 rjmp .+396 ; 0xc76 <__mulsf3+0x1e8> + aea: 92 30 cpi r25, 0x02 ; 2 + aec: 49 f4 brne .+18 ; 0xb00 <__mulsf3+0x72> + aee: 20 e0 ldi r18, 0x00 ; 0 + af0: 9a 85 ldd r25, Y+10 ; 0x0a + af2: 8a 89 ldd r24, Y+18 ; 0x12 + af4: 98 13 cpse r25, r24 + af6: 21 e0 ldi r18, 0x01 ; 1 + af8: 2a 87 std Y+10, r18 ; 0x0a + afa: ce 01 movw r24, r28 + afc: 09 96 adiw r24, 0x09 ; 9 + afe: bb c0 rjmp .+374 ; 0xc76 <__mulsf3+0x1e8> + b00: 82 30 cpi r24, 0x02 ; 2 + b02: 49 f4 brne .+18 ; 0xb16 <__mulsf3+0x88> + b04: 20 e0 ldi r18, 0x00 ; 0 + b06: 9a 85 ldd r25, Y+10 ; 0x0a + b08: 8a 89 ldd r24, Y+18 ; 0x12 + b0a: 98 13 cpse r25, r24 + b0c: 21 e0 ldi r18, 0x01 ; 1 + b0e: 2a 8b std Y+18, r18 ; 0x12 + b10: ce 01 movw r24, r28 + b12: 41 96 adiw r24, 0x11 ; 17 + b14: b0 c0 rjmp .+352 ; 0xc76 <__mulsf3+0x1e8> + b16: 2d 84 ldd r2, Y+13 ; 0x0d + b18: 3e 84 ldd r3, Y+14 ; 0x0e + b1a: 4f 84 ldd r4, Y+15 ; 0x0f + b1c: 58 88 ldd r5, Y+16 ; 0x10 + b1e: 6d 88 ldd r6, Y+21 ; 0x15 + b20: 7e 88 ldd r7, Y+22 ; 0x16 + b22: 8f 88 ldd r8, Y+23 ; 0x17 + b24: 98 8c ldd r9, Y+24 ; 0x18 + b26: ee 24 eor r14, r14 + b28: ff 24 eor r15, r15 + b2a: 87 01 movw r16, r14 + b2c: aa 24 eor r10, r10 + b2e: bb 24 eor r11, r11 + b30: 65 01 movw r12, r10 + b32: 40 e0 ldi r20, 0x00 ; 0 + b34: 50 e0 ldi r21, 0x00 ; 0 + b36: 60 e0 ldi r22, 0x00 ; 0 + b38: 70 e0 ldi r23, 0x00 ; 0 + b3a: e0 e0 ldi r30, 0x00 ; 0 + b3c: f0 e0 ldi r31, 0x00 ; 0 + b3e: c1 01 movw r24, r2 + b40: 81 70 andi r24, 0x01 ; 1 + b42: 90 70 andi r25, 0x00 ; 0 + b44: 89 2b or r24, r25 + b46: e9 f0 breq .+58 ; 0xb82 <__mulsf3+0xf4> + b48: e6 0c add r14, r6 + b4a: f7 1c adc r15, r7 + b4c: 08 1d adc r16, r8 + b4e: 19 1d adc r17, r9 + b50: 9a 01 movw r18, r20 + b52: ab 01 movw r20, r22 + b54: 2a 0d add r18, r10 + b56: 3b 1d adc r19, r11 + b58: 4c 1d adc r20, r12 + b5a: 5d 1d adc r21, r13 + b5c: 80 e0 ldi r24, 0x00 ; 0 + b5e: 90 e0 ldi r25, 0x00 ; 0 + b60: a0 e0 ldi r26, 0x00 ; 0 + b62: b0 e0 ldi r27, 0x00 ; 0 + b64: e6 14 cp r14, r6 + b66: f7 04 cpc r15, r7 + b68: 08 05 cpc r16, r8 + b6a: 19 05 cpc r17, r9 + b6c: 20 f4 brcc .+8 ; 0xb76 <__mulsf3+0xe8> + b6e: 81 e0 ldi r24, 0x01 ; 1 + b70: 90 e0 ldi r25, 0x00 ; 0 + b72: a0 e0 ldi r26, 0x00 ; 0 + b74: b0 e0 ldi r27, 0x00 ; 0 + b76: ba 01 movw r22, r20 + b78: a9 01 movw r20, r18 + b7a: 48 0f add r20, r24 + b7c: 59 1f adc r21, r25 + b7e: 6a 1f adc r22, r26 + b80: 7b 1f adc r23, r27 + b82: aa 0c add r10, r10 + b84: bb 1c adc r11, r11 + b86: cc 1c adc r12, r12 + b88: dd 1c adc r13, r13 + b8a: 97 fe sbrs r9, 7 + b8c: 08 c0 rjmp .+16 ; 0xb9e <__mulsf3+0x110> + b8e: 81 e0 ldi r24, 0x01 ; 1 + b90: 90 e0 ldi r25, 0x00 ; 0 + b92: a0 e0 ldi r26, 0x00 ; 0 + b94: b0 e0 ldi r27, 0x00 ; 0 + b96: a8 2a or r10, r24 + b98: b9 2a or r11, r25 + b9a: ca 2a or r12, r26 + b9c: db 2a or r13, r27 + b9e: 31 96 adiw r30, 0x01 ; 1 + ba0: e0 32 cpi r30, 0x20 ; 32 + ba2: f1 05 cpc r31, r1 + ba4: 49 f0 breq .+18 ; 0xbb8 <__mulsf3+0x12a> + ba6: 66 0c add r6, r6 + ba8: 77 1c adc r7, r7 + baa: 88 1c adc r8, r8 + bac: 99 1c adc r9, r9 + bae: 56 94 lsr r5 + bb0: 47 94 ror r4 + bb2: 37 94 ror r3 + bb4: 27 94 ror r2 + bb6: c3 cf rjmp .-122 ; 0xb3e <__mulsf3+0xb0> + bb8: fa 85 ldd r31, Y+10 ; 0x0a + bba: ea 89 ldd r30, Y+18 ; 0x12 + bbc: 2b 89 ldd r18, Y+19 ; 0x13 + bbe: 3c 89 ldd r19, Y+20 ; 0x14 + bc0: 8b 85 ldd r24, Y+11 ; 0x0b + bc2: 9c 85 ldd r25, Y+12 ; 0x0c + bc4: 28 0f add r18, r24 + bc6: 39 1f adc r19, r25 + bc8: 2e 5f subi r18, 0xFE ; 254 + bca: 3f 4f sbci r19, 0xFF ; 255 + bcc: 17 c0 rjmp .+46 ; 0xbfc <__mulsf3+0x16e> + bce: ca 01 movw r24, r20 + bd0: 81 70 andi r24, 0x01 ; 1 + bd2: 90 70 andi r25, 0x00 ; 0 + bd4: 89 2b or r24, r25 + bd6: 61 f0 breq .+24 ; 0xbf0 <__mulsf3+0x162> + bd8: 16 95 lsr r17 + bda: 07 95 ror r16 + bdc: f7 94 ror r15 + bde: e7 94 ror r14 + be0: 80 e0 ldi r24, 0x00 ; 0 + be2: 90 e0 ldi r25, 0x00 ; 0 + be4: a0 e0 ldi r26, 0x00 ; 0 + be6: b0 e8 ldi r27, 0x80 ; 128 + be8: e8 2a or r14, r24 + bea: f9 2a or r15, r25 + bec: 0a 2b or r16, r26 + bee: 1b 2b or r17, r27 + bf0: 76 95 lsr r23 + bf2: 67 95 ror r22 + bf4: 57 95 ror r21 + bf6: 47 95 ror r20 + bf8: 2f 5f subi r18, 0xFF ; 255 + bfa: 3f 4f sbci r19, 0xFF ; 255 + bfc: 77 fd sbrc r23, 7 + bfe: e7 cf rjmp .-50 ; 0xbce <__mulsf3+0x140> + c00: 0c c0 rjmp .+24 ; 0xc1a <__mulsf3+0x18c> + c02: 44 0f add r20, r20 + c04: 55 1f adc r21, r21 + c06: 66 1f adc r22, r22 + c08: 77 1f adc r23, r23 + c0a: 17 fd sbrc r17, 7 + c0c: 41 60 ori r20, 0x01 ; 1 + c0e: ee 0c add r14, r14 + c10: ff 1c adc r15, r15 + c12: 00 1f adc r16, r16 + c14: 11 1f adc r17, r17 + c16: 21 50 subi r18, 0x01 ; 1 + c18: 30 40 sbci r19, 0x00 ; 0 + c1a: 40 30 cpi r20, 0x00 ; 0 + c1c: 90 e0 ldi r25, 0x00 ; 0 + c1e: 59 07 cpc r21, r25 + c20: 90 e0 ldi r25, 0x00 ; 0 + c22: 69 07 cpc r22, r25 + c24: 90 e4 ldi r25, 0x40 ; 64 + c26: 79 07 cpc r23, r25 + c28: 60 f3 brcs .-40 ; 0xc02 <__mulsf3+0x174> + c2a: 2b 8f std Y+27, r18 ; 0x1b + c2c: 3c 8f std Y+28, r19 ; 0x1c + c2e: db 01 movw r26, r22 + c30: ca 01 movw r24, r20 + c32: 8f 77 andi r24, 0x7F ; 127 + c34: 90 70 andi r25, 0x00 ; 0 + c36: a0 70 andi r26, 0x00 ; 0 + c38: b0 70 andi r27, 0x00 ; 0 + c3a: 80 34 cpi r24, 0x40 ; 64 + c3c: 91 05 cpc r25, r1 + c3e: a1 05 cpc r26, r1 + c40: b1 05 cpc r27, r1 + c42: 61 f4 brne .+24 ; 0xc5c <__mulsf3+0x1ce> + c44: 47 fd sbrc r20, 7 + c46: 0a c0 rjmp .+20 ; 0xc5c <__mulsf3+0x1ce> + c48: e1 14 cp r14, r1 + c4a: f1 04 cpc r15, r1 + c4c: 01 05 cpc r16, r1 + c4e: 11 05 cpc r17, r1 + c50: 29 f0 breq .+10 ; 0xc5c <__mulsf3+0x1ce> + c52: 40 5c subi r20, 0xC0 ; 192 + c54: 5f 4f sbci r21, 0xFF ; 255 + c56: 6f 4f sbci r22, 0xFF ; 255 + c58: 7f 4f sbci r23, 0xFF ; 255 + c5a: 40 78 andi r20, 0x80 ; 128 + c5c: 1a 8e std Y+26, r1 ; 0x1a + c5e: fe 17 cp r31, r30 + c60: 11 f0 breq .+4 ; 0xc66 <__mulsf3+0x1d8> + c62: 81 e0 ldi r24, 0x01 ; 1 + c64: 8a 8f std Y+26, r24 ; 0x1a + c66: 4d 8f std Y+29, r20 ; 0x1d + c68: 5e 8f std Y+30, r21 ; 0x1e + c6a: 6f 8f std Y+31, r22 ; 0x1f + c6c: 78 a3 std Y+32, r23 ; 0x20 + c6e: 83 e0 ldi r24, 0x03 ; 3 + c70: 89 8f std Y+25, r24 ; 0x19 + c72: ce 01 movw r24, r28 + c74: 49 96 adiw r24, 0x19 ; 25 + c76: 0e 94 95 06 call 0xd2a ; 0xd2a <__pack_f> + c7a: a0 96 adiw r28, 0x20 ; 32 + c7c: e2 e1 ldi r30, 0x12 ; 18 + c7e: 0c 94 62 08 jmp 0x10c4 ; 0x10c4 <__epilogue_restores__> + +00000c82 <__fixsfsi>: + c82: ac e0 ldi r26, 0x0C ; 12 + c84: b0 e0 ldi r27, 0x00 ; 0 + c86: e7 e4 ldi r30, 0x47 ; 71 + c88: f6 e0 ldi r31, 0x06 ; 6 + c8a: 0c 94 56 08 jmp 0x10ac ; 0x10ac <__prologue_saves__+0x20> + c8e: 69 83 std Y+1, r22 ; 0x01 + c90: 7a 83 std Y+2, r23 ; 0x02 + c92: 8b 83 std Y+3, r24 ; 0x03 + c94: 9c 83 std Y+4, r25 ; 0x04 + c96: ce 01 movw r24, r28 + c98: 01 96 adiw r24, 0x01 ; 1 + c9a: be 01 movw r22, r28 + c9c: 6b 5f subi r22, 0xFB ; 251 + c9e: 7f 4f sbci r23, 0xFF ; 255 + ca0: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + ca4: 8d 81 ldd r24, Y+5 ; 0x05 + ca6: 82 30 cpi r24, 0x02 ; 2 + ca8: 61 f1 breq .+88 ; 0xd02 <__fixsfsi+0x80> + caa: 82 30 cpi r24, 0x02 ; 2 + cac: 50 f1 brcs .+84 ; 0xd02 <__fixsfsi+0x80> + cae: 84 30 cpi r24, 0x04 ; 4 + cb0: 21 f4 brne .+8 ; 0xcba <__fixsfsi+0x38> + cb2: 8e 81 ldd r24, Y+6 ; 0x06 + cb4: 88 23 and r24, r24 + cb6: 51 f1 breq .+84 ; 0xd0c <__fixsfsi+0x8a> + cb8: 2e c0 rjmp .+92 ; 0xd16 <__fixsfsi+0x94> + cba: 2f 81 ldd r18, Y+7 ; 0x07 + cbc: 38 85 ldd r19, Y+8 ; 0x08 + cbe: 37 fd sbrc r19, 7 + cc0: 20 c0 rjmp .+64 ; 0xd02 <__fixsfsi+0x80> + cc2: 6e 81 ldd r22, Y+6 ; 0x06 + cc4: 2f 31 cpi r18, 0x1F ; 31 + cc6: 31 05 cpc r19, r1 + cc8: 1c f0 brlt .+6 ; 0xcd0 <__fixsfsi+0x4e> + cca: 66 23 and r22, r22 + ccc: f9 f0 breq .+62 ; 0xd0c <__fixsfsi+0x8a> + cce: 23 c0 rjmp .+70 ; 0xd16 <__fixsfsi+0x94> + cd0: 8e e1 ldi r24, 0x1E ; 30 + cd2: 90 e0 ldi r25, 0x00 ; 0 + cd4: 82 1b sub r24, r18 + cd6: 93 0b sbc r25, r19 + cd8: 29 85 ldd r18, Y+9 ; 0x09 + cda: 3a 85 ldd r19, Y+10 ; 0x0a + cdc: 4b 85 ldd r20, Y+11 ; 0x0b + cde: 5c 85 ldd r21, Y+12 ; 0x0c + ce0: 04 c0 rjmp .+8 ; 0xcea <__fixsfsi+0x68> + ce2: 56 95 lsr r21 + ce4: 47 95 ror r20 + ce6: 37 95 ror r19 + ce8: 27 95 ror r18 + cea: 8a 95 dec r24 + cec: d2 f7 brpl .-12 ; 0xce2 <__fixsfsi+0x60> + cee: 66 23 and r22, r22 + cf0: b1 f0 breq .+44 ; 0xd1e <__fixsfsi+0x9c> + cf2: 50 95 com r21 + cf4: 40 95 com r20 + cf6: 30 95 com r19 + cf8: 21 95 neg r18 + cfa: 3f 4f sbci r19, 0xFF ; 255 + cfc: 4f 4f sbci r20, 0xFF ; 255 + cfe: 5f 4f sbci r21, 0xFF ; 255 + d00: 0e c0 rjmp .+28 ; 0xd1e <__fixsfsi+0x9c> + d02: 20 e0 ldi r18, 0x00 ; 0 + d04: 30 e0 ldi r19, 0x00 ; 0 + d06: 40 e0 ldi r20, 0x00 ; 0 + d08: 50 e0 ldi r21, 0x00 ; 0 + d0a: 09 c0 rjmp .+18 ; 0xd1e <__fixsfsi+0x9c> + d0c: 2f ef ldi r18, 0xFF ; 255 + d0e: 3f ef ldi r19, 0xFF ; 255 + d10: 4f ef ldi r20, 0xFF ; 255 + d12: 5f e7 ldi r21, 0x7F ; 127 + d14: 04 c0 rjmp .+8 ; 0xd1e <__fixsfsi+0x9c> + d16: 20 e0 ldi r18, 0x00 ; 0 + d18: 30 e0 ldi r19, 0x00 ; 0 + d1a: 40 e0 ldi r20, 0x00 ; 0 + d1c: 50 e8 ldi r21, 0x80 ; 128 + d1e: b9 01 movw r22, r18 + d20: ca 01 movw r24, r20 + d22: 2c 96 adiw r28, 0x0c ; 12 + d24: e2 e0 ldi r30, 0x02 ; 2 + d26: 0c 94 72 08 jmp 0x10e4 ; 0x10e4 <__epilogue_restores__+0x20> + +00000d2a <__pack_f>: + d2a: df 92 push r13 + d2c: ef 92 push r14 + d2e: ff 92 push r15 + d30: 0f 93 push r16 + d32: 1f 93 push r17 + d34: fc 01 movw r30, r24 + d36: e4 80 ldd r14, Z+4 ; 0x04 + d38: f5 80 ldd r15, Z+5 ; 0x05 + d3a: 06 81 ldd r16, Z+6 ; 0x06 + d3c: 17 81 ldd r17, Z+7 ; 0x07 + d3e: d1 80 ldd r13, Z+1 ; 0x01 + d40: 80 81 ld r24, Z + d42: 82 30 cpi r24, 0x02 ; 2 + d44: 48 f4 brcc .+18 ; 0xd58 <__pack_f+0x2e> + d46: 80 e0 ldi r24, 0x00 ; 0 + d48: 90 e0 ldi r25, 0x00 ; 0 + d4a: a0 e1 ldi r26, 0x10 ; 16 + d4c: b0 e0 ldi r27, 0x00 ; 0 + d4e: e8 2a or r14, r24 + d50: f9 2a or r15, r25 + d52: 0a 2b or r16, r26 + d54: 1b 2b or r17, r27 + d56: a5 c0 rjmp .+330 ; 0xea2 <__pack_f+0x178> + d58: 84 30 cpi r24, 0x04 ; 4 + d5a: 09 f4 brne .+2 ; 0xd5e <__pack_f+0x34> + d5c: 9f c0 rjmp .+318 ; 0xe9c <__pack_f+0x172> + d5e: 82 30 cpi r24, 0x02 ; 2 + d60: 21 f4 brne .+8 ; 0xd6a <__pack_f+0x40> + d62: ee 24 eor r14, r14 + d64: ff 24 eor r15, r15 + d66: 87 01 movw r16, r14 + d68: 05 c0 rjmp .+10 ; 0xd74 <__pack_f+0x4a> + d6a: e1 14 cp r14, r1 + d6c: f1 04 cpc r15, r1 + d6e: 01 05 cpc r16, r1 + d70: 11 05 cpc r17, r1 + d72: 19 f4 brne .+6 ; 0xd7a <__pack_f+0x50> + d74: e0 e0 ldi r30, 0x00 ; 0 + d76: f0 e0 ldi r31, 0x00 ; 0 + d78: 96 c0 rjmp .+300 ; 0xea6 <__pack_f+0x17c> + d7a: 62 81 ldd r22, Z+2 ; 0x02 + d7c: 73 81 ldd r23, Z+3 ; 0x03 + d7e: 9f ef ldi r25, 0xFF ; 255 + d80: 62 38 cpi r22, 0x82 ; 130 + d82: 79 07 cpc r23, r25 + d84: 0c f0 brlt .+2 ; 0xd88 <__pack_f+0x5e> + d86: 5b c0 rjmp .+182 ; 0xe3e <__pack_f+0x114> + d88: 22 e8 ldi r18, 0x82 ; 130 + d8a: 3f ef ldi r19, 0xFF ; 255 + d8c: 26 1b sub r18, r22 + d8e: 37 0b sbc r19, r23 + d90: 2a 31 cpi r18, 0x1A ; 26 + d92: 31 05 cpc r19, r1 + d94: 2c f0 brlt .+10 ; 0xda0 <__pack_f+0x76> + d96: 20 e0 ldi r18, 0x00 ; 0 + d98: 30 e0 ldi r19, 0x00 ; 0 + d9a: 40 e0 ldi r20, 0x00 ; 0 + d9c: 50 e0 ldi r21, 0x00 ; 0 + d9e: 2a c0 rjmp .+84 ; 0xdf4 <__pack_f+0xca> + da0: b8 01 movw r22, r16 + da2: a7 01 movw r20, r14 + da4: 02 2e mov r0, r18 + da6: 04 c0 rjmp .+8 ; 0xdb0 <__pack_f+0x86> + da8: 76 95 lsr r23 + daa: 67 95 ror r22 + dac: 57 95 ror r21 + dae: 47 95 ror r20 + db0: 0a 94 dec r0 + db2: d2 f7 brpl .-12 ; 0xda8 <__pack_f+0x7e> + db4: 81 e0 ldi r24, 0x01 ; 1 + db6: 90 e0 ldi r25, 0x00 ; 0 + db8: a0 e0 ldi r26, 0x00 ; 0 + dba: b0 e0 ldi r27, 0x00 ; 0 + dbc: 04 c0 rjmp .+8 ; 0xdc6 <__pack_f+0x9c> + dbe: 88 0f add r24, r24 + dc0: 99 1f adc r25, r25 + dc2: aa 1f adc r26, r26 + dc4: bb 1f adc r27, r27 + dc6: 2a 95 dec r18 + dc8: d2 f7 brpl .-12 ; 0xdbe <__pack_f+0x94> + dca: 01 97 sbiw r24, 0x01 ; 1 + dcc: a1 09 sbc r26, r1 + dce: b1 09 sbc r27, r1 + dd0: 8e 21 and r24, r14 + dd2: 9f 21 and r25, r15 + dd4: a0 23 and r26, r16 + dd6: b1 23 and r27, r17 + dd8: 00 97 sbiw r24, 0x00 ; 0 + dda: a1 05 cpc r26, r1 + ddc: b1 05 cpc r27, r1 + dde: 21 f0 breq .+8 ; 0xde8 <__pack_f+0xbe> + de0: 81 e0 ldi r24, 0x01 ; 1 + de2: 90 e0 ldi r25, 0x00 ; 0 + de4: a0 e0 ldi r26, 0x00 ; 0 + de6: b0 e0 ldi r27, 0x00 ; 0 + de8: 9a 01 movw r18, r20 + dea: ab 01 movw r20, r22 + dec: 28 2b or r18, r24 + dee: 39 2b or r19, r25 + df0: 4a 2b or r20, r26 + df2: 5b 2b or r21, r27 + df4: da 01 movw r26, r20 + df6: c9 01 movw r24, r18 + df8: 8f 77 andi r24, 0x7F ; 127 + dfa: 90 70 andi r25, 0x00 ; 0 + dfc: a0 70 andi r26, 0x00 ; 0 + dfe: b0 70 andi r27, 0x00 ; 0 + e00: 80 34 cpi r24, 0x40 ; 64 + e02: 91 05 cpc r25, r1 + e04: a1 05 cpc r26, r1 + e06: b1 05 cpc r27, r1 + e08: 39 f4 brne .+14 ; 0xe18 <__pack_f+0xee> + e0a: 27 ff sbrs r18, 7 + e0c: 09 c0 rjmp .+18 ; 0xe20 <__pack_f+0xf6> + e0e: 20 5c subi r18, 0xC0 ; 192 + e10: 3f 4f sbci r19, 0xFF ; 255 + e12: 4f 4f sbci r20, 0xFF ; 255 + e14: 5f 4f sbci r21, 0xFF ; 255 + e16: 04 c0 rjmp .+8 ; 0xe20 <__pack_f+0xf6> + e18: 21 5c subi r18, 0xC1 ; 193 + e1a: 3f 4f sbci r19, 0xFF ; 255 + e1c: 4f 4f sbci r20, 0xFF ; 255 + e1e: 5f 4f sbci r21, 0xFF ; 255 + e20: e0 e0 ldi r30, 0x00 ; 0 + e22: f0 e0 ldi r31, 0x00 ; 0 + e24: 20 30 cpi r18, 0x00 ; 0 + e26: a0 e0 ldi r26, 0x00 ; 0 + e28: 3a 07 cpc r19, r26 + e2a: a0 e0 ldi r26, 0x00 ; 0 + e2c: 4a 07 cpc r20, r26 + e2e: a0 e4 ldi r26, 0x40 ; 64 + e30: 5a 07 cpc r21, r26 + e32: 10 f0 brcs .+4 ; 0xe38 <__pack_f+0x10e> + e34: e1 e0 ldi r30, 0x01 ; 1 + e36: f0 e0 ldi r31, 0x00 ; 0 + e38: 79 01 movw r14, r18 + e3a: 8a 01 movw r16, r20 + e3c: 27 c0 rjmp .+78 ; 0xe8c <__pack_f+0x162> + e3e: 60 38 cpi r22, 0x80 ; 128 + e40: 71 05 cpc r23, r1 + e42: 64 f5 brge .+88 ; 0xe9c <__pack_f+0x172> + e44: fb 01 movw r30, r22 + e46: e1 58 subi r30, 0x81 ; 129 + e48: ff 4f sbci r31, 0xFF ; 255 + e4a: d8 01 movw r26, r16 + e4c: c7 01 movw r24, r14 + e4e: 8f 77 andi r24, 0x7F ; 127 + e50: 90 70 andi r25, 0x00 ; 0 + e52: a0 70 andi r26, 0x00 ; 0 + e54: b0 70 andi r27, 0x00 ; 0 + e56: 80 34 cpi r24, 0x40 ; 64 + e58: 91 05 cpc r25, r1 + e5a: a1 05 cpc r26, r1 + e5c: b1 05 cpc r27, r1 + e5e: 39 f4 brne .+14 ; 0xe6e <__pack_f+0x144> + e60: e7 fe sbrs r14, 7 + e62: 0d c0 rjmp .+26 ; 0xe7e <__pack_f+0x154> + e64: 80 e4 ldi r24, 0x40 ; 64 + e66: 90 e0 ldi r25, 0x00 ; 0 + e68: a0 e0 ldi r26, 0x00 ; 0 + e6a: b0 e0 ldi r27, 0x00 ; 0 + e6c: 04 c0 rjmp .+8 ; 0xe76 <__pack_f+0x14c> + e6e: 8f e3 ldi r24, 0x3F ; 63 + e70: 90 e0 ldi r25, 0x00 ; 0 + e72: a0 e0 ldi r26, 0x00 ; 0 + e74: b0 e0 ldi r27, 0x00 ; 0 + e76: e8 0e add r14, r24 + e78: f9 1e adc r15, r25 + e7a: 0a 1f adc r16, r26 + e7c: 1b 1f adc r17, r27 + e7e: 17 ff sbrs r17, 7 + e80: 05 c0 rjmp .+10 ; 0xe8c <__pack_f+0x162> + e82: 16 95 lsr r17 + e84: 07 95 ror r16 + e86: f7 94 ror r15 + e88: e7 94 ror r14 + e8a: 31 96 adiw r30, 0x01 ; 1 + e8c: 87 e0 ldi r24, 0x07 ; 7 + e8e: 16 95 lsr r17 + e90: 07 95 ror r16 + e92: f7 94 ror r15 + e94: e7 94 ror r14 + e96: 8a 95 dec r24 + e98: d1 f7 brne .-12 ; 0xe8e <__pack_f+0x164> + e9a: 05 c0 rjmp .+10 ; 0xea6 <__pack_f+0x17c> + e9c: ee 24 eor r14, r14 + e9e: ff 24 eor r15, r15 + ea0: 87 01 movw r16, r14 + ea2: ef ef ldi r30, 0xFF ; 255 + ea4: f0 e0 ldi r31, 0x00 ; 0 + ea6: 6e 2f mov r22, r30 + ea8: 67 95 ror r22 + eaa: 66 27 eor r22, r22 + eac: 67 95 ror r22 + eae: 90 2f mov r25, r16 + eb0: 9f 77 andi r25, 0x7F ; 127 + eb2: d7 94 ror r13 + eb4: dd 24 eor r13, r13 + eb6: d7 94 ror r13 + eb8: 8e 2f mov r24, r30 + eba: 86 95 lsr r24 + ebc: 49 2f mov r20, r25 + ebe: 46 2b or r20, r22 + ec0: 58 2f mov r21, r24 + ec2: 5d 29 or r21, r13 + ec4: b7 01 movw r22, r14 + ec6: ca 01 movw r24, r20 + ec8: 1f 91 pop r17 + eca: 0f 91 pop r16 + ecc: ff 90 pop r15 + ece: ef 90 pop r14 + ed0: df 90 pop r13 + ed2: 08 95 ret + +00000ed4 <__unpack_f>: + ed4: fc 01 movw r30, r24 + ed6: db 01 movw r26, r22 + ed8: 40 81 ld r20, Z + eda: 51 81 ldd r21, Z+1 ; 0x01 + edc: 22 81 ldd r18, Z+2 ; 0x02 + ede: 62 2f mov r22, r18 + ee0: 6f 77 andi r22, 0x7F ; 127 + ee2: 70 e0 ldi r23, 0x00 ; 0 + ee4: 22 1f adc r18, r18 + ee6: 22 27 eor r18, r18 + ee8: 22 1f adc r18, r18 + eea: 93 81 ldd r25, Z+3 ; 0x03 + eec: 89 2f mov r24, r25 + eee: 88 0f add r24, r24 + ef0: 82 2b or r24, r18 + ef2: 28 2f mov r18, r24 + ef4: 30 e0 ldi r19, 0x00 ; 0 + ef6: 99 1f adc r25, r25 + ef8: 99 27 eor r25, r25 + efa: 99 1f adc r25, r25 + efc: 11 96 adiw r26, 0x01 ; 1 + efe: 9c 93 st X, r25 + f00: 11 97 sbiw r26, 0x01 ; 1 + f02: 21 15 cp r18, r1 + f04: 31 05 cpc r19, r1 + f06: a9 f5 brne .+106 ; 0xf72 <__unpack_f+0x9e> + f08: 41 15 cp r20, r1 + f0a: 51 05 cpc r21, r1 + f0c: 61 05 cpc r22, r1 + f0e: 71 05 cpc r23, r1 + f10: 11 f4 brne .+4 ; 0xf16 <__unpack_f+0x42> + f12: 82 e0 ldi r24, 0x02 ; 2 + f14: 37 c0 rjmp .+110 ; 0xf84 <__unpack_f+0xb0> + f16: 82 e8 ldi r24, 0x82 ; 130 + f18: 9f ef ldi r25, 0xFF ; 255 + f1a: 13 96 adiw r26, 0x03 ; 3 + f1c: 9c 93 st X, r25 + f1e: 8e 93 st -X, r24 + f20: 12 97 sbiw r26, 0x02 ; 2 + f22: 9a 01 movw r18, r20 + f24: ab 01 movw r20, r22 + f26: 67 e0 ldi r22, 0x07 ; 7 + f28: 22 0f add r18, r18 + f2a: 33 1f adc r19, r19 + f2c: 44 1f adc r20, r20 + f2e: 55 1f adc r21, r21 + f30: 6a 95 dec r22 + f32: d1 f7 brne .-12 ; 0xf28 <__unpack_f+0x54> + f34: 83 e0 ldi r24, 0x03 ; 3 + f36: 8c 93 st X, r24 + f38: 0d c0 rjmp .+26 ; 0xf54 <__unpack_f+0x80> + f3a: 22 0f add r18, r18 + f3c: 33 1f adc r19, r19 + f3e: 44 1f adc r20, r20 + f40: 55 1f adc r21, r21 + f42: 12 96 adiw r26, 0x02 ; 2 + f44: 8d 91 ld r24, X+ + f46: 9c 91 ld r25, X + f48: 13 97 sbiw r26, 0x03 ; 3 + f4a: 01 97 sbiw r24, 0x01 ; 1 + f4c: 13 96 adiw r26, 0x03 ; 3 + f4e: 9c 93 st X, r25 + f50: 8e 93 st -X, r24 + f52: 12 97 sbiw r26, 0x02 ; 2 + f54: 20 30 cpi r18, 0x00 ; 0 + f56: 80 e0 ldi r24, 0x00 ; 0 + f58: 38 07 cpc r19, r24 + f5a: 80 e0 ldi r24, 0x00 ; 0 + f5c: 48 07 cpc r20, r24 + f5e: 80 e4 ldi r24, 0x40 ; 64 + f60: 58 07 cpc r21, r24 + f62: 58 f3 brcs .-42 ; 0xf3a <__unpack_f+0x66> + f64: 14 96 adiw r26, 0x04 ; 4 + f66: 2d 93 st X+, r18 + f68: 3d 93 st X+, r19 + f6a: 4d 93 st X+, r20 + f6c: 5c 93 st X, r21 + f6e: 17 97 sbiw r26, 0x07 ; 7 + f70: 08 95 ret + f72: 2f 3f cpi r18, 0xFF ; 255 + f74: 31 05 cpc r19, r1 + f76: 79 f4 brne .+30 ; 0xf96 <__unpack_f+0xc2> + f78: 41 15 cp r20, r1 + f7a: 51 05 cpc r21, r1 + f7c: 61 05 cpc r22, r1 + f7e: 71 05 cpc r23, r1 + f80: 19 f4 brne .+6 ; 0xf88 <__unpack_f+0xb4> + f82: 84 e0 ldi r24, 0x04 ; 4 + f84: 8c 93 st X, r24 + f86: 08 95 ret + f88: 64 ff sbrs r22, 4 + f8a: 03 c0 rjmp .+6 ; 0xf92 <__unpack_f+0xbe> + f8c: 81 e0 ldi r24, 0x01 ; 1 + f8e: 8c 93 st X, r24 + f90: 12 c0 rjmp .+36 ; 0xfb6 <__unpack_f+0xe2> + f92: 1c 92 st X, r1 + f94: 10 c0 rjmp .+32 ; 0xfb6 <__unpack_f+0xe2> + f96: 2f 57 subi r18, 0x7F ; 127 + f98: 30 40 sbci r19, 0x00 ; 0 + f9a: 13 96 adiw r26, 0x03 ; 3 + f9c: 3c 93 st X, r19 + f9e: 2e 93 st -X, r18 + fa0: 12 97 sbiw r26, 0x02 ; 2 + fa2: 83 e0 ldi r24, 0x03 ; 3 + fa4: 8c 93 st X, r24 + fa6: 87 e0 ldi r24, 0x07 ; 7 + fa8: 44 0f add r20, r20 + faa: 55 1f adc r21, r21 + fac: 66 1f adc r22, r22 + fae: 77 1f adc r23, r23 + fb0: 8a 95 dec r24 + fb2: d1 f7 brne .-12 ; 0xfa8 <__unpack_f+0xd4> + fb4: 70 64 ori r23, 0x40 ; 64 + fb6: 14 96 adiw r26, 0x04 ; 4 + fb8: 4d 93 st X+, r20 + fba: 5d 93 st X+, r21 + fbc: 6d 93 st X+, r22 + fbe: 7c 93 st X, r23 + fc0: 17 97 sbiw r26, 0x07 ; 7 + fc2: 08 95 ret + +00000fc4 <__divmodhi4>: + fc4: 97 fb bst r25, 7 + fc6: 09 2e mov r0, r25 + fc8: 07 26 eor r0, r23 + fca: 0a d0 rcall .+20 ; 0xfe0 <__divmodhi4_neg1> + fcc: 77 fd sbrc r23, 7 + fce: 04 d0 rcall .+8 ; 0xfd8 <__divmodhi4_neg2> + fd0: 49 d0 rcall .+146 ; 0x1064 <__udivmodhi4> + fd2: 06 d0 rcall .+12 ; 0xfe0 <__divmodhi4_neg1> + fd4: 00 20 and r0, r0 + fd6: 1a f4 brpl .+6 ; 0xfde <__divmodhi4_exit> + +00000fd8 <__divmodhi4_neg2>: + fd8: 70 95 com r23 + fda: 61 95 neg r22 + fdc: 7f 4f sbci r23, 0xFF ; 255 + +00000fde <__divmodhi4_exit>: + fde: 08 95 ret + +00000fe0 <__divmodhi4_neg1>: + fe0: f6 f7 brtc .-4 ; 0xfde <__divmodhi4_exit> + fe2: 90 95 com r25 + fe4: 81 95 neg r24 + fe6: 9f 4f sbci r25, 0xFF ; 255 + fe8: 08 95 ret + +00000fea <__udivmodsi4>: + fea: a1 e2 ldi r26, 0x21 ; 33 + fec: 1a 2e mov r1, r26 + fee: aa 1b sub r26, r26 + ff0: bb 1b sub r27, r27 + ff2: fd 01 movw r30, r26 + ff4: 0d c0 rjmp .+26 ; 0x1010 <__udivmodsi4_ep> + +00000ff6 <__udivmodsi4_loop>: + ff6: aa 1f adc r26, r26 + ff8: bb 1f adc r27, r27 + ffa: ee 1f adc r30, r30 + ffc: ff 1f adc r31, r31 + ffe: a2 17 cp r26, r18 + 1000: b3 07 cpc r27, r19 + 1002: e4 07 cpc r30, r20 + 1004: f5 07 cpc r31, r21 + 1006: 20 f0 brcs .+8 ; 0x1010 <__udivmodsi4_ep> + 1008: a2 1b sub r26, r18 + 100a: b3 0b sbc r27, r19 + 100c: e4 0b sbc r30, r20 + 100e: f5 0b sbc r31, r21 + +00001010 <__udivmodsi4_ep>: + 1010: 66 1f adc r22, r22 + 1012: 77 1f adc r23, r23 + 1014: 88 1f adc r24, r24 + 1016: 99 1f adc r25, r25 + 1018: 1a 94 dec r1 + 101a: 69 f7 brne .-38 ; 0xff6 <__udivmodsi4_loop> + 101c: 60 95 com r22 + 101e: 70 95 com r23 + 1020: 80 95 com r24 + 1022: 90 95 com r25 + 1024: 9b 01 movw r18, r22 + 1026: ac 01 movw r20, r24 + 1028: bd 01 movw r22, r26 + 102a: cf 01 movw r24, r30 + 102c: 08 95 ret + +0000102e <__divmodsi4>: + 102e: 97 fb bst r25, 7 + 1030: 09 2e mov r0, r25 + 1032: 05 26 eor r0, r21 + 1034: 0e d0 rcall .+28 ; 0x1052 <__divmodsi4_neg1> + 1036: 57 fd sbrc r21, 7 + 1038: 04 d0 rcall .+8 ; 0x1042 <__divmodsi4_neg2> + 103a: d7 df rcall .-82 ; 0xfea <__udivmodsi4> + 103c: 0a d0 rcall .+20 ; 0x1052 <__divmodsi4_neg1> + 103e: 00 1c adc r0, r0 + 1040: 38 f4 brcc .+14 ; 0x1050 <__divmodsi4_exit> + +00001042 <__divmodsi4_neg2>: + 1042: 50 95 com r21 + 1044: 40 95 com r20 + 1046: 30 95 com r19 + 1048: 21 95 neg r18 + 104a: 3f 4f sbci r19, 0xFF ; 255 + 104c: 4f 4f sbci r20, 0xFF ; 255 + 104e: 5f 4f sbci r21, 0xFF ; 255 + +00001050 <__divmodsi4_exit>: + 1050: 08 95 ret + +00001052 <__divmodsi4_neg1>: + 1052: f6 f7 brtc .-4 ; 0x1050 <__divmodsi4_exit> + 1054: 90 95 com r25 + 1056: 80 95 com r24 + 1058: 70 95 com r23 + 105a: 61 95 neg r22 + 105c: 7f 4f sbci r23, 0xFF ; 255 + 105e: 8f 4f sbci r24, 0xFF ; 255 + 1060: 9f 4f sbci r25, 0xFF ; 255 + 1062: 08 95 ret + +00001064 <__udivmodhi4>: + 1064: aa 1b sub r26, r26 + 1066: bb 1b sub r27, r27 + 1068: 51 e1 ldi r21, 0x11 ; 17 + 106a: 07 c0 rjmp .+14 ; 0x107a <__udivmodhi4_ep> + +0000106c <__udivmodhi4_loop>: + 106c: aa 1f adc r26, r26 + 106e: bb 1f adc r27, r27 + 1070: a6 17 cp r26, r22 + 1072: b7 07 cpc r27, r23 + 1074: 10 f0 brcs .+4 ; 0x107a <__udivmodhi4_ep> + 1076: a6 1b sub r26, r22 + 1078: b7 0b sbc r27, r23 + +0000107a <__udivmodhi4_ep>: + 107a: 88 1f adc r24, r24 + 107c: 99 1f adc r25, r25 + 107e: 5a 95 dec r21 + 1080: a9 f7 brne .-22 ; 0x106c <__udivmodhi4_loop> + 1082: 80 95 com r24 + 1084: 90 95 com r25 + 1086: bc 01 movw r22, r24 + 1088: cd 01 movw r24, r26 + 108a: 08 95 ret + +0000108c <__prologue_saves__>: + 108c: 2f 92 push r2 + 108e: 3f 92 push r3 + 1090: 4f 92 push r4 + 1092: 5f 92 push r5 + 1094: 6f 92 push r6 + 1096: 7f 92 push r7 + 1098: 8f 92 push r8 + 109a: 9f 92 push r9 + 109c: af 92 push r10 + 109e: bf 92 push r11 + 10a0: cf 92 push r12 + 10a2: df 92 push r13 + 10a4: ef 92 push r14 + 10a6: ff 92 push r15 + 10a8: 0f 93 push r16 + 10aa: 1f 93 push r17 + 10ac: cf 93 push r28 + 10ae: df 93 push r29 + 10b0: cd b7 in r28, 0x3d ; 61 + 10b2: de b7 in r29, 0x3e ; 62 + 10b4: ca 1b sub r28, r26 + 10b6: db 0b sbc r29, r27 + 10b8: 0f b6 in r0, 0x3f ; 63 + 10ba: f8 94 cli + 10bc: de bf out 0x3e, r29 ; 62 + 10be: 0f be out 0x3f, r0 ; 63 + 10c0: cd bf out 0x3d, r28 ; 61 + 10c2: 09 94 ijmp + +000010c4 <__epilogue_restores__>: + 10c4: 2a 88 ldd r2, Y+18 ; 0x12 + 10c6: 39 88 ldd r3, Y+17 ; 0x11 + 10c8: 48 88 ldd r4, Y+16 ; 0x10 + 10ca: 5f 84 ldd r5, Y+15 ; 0x0f + 10cc: 6e 84 ldd r6, Y+14 ; 0x0e + 10ce: 7d 84 ldd r7, Y+13 ; 0x0d + 10d0: 8c 84 ldd r8, Y+12 ; 0x0c + 10d2: 9b 84 ldd r9, Y+11 ; 0x0b + 10d4: aa 84 ldd r10, Y+10 ; 0x0a + 10d6: b9 84 ldd r11, Y+9 ; 0x09 + 10d8: c8 84 ldd r12, Y+8 ; 0x08 + 10da: df 80 ldd r13, Y+7 ; 0x07 + 10dc: ee 80 ldd r14, Y+6 ; 0x06 + 10de: fd 80 ldd r15, Y+5 ; 0x05 + 10e0: 0c 81 ldd r16, Y+4 ; 0x04 + 10e2: 1b 81 ldd r17, Y+3 ; 0x03 + 10e4: aa 81 ldd r26, Y+2 ; 0x02 + 10e6: b9 81 ldd r27, Y+1 ; 0x01 + 10e8: ce 0f add r28, r30 + 10ea: d1 1d adc r29, r1 + 10ec: 0f b6 in r0, 0x3f ; 63 + 10ee: f8 94 cli + 10f0: de bf out 0x3e, r29 ; 62 + 10f2: 0f be out 0x3f, r0 ; 63 + 10f4: cd bf out 0x3d, r28 ; 61 + 10f6: ed 01 movw r28, r26 + 10f8: 08 95 ret + +000010fa <__tablejump2__>: + 10fa: ee 0f add r30, r30 + 10fc: ff 1f adc r31, r31 + +000010fe <__tablejump__>: + 10fe: 05 90 lpm r0, Z+ + 1100: f4 91 lpm r31, Z+ + 1102: e0 2d mov r30, r0 + 1104: 09 94 ijmp + +00001106 <sin>: + 1106: 9f 93 push r25 + 1108: 05 d0 rcall .+10 ; 0x1114 <__fp_rempio2> + 110a: 0f 90 pop r0 + 110c: 07 fc sbrc r0, 7 + 110e: ee 5f subi r30, 0xFE ; 254 + 1110: 28 c0 rjmp .+80 ; 0x1162 <__fp_sinus> + 1112: ce c0 rjmp .+412 ; 0x12b0 <__fp_nan> + +00001114 <__fp_rempio2>: + 1114: 3f d0 rcall .+126 ; 0x1194 <__fp_splitA> + 1116: e8 f3 brcs .-6 ; 0x1112 <sin+0xc> + 1118: e8 94 clt + 111a: e0 e0 ldi r30, 0x00 ; 0 + 111c: bb 27 eor r27, r27 + 111e: 9f 57 subi r25, 0x7F ; 127 + 1120: f0 f0 brcs .+60 ; 0x115e <__fp_rempio2+0x4a> + 1122: 2a ed ldi r18, 0xDA ; 218 + 1124: 3f e0 ldi r19, 0x0F ; 15 + 1126: 49 ec ldi r20, 0xC9 ; 201 + 1128: 06 c0 rjmp .+12 ; 0x1136 <__fp_rempio2+0x22> + 112a: ee 0f add r30, r30 + 112c: bb 0f add r27, r27 + 112e: 66 1f adc r22, r22 + 1130: 77 1f adc r23, r23 + 1132: 88 1f adc r24, r24 + 1134: 28 f0 brcs .+10 ; 0x1140 <__fp_rempio2+0x2c> + 1136: b2 3a cpi r27, 0xA2 ; 162 + 1138: 62 07 cpc r22, r18 + 113a: 73 07 cpc r23, r19 + 113c: 84 07 cpc r24, r20 + 113e: 28 f0 brcs .+10 ; 0x114a <__fp_rempio2+0x36> + 1140: b2 5a subi r27, 0xA2 ; 162 + 1142: 62 0b sbc r22, r18 + 1144: 73 0b sbc r23, r19 + 1146: 84 0b sbc r24, r20 + 1148: e3 95 inc r30 + 114a: 9a 95 dec r25 + 114c: 72 f7 brpl .-36 ; 0x112a <__fp_rempio2+0x16> + 114e: 80 38 cpi r24, 0x80 ; 128 + 1150: 30 f4 brcc .+12 ; 0x115e <__fp_rempio2+0x4a> + 1152: 9a 95 dec r25 + 1154: bb 0f add r27, r27 + 1156: 66 1f adc r22, r22 + 1158: 77 1f adc r23, r23 + 115a: 88 1f adc r24, r24 + 115c: d2 f7 brpl .-12 ; 0x1152 <__fp_rempio2+0x3e> + 115e: 90 48 sbci r25, 0x80 ; 128 + 1160: 9b c0 rjmp .+310 ; 0x1298 <__fp_mpack_finite> + +00001162 <__fp_sinus>: + 1162: ef 93 push r30 + 1164: e0 ff sbrs r30, 0 + 1166: 06 c0 rjmp .+12 ; 0x1174 <__fp_sinus+0x12> + 1168: a2 ea ldi r26, 0xA2 ; 162 + 116a: 2a ed ldi r18, 0xDA ; 218 + 116c: 3f e0 ldi r19, 0x0F ; 15 + 116e: 49 ec ldi r20, 0xC9 ; 201 + 1170: 5f eb ldi r21, 0xBF ; 191 + 1172: 37 d0 rcall .+110 ; 0x11e2 <__addsf3x> + 1174: bf d0 rcall .+382 ; 0x12f4 <__fp_round> + 1176: 0f 90 pop r0 + 1178: 03 94 inc r0 + 117a: 01 fc sbrc r0, 1 + 117c: 90 58 subi r25, 0x80 ; 128 + 117e: e8 e6 ldi r30, 0x68 ; 104 + 1180: f0 e0 ldi r31, 0x00 ; 0 + 1182: 99 c0 rjmp .+306 ; 0x12b6 <__fp_powsodd> + +00001184 <__fp_split3>: + 1184: 57 fd sbrc r21, 7 + 1186: 90 58 subi r25, 0x80 ; 128 + 1188: 44 0f add r20, r20 + 118a: 55 1f adc r21, r21 + 118c: 59 f0 breq .+22 ; 0x11a4 <__fp_splitA+0x10> + 118e: 5f 3f cpi r21, 0xFF ; 255 + 1190: 71 f0 breq .+28 ; 0x11ae <__fp_splitA+0x1a> + 1192: 47 95 ror r20 + +00001194 <__fp_splitA>: + 1194: 88 0f add r24, r24 + 1196: 97 fb bst r25, 7 + 1198: 99 1f adc r25, r25 + 119a: 61 f0 breq .+24 ; 0x11b4 <__fp_splitA+0x20> + 119c: 9f 3f cpi r25, 0xFF ; 255 + 119e: 79 f0 breq .+30 ; 0x11be <__fp_splitA+0x2a> + 11a0: 87 95 ror r24 + 11a2: 08 95 ret + 11a4: 12 16 cp r1, r18 + 11a6: 13 06 cpc r1, r19 + 11a8: 14 06 cpc r1, r20 + 11aa: 55 1f adc r21, r21 + 11ac: f2 cf rjmp .-28 ; 0x1192 <__fp_split3+0xe> + 11ae: 46 95 lsr r20 + 11b0: f1 df rcall .-30 ; 0x1194 <__fp_splitA> + 11b2: 08 c0 rjmp .+16 ; 0x11c4 <__fp_splitA+0x30> + 11b4: 16 16 cp r1, r22 + 11b6: 17 06 cpc r1, r23 + 11b8: 18 06 cpc r1, r24 + 11ba: 99 1f adc r25, r25 + 11bc: f1 cf rjmp .-30 ; 0x11a0 <__fp_splitA+0xc> + 11be: 86 95 lsr r24 + 11c0: 71 05 cpc r23, r1 + 11c2: 61 05 cpc r22, r1 + 11c4: 08 94 sec + 11c6: 08 95 ret + 11c8: 87 d0 rcall .+270 ; 0x12d8 <__fp_pscA> + 11ca: 30 f0 brcs .+12 ; 0x11d8 <__fp_splitA+0x44> + 11cc: 8c d0 rcall .+280 ; 0x12e6 <__fp_pscB> + 11ce: 20 f0 brcs .+8 ; 0x11d8 <__fp_splitA+0x44> + 11d0: 31 f4 brne .+12 ; 0x11de <__fp_splitA+0x4a> + 11d2: 9f 3f cpi r25, 0xFF ; 255 + 11d4: 11 f4 brne .+4 ; 0x11da <__fp_splitA+0x46> + 11d6: 1e f4 brtc .+6 ; 0x11de <__fp_splitA+0x4a> + 11d8: 6b c0 rjmp .+214 ; 0x12b0 <__fp_nan> + 11da: 0e f4 brtc .+2 ; 0x11de <__fp_splitA+0x4a> + 11dc: e0 95 com r30 + 11de: e7 fb bst r30, 7 + 11e0: 53 c0 rjmp .+166 ; 0x1288 <__fp_inf> + +000011e2 <__addsf3x>: + 11e2: e9 2f mov r30, r25 + 11e4: cf df rcall .-98 ; 0x1184 <__fp_split3> + 11e6: 80 f3 brcs .-32 ; 0x11c8 <__fp_splitA+0x34> + 11e8: ba 17 cp r27, r26 + 11ea: 62 07 cpc r22, r18 + 11ec: 73 07 cpc r23, r19 + 11ee: 84 07 cpc r24, r20 + 11f0: 95 07 cpc r25, r21 + 11f2: 18 f0 brcs .+6 ; 0x11fa <__addsf3x+0x18> + 11f4: 71 f4 brne .+28 ; 0x1212 <__addsf3x+0x30> + 11f6: 9e f5 brtc .+102 ; 0x125e <__addsf3x+0x7c> + 11f8: 8e c0 rjmp .+284 ; 0x1316 <__fp_zero> + 11fa: 0e f4 brtc .+2 ; 0x11fe <__addsf3x+0x1c> + 11fc: e0 95 com r30 + 11fe: 0b 2e mov r0, r27 + 1200: ba 2f mov r27, r26 + 1202: a0 2d mov r26, r0 + 1204: 0b 01 movw r0, r22 + 1206: b9 01 movw r22, r18 + 1208: 90 01 movw r18, r0 + 120a: 0c 01 movw r0, r24 + 120c: ca 01 movw r24, r20 + 120e: a0 01 movw r20, r0 + 1210: 11 24 eor r1, r1 + 1212: ff 27 eor r31, r31 + 1214: 59 1b sub r21, r25 + 1216: 99 f0 breq .+38 ; 0x123e <__addsf3x+0x5c> + 1218: 59 3f cpi r21, 0xF9 ; 249 + 121a: 50 f4 brcc .+20 ; 0x1230 <__addsf3x+0x4e> + 121c: 50 3e cpi r21, 0xE0 ; 224 + 121e: 68 f1 brcs .+90 ; 0x127a <__addsf3x+0x98> + 1220: 1a 16 cp r1, r26 + 1222: f0 40 sbci r31, 0x00 ; 0 + 1224: a2 2f mov r26, r18 + 1226: 23 2f mov r18, r19 + 1228: 34 2f mov r19, r20 + 122a: 44 27 eor r20, r20 + 122c: 58 5f subi r21, 0xF8 ; 248 + 122e: f3 cf rjmp .-26 ; 0x1216 <__addsf3x+0x34> + 1230: 46 95 lsr r20 + 1232: 37 95 ror r19 + 1234: 27 95 ror r18 + 1236: a7 95 ror r26 + 1238: f0 40 sbci r31, 0x00 ; 0 + 123a: 53 95 inc r21 + 123c: c9 f7 brne .-14 ; 0x1230 <__addsf3x+0x4e> + 123e: 7e f4 brtc .+30 ; 0x125e <__addsf3x+0x7c> + 1240: 1f 16 cp r1, r31 + 1242: ba 0b sbc r27, r26 + 1244: 62 0b sbc r22, r18 + 1246: 73 0b sbc r23, r19 + 1248: 84 0b sbc r24, r20 + 124a: ba f0 brmi .+46 ; 0x127a <__addsf3x+0x98> + 124c: 91 50 subi r25, 0x01 ; 1 + 124e: a1 f0 breq .+40 ; 0x1278 <__addsf3x+0x96> + 1250: ff 0f add r31, r31 + 1252: bb 1f adc r27, r27 + 1254: 66 1f adc r22, r22 + 1256: 77 1f adc r23, r23 + 1258: 88 1f adc r24, r24 + 125a: c2 f7 brpl .-16 ; 0x124c <__addsf3x+0x6a> + 125c: 0e c0 rjmp .+28 ; 0x127a <__addsf3x+0x98> + 125e: ba 0f add r27, r26 + 1260: 62 1f adc r22, r18 + 1262: 73 1f adc r23, r19 + 1264: 84 1f adc r24, r20 + 1266: 48 f4 brcc .+18 ; 0x127a <__addsf3x+0x98> + 1268: 87 95 ror r24 + 126a: 77 95 ror r23 + 126c: 67 95 ror r22 + 126e: b7 95 ror r27 + 1270: f7 95 ror r31 + 1272: 9e 3f cpi r25, 0xFE ; 254 + 1274: 08 f0 brcs .+2 ; 0x1278 <__addsf3x+0x96> + 1276: b3 cf rjmp .-154 ; 0x11de <__fp_splitA+0x4a> + 1278: 93 95 inc r25 + 127a: 88 0f add r24, r24 + 127c: 08 f0 brcs .+2 ; 0x1280 <__addsf3x+0x9e> + 127e: 99 27 eor r25, r25 + 1280: ee 0f add r30, r30 + 1282: 97 95 ror r25 + 1284: 87 95 ror r24 + 1286: 08 95 ret + +00001288 <__fp_inf>: + 1288: 97 f9 bld r25, 7 + 128a: 9f 67 ori r25, 0x7F ; 127 + 128c: 80 e8 ldi r24, 0x80 ; 128 + 128e: 70 e0 ldi r23, 0x00 ; 0 + 1290: 60 e0 ldi r22, 0x00 ; 0 + 1292: 08 95 ret + +00001294 <__fp_mpack>: + 1294: 9f 3f cpi r25, 0xFF ; 255 + 1296: 31 f0 breq .+12 ; 0x12a4 <__fp_mpack_finite+0xc> + +00001298 <__fp_mpack_finite>: + 1298: 91 50 subi r25, 0x01 ; 1 + 129a: 20 f4 brcc .+8 ; 0x12a4 <__fp_mpack_finite+0xc> + 129c: 87 95 ror r24 + 129e: 77 95 ror r23 + 12a0: 67 95 ror r22 + 12a2: b7 95 ror r27 + 12a4: 88 0f add r24, r24 + 12a6: 91 1d adc r25, r1 + 12a8: 96 95 lsr r25 + 12aa: 87 95 ror r24 + 12ac: 97 f9 bld r25, 7 + 12ae: 08 95 ret + +000012b0 <__fp_nan>: + 12b0: 9f ef ldi r25, 0xFF ; 255 + 12b2: 80 ec ldi r24, 0xC0 ; 192 + 12b4: 08 95 ret + +000012b6 <__fp_powsodd>: + 12b6: 9f 93 push r25 + 12b8: 8f 93 push r24 + 12ba: 7f 93 push r23 + 12bc: 6f 93 push r22 + 12be: ff 93 push r31 + 12c0: ef 93 push r30 + 12c2: 9b 01 movw r18, r22 + 12c4: ac 01 movw r20, r24 + 12c6: e3 db rcall .-2106 ; 0xa8e <__mulsf3> + 12c8: ef 91 pop r30 + 12ca: ff 91 pop r31 + 12cc: 2b d0 rcall .+86 ; 0x1324 <__fp_powser> + 12ce: 2f 91 pop r18 + 12d0: 3f 91 pop r19 + 12d2: 4f 91 pop r20 + 12d4: 5f 91 pop r21 + 12d6: db cb rjmp .-2122 ; 0xa8e <__mulsf3> + +000012d8 <__fp_pscA>: + 12d8: 00 24 eor r0, r0 + 12da: 0a 94 dec r0 + 12dc: 16 16 cp r1, r22 + 12de: 17 06 cpc r1, r23 + 12e0: 18 06 cpc r1, r24 + 12e2: 09 06 cpc r0, r25 + 12e4: 08 95 ret + +000012e6 <__fp_pscB>: + 12e6: 00 24 eor r0, r0 + 12e8: 0a 94 dec r0 + 12ea: 12 16 cp r1, r18 + 12ec: 13 06 cpc r1, r19 + 12ee: 14 06 cpc r1, r20 + 12f0: 05 06 cpc r0, r21 + 12f2: 08 95 ret + +000012f4 <__fp_round>: + 12f4: 09 2e mov r0, r25 + 12f6: 03 94 inc r0 + 12f8: 00 0c add r0, r0 + 12fa: 11 f4 brne .+4 ; 0x1300 <__fp_round+0xc> + 12fc: 88 23 and r24, r24 + 12fe: 52 f0 brmi .+20 ; 0x1314 <__fp_round+0x20> + 1300: bb 0f add r27, r27 + 1302: 40 f4 brcc .+16 ; 0x1314 <__fp_round+0x20> + 1304: bf 2b or r27, r31 + 1306: 11 f4 brne .+4 ; 0x130c <__fp_round+0x18> + 1308: 60 ff sbrs r22, 0 + 130a: 04 c0 rjmp .+8 ; 0x1314 <__fp_round+0x20> + 130c: 6f 5f subi r22, 0xFF ; 255 + 130e: 7f 4f sbci r23, 0xFF ; 255 + 1310: 8f 4f sbci r24, 0xFF ; 255 + 1312: 9f 4f sbci r25, 0xFF ; 255 + 1314: 08 95 ret + +00001316 <__fp_zero>: + 1316: e8 94 clt + +00001318 <__fp_szero>: + 1318: bb 27 eor r27, r27 + 131a: 66 27 eor r22, r22 + 131c: 77 27 eor r23, r23 + 131e: cb 01 movw r24, r22 + 1320: 97 f9 bld r25, 7 + 1322: 08 95 ret + +00001324 <__fp_powser>: + 1324: df 93 push r29 + 1326: cf 93 push r28 + 1328: 1f 93 push r17 + 132a: 0f 93 push r16 + 132c: ff 92 push r15 + 132e: ef 92 push r14 + 1330: df 92 push r13 + 1332: 7b 01 movw r14, r22 + 1334: 8c 01 movw r16, r24 + 1336: 68 94 set + 1338: 05 c0 rjmp .+10 ; 0x1344 <__fp_powser+0x20> + 133a: da 2e mov r13, r26 + 133c: ef 01 movw r28, r30 + 133e: 21 d0 rcall .+66 ; 0x1382 <__mulsf3x> + 1340: fe 01 movw r30, r28 + 1342: e8 94 clt + 1344: a5 91 lpm r26, Z+ + 1346: 25 91 lpm r18, Z+ + 1348: 35 91 lpm r19, Z+ + 134a: 45 91 lpm r20, Z+ + 134c: 55 91 lpm r21, Z+ + 134e: ae f3 brts .-22 ; 0x133a <__fp_powser+0x16> + 1350: ef 01 movw r28, r30 + 1352: 47 df rcall .-370 ; 0x11e2 <__addsf3x> + 1354: fe 01 movw r30, r28 + 1356: 97 01 movw r18, r14 + 1358: a8 01 movw r20, r16 + 135a: da 94 dec r13 + 135c: 79 f7 brne .-34 ; 0x133c <__fp_powser+0x18> + 135e: df 90 pop r13 + 1360: ef 90 pop r14 + 1362: ff 90 pop r15 + 1364: 0f 91 pop r16 + 1366: 1f 91 pop r17 + 1368: cf 91 pop r28 + 136a: df 91 pop r29 + 136c: 08 95 ret + 136e: b4 df rcall .-152 ; 0x12d8 <__fp_pscA> + 1370: 28 f0 brcs .+10 ; 0x137c <__fp_powser+0x58> + 1372: b9 df rcall .-142 ; 0x12e6 <__fp_pscB> + 1374: 18 f0 brcs .+6 ; 0x137c <__fp_powser+0x58> + 1376: 95 23 and r25, r21 + 1378: 09 f0 breq .+2 ; 0x137c <__fp_powser+0x58> + 137a: 86 cf rjmp .-244 ; 0x1288 <__fp_inf> + 137c: 99 cf rjmp .-206 ; 0x12b0 <__fp_nan> + 137e: 11 24 eor r1, r1 + 1380: cb cf rjmp .-106 ; 0x1318 <__fp_szero> + +00001382 <__mulsf3x>: + 1382: 00 df rcall .-512 ; 0x1184 <__fp_split3> + 1384: a0 f3 brcs .-24 ; 0x136e <__fp_powser+0x4a> + +00001386 <__mulsf3_pse>: + 1386: 95 9f mul r25, r21 + 1388: d1 f3 breq .-12 ; 0x137e <__fp_powser+0x5a> + 138a: 95 0f add r25, r21 + 138c: 50 e0 ldi r21, 0x00 ; 0 + 138e: 55 1f adc r21, r21 + 1390: 62 9f mul r22, r18 + 1392: f0 01 movw r30, r0 + 1394: 72 9f mul r23, r18 + 1396: bb 27 eor r27, r27 + 1398: f0 0d add r31, r0 + 139a: b1 1d adc r27, r1 + 139c: 63 9f mul r22, r19 + 139e: aa 27 eor r26, r26 + 13a0: f0 0d add r31, r0 + 13a2: b1 1d adc r27, r1 + 13a4: aa 1f adc r26, r26 + 13a6: 64 9f mul r22, r20 + 13a8: 66 27 eor r22, r22 + 13aa: b0 0d add r27, r0 + 13ac: a1 1d adc r26, r1 + 13ae: 66 1f adc r22, r22 + 13b0: 82 9f mul r24, r18 + 13b2: 22 27 eor r18, r18 + 13b4: b0 0d add r27, r0 + 13b6: a1 1d adc r26, r1 + 13b8: 62 1f adc r22, r18 + 13ba: 73 9f mul r23, r19 + 13bc: b0 0d add r27, r0 + 13be: a1 1d adc r26, r1 + 13c0: 62 1f adc r22, r18 + 13c2: 83 9f mul r24, r19 + 13c4: a0 0d add r26, r0 + 13c6: 61 1d adc r22, r1 + 13c8: 22 1f adc r18, r18 + 13ca: 74 9f mul r23, r20 + 13cc: 33 27 eor r19, r19 + 13ce: a0 0d add r26, r0 + 13d0: 61 1d adc r22, r1 + 13d2: 23 1f adc r18, r19 + 13d4: 84 9f mul r24, r20 + 13d6: 60 0d add r22, r0 + 13d8: 21 1d adc r18, r1 + 13da: 82 2f mov r24, r18 + 13dc: 76 2f mov r23, r22 + 13de: 6a 2f mov r22, r26 + 13e0: 11 24 eor r1, r1 + 13e2: 9f 57 subi r25, 0x7F ; 127 + 13e4: 50 40 sbci r21, 0x00 ; 0 + 13e6: 8a f0 brmi .+34 ; 0x140a <__mulsf3_pse+0x84> + 13e8: e1 f0 breq .+56 ; 0x1422 <__mulsf3_pse+0x9c> + 13ea: 88 23 and r24, r24 + 13ec: 4a f0 brmi .+18 ; 0x1400 <__mulsf3_pse+0x7a> + 13ee: ee 0f add r30, r30 + 13f0: ff 1f adc r31, r31 + 13f2: bb 1f adc r27, r27 + 13f4: 66 1f adc r22, r22 + 13f6: 77 1f adc r23, r23 + 13f8: 88 1f adc r24, r24 + 13fa: 91 50 subi r25, 0x01 ; 1 + 13fc: 50 40 sbci r21, 0x00 ; 0 + 13fe: a9 f7 brne .-22 ; 0x13ea <__mulsf3_pse+0x64> + 1400: 9e 3f cpi r25, 0xFE ; 254 + 1402: 51 05 cpc r21, r1 + 1404: 70 f0 brcs .+28 ; 0x1422 <__mulsf3_pse+0x9c> + 1406: 40 cf rjmp .-384 ; 0x1288 <__fp_inf> + 1408: 87 cf rjmp .-242 ; 0x1318 <__fp_szero> + 140a: 5f 3f cpi r21, 0xFF ; 255 + 140c: ec f3 brlt .-6 ; 0x1408 <__mulsf3_pse+0x82> + 140e: 98 3e cpi r25, 0xE8 ; 232 + 1410: dc f3 brlt .-10 ; 0x1408 <__mulsf3_pse+0x82> + 1412: 86 95 lsr r24 + 1414: 77 95 ror r23 + 1416: 67 95 ror r22 + 1418: b7 95 ror r27 + 141a: f7 95 ror r31 + 141c: e7 95 ror r30 + 141e: 9f 5f subi r25, 0xFF ; 255 + 1420: c1 f7 brne .-16 ; 0x1412 <__mulsf3_pse+0x8c> + 1422: fe 2b or r31, r30 + 1424: 88 0f add r24, r24 + 1426: 91 1d adc r25, r1 + 1428: 96 95 lsr r25 + 142a: 87 95 ror r24 + 142c: 97 f9 bld r25, 7 + 142e: 08 95 ret + +00001430 <_exit>: + 1430: f8 94 cli + +00001432 <__stop_program>: + 1432: ff cf rjmp .-2 ; 0x1432 <__stop_program> diff --git a/electic_streaming2560/bin/Release/electic_streaming.elf.map b/electic_streaming2560/bin/Release/electic_streaming.elf.map new file mode 100644 index 0000000..c007630 --- /dev/null +++ b/electic_streaming2560/bin/Release/electic_streaming.elf.map @@ -0,0 +1,897 @@ +Archive member included because of file (symbol) + +../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o (Serial) +../arduino_libs/core328p.a(Print.cpp.o) + obj/Release/main.o (Print::println(char const*)) +../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) (beginSerial) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + obj/Release/main.o (__divmodhi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + ../arduino_libs/core328p.a(Print.cpp.o) (__udivmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) (__divmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + obj/Release/main.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + obj/Release/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) (__do_global_ctors) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/main.o (__addsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + obj/Release/main.o (__mulsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Release/main.o (__fixsfsi) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + obj/Release/main.o (sin) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) (__fp_rempio2) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) (__fp_sinus) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_splitA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__addsf3x) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_inf) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_mpack_finite) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_nan) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_powsodd) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscB) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_round) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_zero) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) (__fp_powser) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) (__mulsf3x) + +Allocating common symbols +Common symbol size file + +rx_buffer 0x80 ../arduino_libs/core328p.a(wiring_serial.c.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/main.o +LOAD ../arduino_libs/core328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x1434 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + .progmem.gcc_fplib + 0x00000068 0x1e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + *(.progmem*) + 0x00000086 . = ALIGN (0x2) + 0x00000086 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000086 0x0 linker stubs + *(.trampolines*) + 0x00000086 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000086 __ctors_start = . + *(.ctors) + .ctors 0x00000086 0x2 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x00000088 __ctors_end = . + 0x00000088 __dtors_start = . + *(.dtors) + 0x00000088 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000088 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000088 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000088 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000094 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x00000094 __do_copy_data + .init4 0x000000aa 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000aa __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000ba 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + 0x000000ba __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000d0 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000d8 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000d8 __vector_22 + 0x000000d8 __vector_1 + 0x000000d8 __vector_24 + 0x000000d8 __vector_12 + 0x000000d8 __bad_interrupt + 0x000000d8 __vector_6 + 0x000000d8 __vector_3 + 0x000000d8 __vector_23 + 0x000000d8 __vector_25 + 0x000000d8 __vector_13 + 0x000000d8 __vector_17 + 0x000000d8 __vector_19 + 0x000000d8 __vector_7 + 0x000000d8 __vector_5 + 0x000000d8 __vector_4 + 0x000000d8 __vector_9 + 0x000000d8 __vector_2 + 0x000000d8 __vector_21 + 0x000000d8 __vector_15 + 0x000000d8 __vector_8 + 0x000000d8 __vector_14 + 0x000000d8 __vector_10 + 0x000000d8 __vector_16 + 0x000000d8 __vector_20 + .text 0x000000dc 0x1a0 obj/Release/main.o + 0x000000dc __vector_11 + 0x00000178 fill_sinewave() + 0x00000204 main + .text 0x0000027c 0x32 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x0000028a HardwareSerial::write(unsigned char) + 0x00000292 HardwareSerial::flush() + 0x00000298 HardwareSerial::read() + 0x0000029e HardwareSerial::available() + 0x000002a4 HardwareSerial::begin(long) + .text 0x000002ae 0x31e ../arduino_libs/core328p.a(Print.cpp.o) + 0x000002ae Print::print(unsigned char) + 0x000002be Print::print(char) + 0x000002ce Print::print(char const*) + 0x000002fe Print::println() + 0x0000032c Print::println(char) + 0x0000034c Print::println(char const*) + 0x00000362 Print::println(unsigned char) + 0x00000382 Print::printNumber(unsigned long, unsigned char) + 0x000004b2 Print::print(unsigned long) + 0x000004ba Print::println(unsigned long) + 0x000004d0 Print::print(unsigned int) + 0x000004dc Print::println(unsigned int) + 0x000004f8 Print::print(long) + 0x00000546 Print::println(long) + 0x0000055c Print::print(int) + 0x0000056c Print::println(int) + 0x0000058c Print::print(long, int) + 0x000005b6 Print::println(long, int) + .text 0x000005cc 0x16e ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x000005cc beginSerial + 0x0000063e serialWrite + 0x0000064e serialAvailable + 0x00000670 serialRead + 0x000006ae serialFlush + 0x000006c0 __vector_18 + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text 0x0000073a 0x354 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + 0x000009d2 __subsf3 + 0x00000a34 __addsf3 + .text 0x00000a8e 0x1f4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + 0x00000a8e __mulsf3 + .text 0x00000c82 0xa8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + 0x00000c82 __fixsfsi + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .text 0x00000d2a 0x1aa /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + 0x00000d2a __pack_f + .text 0x00000ed4 0xf0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + 0x00000ed4 __unpack_f + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x00000fc4 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000fc4 0x26 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + 0x00000fc4 __divmodhi4 + 0x00000fc4 _div + .text.libgcc 0x00000fea 0x44 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + 0x00000fea __udivmodsi4 + .text.libgcc 0x0000102e 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + 0x0000102e __divmodsi4 + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x00001064 0x28 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + 0x00001064 __udivmodhi4 + .text.libgcc 0x0000108c 0x38 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + 0x0000108c __prologue_saves__ + .text.libgcc 0x000010c4 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + 0x000010c4 __epilogue_restores__ + .text.libgcc 0x000010fa 0xc /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + 0x000010fa __tablejump2__ + 0x000010fe __tablejump__ + .text.avr-libc.fplib + 0x00001106 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + 0x00001106 sin + .text.avr-libc.fplib + 0x00001112 0x50 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x00001114 __fp_rempio2 + .text.avr-libc.fplib + 0x00001162 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x00001162 __fp_sinus + .text.avr-libc.fplib + 0x00001184 0x44 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x00001184 __fp_split3 + 0x00001194 __fp_splitA + .text.avr-libc.fplib + 0x000011c8 0xc0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x000011e2 __addsf3x + .text.avr-libc.fplib + 0x00001288 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x00001288 __fp_inf + .text.avr-libc.fplib + 0x00001294 0x1c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0x00001294 __fp_mpack + 0x00001298 __fp_mpack_finite + .text.avr-libc.fplib + 0x000012b0 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x000012b0 __fp_nan + .text.avr-libc.fplib + 0x000012b6 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x000012b6 __fp_powsodd + .text.avr-libc.fplib + 0x000012d8 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x000012d8 __fp_pscA + .text.avr-libc.fplib + 0x000012e6 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x000012e6 __fp_pscB + .text.avr-libc.fplib + 0x000012f4 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x000012f4 __fp_round + .text.avr-libc.fplib + 0x00001316 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x00001316 __fp_zero + 0x00001318 __fp_szero + .text.avr-libc.fplib + 0x00001324 0x4a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x00001324 __fp_powser + .text.avr-libc.fplib + 0x0000136e 0xc2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x00001382 __mulsf3x + 0x00001386 __mulsf3_pse + 0x00001430 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00001430 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00001430 exit + 0x00001430 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00001430 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00001434 _etext = . + +.data 0x00800100 0x22 load address 0x00001434 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x13 obj/Release/main.o + .data 0x00800113 0x6 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x00800113 vtable for HardwareSerial + .data 0x00800119 0x0 ../arduino_libs/core328p.a(Print.cpp.o) + .data 0x00800119 0x0 ../arduino_libs/core328p.a(wiring_serial.c.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .data 0x00800119 0x8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + 0x00800119 __thenan_sf + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800122 . = ALIGN (0x2) + *fill* 0x00800121 0x1 00 + 0x00800122 _edata = . + 0x00800122 PROVIDE (__data_end, .) + +.bss 0x00800122 0x28a + 0x00800122 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800122 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800122 0x204 obj/Release/main.o + 0x00800122 dd + 0x00800322 loopCount + 0x00800324 sample + .bss 0x00800326 0x2 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x00800326 Serial + .bss 0x00800328 0x0 ../arduino_libs/core328p.a(Print.cpp.o) + .bss 0x00800328 0x4 ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x00800328 rx_buffer_head + 0x0080032a rx_buffer_tail + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.bss*) + *(COMMON) + COMMON 0x0080032c 0x80 ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x0080032c rx_buffer + 0x008003ac PROVIDE (__bss_end, .) + 0x00001434 __data_load_start = LOADADDR (.data) + 0x00001456 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x008003ac 0x0 + 0x008003ac PROVIDE (__noinit_start, .) + *(.noinit*) + 0x008003ac PROVIDE (__noinit_end, .) + 0x008003ac _end = . + 0x008003ac PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x1cd4 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + 0x84 (size before relaxing) + .stab 0x0000072c 0x21c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x228 (size before relaxing) + .stab 0x00000948 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x108 (size before relaxing) + .stab 0x00000a44 0x1d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x1e0 (size before relaxing) + .stab 0x00000c18 0x4bc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x4c8 (size before relaxing) + .stab 0x000010d4 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x84 (size before relaxing) + .stab 0x0000114c 0xe4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0xf0 (size before relaxing) + .stab 0x00001230 0x54 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x60 (size before relaxing) + .stab 0x00001284 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x108 (size before relaxing) + .stab 0x00001380 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x90 (size before relaxing) + .stab 0x00001404 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x90 (size before relaxing) + .stab 0x00001488 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x108 (size before relaxing) + .stab 0x00001584 0x90 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x9c (size before relaxing) + .stab 0x00001614 0x1ec /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x1f8 (size before relaxing) + .stab 0x00001800 0x4d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x4e0 (size before relaxing) + +.stabstr 0x00000000 0x30d + *(.stabstr) + .stabstr 0x00000000 0x30d /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x60 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_aranges + 0x00000040 0x20 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_pubnames + 0x00000000 0x2a7 + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0xa2 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_pubnames + 0x000000a2 0x15c ../arduino_libs/core328p.a(Print.cpp.o) + .debug_pubnames + 0x000001fe 0xa9 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_info 0x00000000 0xd0b + *(.debug_info) + .debug_info 0x00000000 0x2f0 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_info 0x000002f0 0x890 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_info 0x00000b80 0x18b ../arduino_libs/core328p.a(wiring_serial.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x3f7 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x18e ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_abbrev 0x0000018e 0x183 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_abbrev 0x00000311 0xe6 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_line 0x00000000 0x689 + *(.debug_line) + .debug_line 0x00000000 0x1b5 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_line 0x000001b5 0x364 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_line 0x00000519 0x170 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_frame 0x00000000 0x210 + *(.debug_frame) + .debug_frame 0x00000000 0x70 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_frame 0x00000070 0x130 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_frame 0x000001a0 0x70 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_str 0x00000000 0x420 + *(.debug_str) + .debug_str 0x00000000 0x1a7 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x203 (size before relaxing) + .debug_str 0x000001a7 0x1b9 ../arduino_libs/core328p.a(Print.cpp.o) + 0x246 (size before relaxing) + .debug_str 0x00000360 0xc0 ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x12c (size before relaxing) + +.debug_loc 0x00000000 0x75a + *(.debug_loc) + .debug_loc 0x00000000 0xa9 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_loc 0x000000a9 0x621 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_loc 0x000006ca 0x90 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Release/electic_streaming.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +HardwareSerial::available() ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +HardwareSerial::begin(long) ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +HardwareSerial::flush() ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +HardwareSerial::read() ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +HardwareSerial::write(unsigned char) ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +Print::print(char const*) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(long) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(long, int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(unsigned char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(unsigned int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(unsigned long) ../arduino_libs/core328p.a(Print.cpp.o) +Print::printNumber(unsigned long, unsigned char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println() ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(char const*) ../arduino_libs/core328p.a(Print.cpp.o) + obj/Release/main.o +Print::println(char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(long) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(long, int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(unsigned char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(unsigned int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(unsigned long) ../arduino_libs/core328p.a(Print.cpp.o) +Serial ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +__addsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/main.o +__addsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__ctors_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__divmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) + obj/Release/main.o +__divmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(Print.cpp.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(Print.cpp.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +__do_global_ctors /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +__epilogue_restores__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Release/main.o +__fp_inf /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_mpack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) +__fp_mpack_finite /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_nan /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_powser /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) +__fp_powsodd /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_pscA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_pscB /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_rempio2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) +__fp_round /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_sinus /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) +__fp_split3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_splitA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_szero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__fp_zero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__mulsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + obj/Release/main.o +__mulsf3_pse /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__mulsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) +__pack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__tablejump2__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) +__udivmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core328p.a(Print.cpp.o) +__unpack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 ../arduino_libs/core328p.a(wiring_serial.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_div /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +beginSerial ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +dd obj/Release/main.o +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +fill_sinewave() obj/Release/main.o +loopCount obj/Release/main.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +rx_buffer ../arduino_libs/core328p.a(wiring_serial.c.o) +rx_buffer_head ../arduino_libs/core328p.a(wiring_serial.c.o) +rx_buffer_tail ../arduino_libs/core328p.a(wiring_serial.c.o) +sample obj/Release/main.o +serialAvailable ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +serialFlush ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +serialRead ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +serialWrite ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +sin /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + obj/Release/main.o +vtable for HardwareSerial ../arduino_libs/core328p.a(HardwareSerial.cpp.o) diff --git a/electic_streaming2560/burn b/electic_streaming2560/burn new file mode 100755 index 0000000..2bcc76e --- /dev/null +++ b/electic_streaming2560/burn @@ -0,0 +1 @@ +avrdude -p m328p -c arduino -P /dev/ttyUSB0 -b 57600 -F -u -U flash:w:bin/Release/electic_streaming.elf.hex diff --git a/electic_streaming2560/electic_streaming2560.cbp b/electic_streaming2560/electic_streaming2560.cbp new file mode 100644 index 0000000..a82c869 --- /dev/null +++ b/electic_streaming2560/electic_streaming2560.cbp @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="electic_streaming2560" /> + <Option pch_mode="2" /> + <Option compiler="avrgcc" /> + <Build> + <Target title="Debug"> + <Option output="bin/Debug/electic_streaming.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Debug/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-g" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin/Release/electic_streaming.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Release/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-Os" /> + </Compiler> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-mmcu=atmega2560" /> + <Add option="-DF_CPU=16000000UL" /> + <Add directory="../arduinoSrc0022" /> + <Add directory="../arduino libs/NewSoftSerial" /> + </Compiler> + <Linker> + <Add option="-mmcu=atmega2560" /> + <Add option="-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref" /> + <Add library="../arduino_libs/core0022_2560.a" /> + </Linker> + <ExtraCommands> + <Add after="avr-size $(TARGET_OUTPUT_FILE)" /> + <Add after="avr-objcopy -O ihex -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).hex" /> + <Add after="avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.hex" /> + <Add after="avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_FILE).lss" /> + <Add after="./burn" /> + </ExtraCommands> + <Unit filename="../ArduinoLib328p/HardwareSerial.h" /> + <Unit filename="../ArduinoLib328p/Print.h" /> + <Unit filename="../ArduinoLib328p/Stream.h" /> + <Unit filename="../ArduinoLib328p/WCharacter.h" /> + <Unit filename="../ArduinoLib328p/WConstants.h" /> + <Unit filename="../ArduinoLib328p/WProgram.h" /> + <Unit filename="../ArduinoLib328p/WString.h" /> + <Unit filename="../ArduinoLib328p/binary.h" /> + <Unit filename="../ArduinoLib328p/pins_arduino.h" /> + <Unit filename="../ArduinoLib328p/wiring.h" /> + <Unit filename="../ArduinoLib328p/wiring_private.h" /> + <Unit filename="main.cpp" /> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + <lib_finder disable_auto="1" /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/electic_streaming2560/electic_streaming2560.layout b/electic_streaming2560/electic_streaming2560.layout new file mode 100644 index 0000000..a159301 --- /dev/null +++ b/electic_streaming2560/electic_streaming2560.layout @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <ActiveTarget name="Debug" /> + <File name="main.cpp" open="1" top="0" tabpos="1"> + <Cursor position="0" topLine="0" /> + </File> +</CodeBlocks_layout_file> diff --git a/electic_streaming2560/main.c b/electic_streaming2560/main.c new file mode 100644 index 0000000..5cdf3a6 --- /dev/null +++ b/electic_streaming2560/main.c @@ -0,0 +1,83 @@ +/* test streaming sample data + * bluetooth + * TJR 141011 + + want: 1 second + 16M / 1024 prescale = + + */ + +#include <stdlib.h> +#include <avr/io.h> +#include <avr/interrupt.h> +//include <avr/signal.h> +#include <avr/pgmspace.h> + +#include <math.h> + +#include "uart.h" + +//#include "HardwareSerial.h" + +#define SAMPLES 512 + +#ifndef F_CPU +#define F_CPU 16000000UL +#endif +#define UART_BAUD_RATE 57600 + +//unsigned char dd[SAMPLES]; // ram buffer +int enabled=0; +int loopCount=0; +int sample=0; + +int main(void) +{ + Serial.begin(57600); + + //uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); + DDRB |= (1 << 5); // port B bit 6 = arduino pin 13 + PORTB = (1 << 5); //turn on to start + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + OCR1A = 1562; // Set CTC compare value to 1Hz at 1MHz AVR clock, with a prescaler of 64 + sei(); // Enable global interrupts + TCCR1B |= ((1<<CS10)|(1 << CS12)); // Set up timer at Fcpu/1024 + //fill_sinewave(); + unsigned int c; + /* while(1) { + c = uart_getc(); + if (!( c & UART_NO_DATA )) + { + uart_putc( (unsigned char)c ); + if ((unsigned char)c=="a") { + uart_puts_P("Welcome to electic"); + enabled=1; + } + } + } + */ +} + +ISR(TIMER1_COMPA_vect) +{ + if (enabled) PORTB ^= (1 << 5); + +} +/* +void fill_sinewave(){ + float pi = 3.141592; + float fcnt=0; + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + int bb; +http://www.johnhenryshammer.com/WOW2/pagesHowTo/atmelPage.php#index for (int i = 0; i <= (SAMPLES-1); i++){ // with 50 periods sinewawe + fd= 127*sin(fcnt); // fundamental tone + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + bb=127+fd; // add dc offset to sinewawe + dd[i]=bb; // write value into array + + } +} +*/ + diff --git a/electic_streaming2560/main.cpp b/electic_streaming2560/main.cpp new file mode 100644 index 0000000..71c276e --- /dev/null +++ b/electic_streaming2560/main.cpp @@ -0,0 +1,80 @@ +extern "C" void __cxa_pure_virtual(void); //for C++ defines + +/* +Electric data access template + +TJR 191011 + +Uses Arduino c++ libraries in vanilla AVR environment + +Explanation +http://www.johnhenryshammer.com/WOW2/pagesHowTo/atmelPage.php#index + +*/ +#define SAMPLES 512 //size of ram buffer +#define PACKETSIZE 320 //size of output packet + +#include <WProgram.h> //import main Arduino header file + + +byte dd[SAMPLES]; // ram buffer +int loopCount=0; +int sample=0; + +void fill_sinewave(){ + /* + sample data to stream + the vital thing is that its possible to distinguish the end of a packet + + here the data is in the range 1-255 and a 0 denotes the end of the packet + */ + float pi = 3.141592; + float fcnt=0; + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + fd= 127*sin(fcnt); // fundamental tone + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + bb=128+fd; // add dc offset to sinewawe + dd[i]=bb; // write value into array + } +} + +int main(){ + + //init(); -- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + fill_sinewave(); + Serial.begin(115200); + + DDRB |= (1 << 5); // port B bit 6 = arduino pin 13 + PORTB = (1 << 5); //turn on to start + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + OCR1A = 390; // Set CTC compare value: final speed = CPU clocks / prescaler / CTC 15625=1Hz + sei(); // Enable global interrupts + + while(1) { + if (Serial.available() > 0) { + PORTB ^= (1 << 5); + byte in=Serial.read(); + if (in=='a') { + Serial.println("Welcome to electic"); + TCCR1B |= ((1<<CS10)|(1 << CS12)); // Set up timer at Fcpu/1024 + } + } + } +} + +ISR(TIMER1_COMPA_vect) +{ + //if (enabled) + PORTB ^= (1 << 5); + for (int i=0;i<PACKETSIZE;i++) { + Serial.write(dd[sample]); + sample=(sample+1)%SAMPLES; + } + Serial.write((byte)0); +} + + diff --git a/electic_streaming2560/obj/Debug/main.o b/electic_streaming2560/obj/Debug/main.o Binary files differnew file mode 100644 index 0000000..8db2978 --- /dev/null +++ b/electic_streaming2560/obj/Debug/main.o diff --git a/electic_streaming2560/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o b/electic_streaming2560/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o Binary files differnew file mode 100644 index 0000000..ea6ef49 --- /dev/null +++ b/electic_streaming2560/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o diff --git a/electic_streaming2560/obj/Release/main.o b/electic_streaming2560/obj/Release/main.o Binary files differnew file mode 100644 index 0000000..17796a5 --- /dev/null +++ b/electic_streaming2560/obj/Release/main.o diff --git a/electic_streaming2560/obj/Release/uart.o b/electic_streaming2560/obj/Release/uart.o Binary files differnew file mode 100644 index 0000000..6401727 --- /dev/null +++ b/electic_streaming2560/obj/Release/uart.o diff --git a/electic_streaming2560/uart.c b/electic_streaming2560/uart.c new file mode 100644 index 0000000..6034070 --- /dev/null +++ b/electic_streaming2560/uart.c @@ -0,0 +1,651 @@ +/*************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.c,v 1.6.2.2 2009/11/29 08:56:12 Peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4.6 or higher
+Hardware: any AVR with built-in UART,
+License: GNU General Public License
+
+DESCRIPTION:
+ An interrupt is generated when the UART has finished transmitting or
+ receiving a byte. The interrupt handling routines use circular buffers
+ for buffering received and transmitted data.
+
+ The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE variables define
+ the buffer size in bytes. Note that these variables must be a
+ power of 2.
+
+USAGE:
+ Refere to the header file uart.h for a description of the routines.
+ See also example test_uart.c.
+
+NOTES:
+ Based on Atmel Application Note AVR306
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+*************************************************************************/
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+#include "uart.h"
+
+
+/*
+ * constants and macros
+ */
+
+/* size of RX/TX buffers */
+#define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1)
+#define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1)
+
+#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK )
+#error RX buffer size is not a power of 2
+#endif
+#if ( UART_TX_BUFFER_SIZE & UART_TX_BUFFER_MASK )
+#error TX buffer size is not a power of 2
+#endif
+
+#if defined(__AVR_AT90S2313__) \
+ || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \
+ || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \
+ || defined(__AVR_ATmega103__)
+ /* old AVR classic or ATmega103 with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS USR
+ #define UART0_CONTROL UCR
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__)
+ /* old AVR classic with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \
+ || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) \
+ || defined(__AVR_ATmega323__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega163__)
+ /* ATmega163 with one UART */
+ #define ATMEGA_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega162__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_UART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_UART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_UART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega161__)
+ /* ATmega with UART */
+ #error "AVR ATmega161 currently not supported by this libaray !"
+#elif defined(__AVR_ATmega169__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATtiny2313__)
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RX
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_UDRE
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega329__) ||defined(__AVR_ATmega3290__) ||\
+ defined(__AVR_ATmega649__) ||defined(__AVR_ATmega6490__) ||\
+ defined(__AVR_ATmega325__) ||defined(__AVR_ATmega3250__) ||\
+ defined(__AVR_ATmega645__) ||defined(__AVR_ATmega6450__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega640__)
+/* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega644__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega644P__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#else
+ #error "no UART definition for MCU available"
+#endif
+
+
+/*
+ * module global variables
+ */
+static volatile unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART_TxHead;
+static volatile unsigned char UART_TxTail;
+static volatile unsigned char UART_RxHead;
+static volatile unsigned char UART_RxTail;
+static volatile unsigned char UART_LastRxError;
+
+#if defined( ATMEGA_USART1 )
+static volatile unsigned char UART1_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART1_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART1_TxHead;
+static volatile unsigned char UART1_TxTail;
+static volatile unsigned char UART1_RxHead;
+static volatile unsigned char UART1_RxTail;
+static volatile unsigned char UART1_LastRxError;
+#endif
+
+
+
+SIGNAL(UART0_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART Receive Complete interrupt
+Purpose: called when the UART has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART0_STATUS;
+ data = UART0_DATA;
+
+ /* */
+#if defined( AT90_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART0 )
+ lastRxError = (usr & (_BV(FE0)|_BV(DOR0)) );
+#elif defined ( ATMEGA_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#endif
+
+ /* calculate buffer index */
+ tmphead = ( UART_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART_RxHead = tmphead;
+ /* store received data in buffer */
+ UART_RxBuf[tmphead] = data;
+ }
+ UART_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART0_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART Data Register Empty interrupt
+Purpose: called when the UART is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART_TxHead != UART_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART0_CONTROL &= ~_BV(UART0_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart_init()
+Purpose: initialize UART and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart_init(unsigned int baudrate)
+{
+ UART_TxHead = 0;
+ UART_TxTail = 0;
+ UART_RxHead = 0;
+ UART_RxTail = 0;
+
+#if defined( AT90_UART )
+ /* set baud rate */
+ UBRR = (unsigned char)baudrate;
+
+ /* enable UART receiver and transmmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
+
+#elif defined (ATMEGA_USART)
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRH = (unsigned char)(baudrate>>8);
+ UBRRL = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL
+ UCSRC = (1<<URSEL)|(3<<UCSZ0);
+ #else
+ UCSRC = (3<<UCSZ0);
+ #endif
+
+#elif defined (ATMEGA_USART0 )
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X0); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR0H = (unsigned char)(baudrate>>8);
+ UBRR0L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL0
+ UCSR0C = (1<<URSEL0)|(3<<UCSZ00);
+ #else
+ UCSR0C = (3<<UCSZ00);
+ #endif
+
+#elif defined ( ATMEGA_UART )
+ /* set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRHI = (unsigned char)(baudrate>>8);
+ UBRR = (unsigned char) baudrate;
+
+ /* Enable UART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+#endif
+
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART_RxHead == UART_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART_RxBuf[tmptail];
+
+ return (UART_LastRxError << 8) + data;
+
+}/* uart_getc */
+
+
+/*************************************************************************
+Function: uart_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART_TxBuf[tmphead] = data;
+ UART_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART0_CONTROL |= _BV(UART0_UDRIE);
+
+}/* uart_putc */
+
+
+/*************************************************************************
+Function: uart_puts()
+Purpose: transmit string to UART
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts(const char *s )
+{
+ while (*s)
+ uart_putc(*s++);
+
+}/* uart_puts */
+
+
+/*************************************************************************
+Function: uart_puts_p()
+Purpose: transmit string from program memory to UART
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart_putc(c);
+
+}/* uart_puts_p */
+
+
+/*
+ * these functions are only for ATmegas with two USART
+ */
+#if defined( ATMEGA_USART1 )
+
+SIGNAL(UART1_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART1 Receive Complete interrupt
+Purpose: called when the UART1 has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART1_STATUS;
+ data = UART1_DATA;
+
+ /* */
+ lastRxError = (usr & (_BV(FE1)|_BV(DOR1)) );
+
+ /* calculate buffer index */
+ tmphead = ( UART1_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART1_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART1_RxHead = tmphead;
+ /* store received data in buffer */
+ UART1_RxBuf[tmphead] = data;
+ }
+ UART1_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART1_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART1 Data Register Empty interrupt
+Purpose: called when the UART1 is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART1_TxHead != UART1_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART1_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART1_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART1_CONTROL &= ~_BV(UART1_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart1_init()
+Purpose: initialize UART1 and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart1_init(unsigned int baudrate)
+{
+ UART1_TxHead = 0;
+ UART1_TxTail = 0;
+ UART1_RxHead = 0;
+ UART1_RxTail = 0;
+
+
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART1_STATUS = (1<<U2X1); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR1H = (unsigned char)(baudrate>>8);
+ UBRR1L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART1_CONTROL = _BV(RXCIE1)|(1<<RXEN1)|(1<<TXEN1);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL1
+ UCSR1C = (1<<URSEL1)|(3<<UCSZ10);
+ #else
+ UCSR1C = (3<<UCSZ10);
+ #endif
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart1_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart1_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART1_RxHead == UART1_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART1_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART1_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART1_RxBuf[tmptail];
+
+ return (UART1_LastRxError << 8) + data;
+
+}/* uart1_getc */
+
+
+/*************************************************************************
+Function: uart1_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART1_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART1_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART1_TxBuf[tmphead] = data;
+ UART1_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART1_CONTROL |= _BV(UART1_UDRIE);
+
+}/* uart1_putc */
+
+
+/*************************************************************************
+Function: uart1_puts()
+Purpose: transmit string to UART1
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts(const char *s )
+{
+ while (*s)
+ uart1_putc(*s++);
+
+}/* uart1_puts */
+
+
+/*************************************************************************
+Function: uart1_puts_p()
+Purpose: transmit string from program memory to UART1
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart1_putc(c);
+
+}/* uart1_puts_p */
+
+
+#endif
diff --git a/electic_streaming2560/uart.h b/electic_streaming2560/uart.h new file mode 100644 index 0000000..579c77d --- /dev/null +++ b/electic_streaming2560/uart.h @@ -0,0 +1,195 @@ +#ifndef UART_H
+#define UART_H
+/************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.h,v 1.8.2.1 2007/07/01 11:14:38 peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4
+Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz
+License: GNU General Public License
+Usage: see Doxygen manual
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+************************************************************************/
+
+/**
+ * @defgroup pfleury_uart UART Library
+ * @code #include <uart.h> @endcode
+ *
+ * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers.
+ *
+ * This library can be used to transmit and receive data through the built in UART.
+ *
+ * An interrupt is generated when the UART has finished transmitting or
+ * receiving a byte. The interrupt handling routines use circular buffers
+ * for buffering received and transmitted data.
+ *
+ * The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define
+ * the size of the circular buffers in bytes. Note that these constants must be a power of 2.
+ * You may need to adapt this constants to your target and your application by adding
+ * CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile.
+ *
+ * @note Based on Atmel Application Note AVR306
+ * @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury
+ */
+
+/**@{*/
+
+
+#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
+#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
+#endif
+
+
+/*
+** constants and macros
+*/
+
+/** @brief UART Baudrate Expression
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)
+
+/** @brief UART Baudrate Expression for ATmega double speed mode
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000)
+
+
+/** Size of the circular receive buffer, must be power of 2 */
+#ifndef UART_RX_BUFFER_SIZE
+#define UART_RX_BUFFER_SIZE 32
+#endif
+/** Size of the circular transmit buffer, must be power of 2 */
+#ifndef UART_TX_BUFFER_SIZE
+#define UART_TX_BUFFER_SIZE 32
+#endif
+
+/* test if the size of the circular buffers fits into SRAM */
+#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) )
+#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM"
+#endif
+
+/*
+** high byte error return code of uart_getc()
+*/
+#define UART_FRAME_ERROR 0x0800 /* Framing Error by UART */
+#define UART_OVERRUN_ERROR 0x0400 /* Overrun condition by UART */
+#define UART_BUFFER_OVERFLOW 0x0200 /* receive ringbuffer overflow */
+#define UART_NO_DATA 0x0100 /* no receive data available */
+
+
+/*
+** function prototypes
+*/
+
+/**
+ @brief Initialize UART and set baudrate
+ @param baudrate Specify baudrate using macro UART_BAUD_SELECT()
+ @return none
+*/
+extern void uart_init(unsigned int baudrate);
+
+
+/**
+ * @brief Get received byte from ringbuffer
+ *
+ * Returns in the lower byte the received character and in the
+ * higher byte the last receive error.
+ * UART_NO_DATA is returned when no data is available.
+ *
+ * @param void
+ * @return lower byte: received byte from ringbuffer
+ * @return higher byte: last receive status
+ * - \b 0 successfully received data from UART
+ * - \b UART_NO_DATA
+ * <br>no receive data available
+ * - \b UART_BUFFER_OVERFLOW
+ * <br>Receive ringbuffer overflow.
+ * We are not reading the receive buffer fast enough,
+ * one or more received character have been dropped
+ * - \b UART_OVERRUN_ERROR
+ * <br>Overrun condition by UART.
+ * A character already present in the UART UDR register was
+ * not read by the interrupt handler before the next character arrived,
+ * one or more received characters have been dropped.
+ * - \b UART_FRAME_ERROR
+ * <br>Framing Error by UART
+ */
+extern unsigned int uart_getc(void);
+
+
+/**
+ * @brief Put byte to ringbuffer for transmitting via UART
+ * @param data byte to be transmitted
+ * @return none
+ */
+extern void uart_putc(unsigned char data);
+
+
+/**
+ * @brief Put string to ringbuffer for transmitting via UART
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s string to be transmitted
+ * @return none
+ */
+extern void uart_puts(const char *s );
+
+
+/**
+ * @brief Put string from program memory to ringbuffer for transmitting via UART.
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s program memory string to be transmitted
+ * @return none
+ * @see uart_puts_P
+ */
+extern void uart_puts_p(const char *s );
+
+/**
+ * @brief Macro to automatically put a string constant into program memory
+ */
+#define uart_puts_P(__s) uart_puts_p(PSTR(__s))
+
+
+
+/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */
+extern void uart1_init(unsigned int baudrate);
+/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */
+extern unsigned int uart1_getc(void);
+/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */
+extern void uart1_putc(unsigned char data);
+/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */
+extern void uart1_puts(const char *s );
+/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */
+extern void uart1_puts_p(const char *s );
+/** @brief Macro to automatically put a string constant into program memory */
+#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s))
+
+/**@}*/
+
+
+#endif +// UART_H
+
diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf b/electic_streaming328p/bin/Debug/electic_streaming.elf Binary files differnew file mode 100755 index 0000000..3006415 --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.eep.hex b/electic_streaming328p/bin/Debug/electic_streaming.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.hex b/electic_streaming328p/bin/Debug/electic_streaming.elf.hex new file mode 100644 index 0000000..30ee594 --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.hex @@ -0,0 +1,364 @@ +:100000000C9444000C946C000C946C000C946C00E8
+:100010000C946C000C946C000C946C000C946C00B0
+:100020000C946C000C946C000C946C000C946E009E
+:100030000C946C000C946C000C946C000C946C0090
+:100040000C946C000C946C000C94D9030C946C0010
+:100050000C946C000C946C000C946C000C946C0070
+:100060000C946C000C946C0005A84CCDB2D44EB925
+:100070003836A9020C50B9918688083CA6AAAA2A4B
+:10008000BE000000803FB70111241FBECFEFD8E0B3
+:10009000DEBFCDBF11E0A0E0B1E0EEE7F6E102C0C7
+:1000A00005900D92A232B107D9F713E0A2E2B1E0B8
+:1000B00001C01D92AC3AB107E1F710E0C8E8D0E00A
+:1000C00004C02297FE010E94A409C638D107C9F7CF
+:1000D0000E945C010C943D0B0C9400001F920F9247
+:1000E0000FB60F9211242F933F934F935F936F930B
+:1000F0007F938F939F93AF93BF93EF93FF93DF9380
+:10010000CF9300D0CDB7DEB7A5E2B0E0E5E2F0E0F6
+:10011000908180E289278C931A82198220C0809175
+:10012000240390912503FC01EE5DFE4F208186E2C1
+:1001300093E0622F0E94BE018091240390912503D9
+:10014000019620E032E0B9010E940709909325034F
+:100150008093240389819A8101969A838983898176
+:100160009A8121E080349207D4F286E293E060E045
+:100170000E94BE010F900F90CF91DF91FF91EF9100
+:10018000BF91AF919F918F917F916F915F914F91AF
+:100190003F912F910F900FBE0F901F901895DF93F6
+:1001A000CF93CDB7DEB764970FB6F894DEBF0FBE1E
+:1001B000CDBF88ED9FE0A9E4B0E4898B9A8BAB8B2F
+:1001C000BC8B80E090E0A0E0B0E08D879E87AF8799
+:1001D000B88B29893A894B895C89CA01B9010E9487
+:1001E0009305DC01CB01BC01CD0120E030E040E013
+:1001F00054E40E94BA06DC01CB018D839E83AF8359
+:10020000B8871A82198248C08D859E85AF85B889C6
+:10021000BC01CD010E94A809DC01CB01BC01CD01CC
+:1002200020E030E04EEF52E40E94C005DC01CB013B
+:1002300089879A87AB87BC876D857E858F859889EE
+:100240002D813E814F8158850E949305DC01CB01B1
+:100250008D879E87AF87B88B69857A858B859C85CE
+:1002600020E030E040E053E40E949305DC01CB0144
+:10027000BC01CD010E946607DC01CB019C838B830E
+:1002800089819A812B81FC01EE5DFE4F208389815B
+:100290009A8101969A83898389819A8122E08030AC
+:1002A00092070CF4B1CF64960FB6F894DEBF0FBE80
+:1002B000CDBFCF91DF910895DF93CF9300D0CDB71D
+:1002C000DEB70E94CF0086E293E040E052EC61E0AE
+:1002D00070E00E94CB01A4E2B0E0E4E2F0E08081B3
+:1002E00080628C93E5E2F0E080E28083A1E8B0E0F8
+:1002F000E1E8F0E0808188608C93AFE6B0E0EFE663
+:10030000F0E0808182608C93E8E8F0E086E891E09C
+:1003100091838083789486E293E00E94C8011A82D8
+:100320001816190614F481E08A838A81882399F3C8
+:10033000A5E2B0E0E5E2F0E0908180E289278C93CD
+:1003400086E293E00E94C50189838981813619F78D
+:1003500086E293E020E031E0B9010E941F02A1E8AB
+:10036000B0E0E1E8F0E0808185608C93D4CF87E154
+:1003700091E090932703809326030895862F0E948F
+:10038000980308950E94D00308950E94B103089530
+:100390000E94A0030895CB01BA010E945F03089553
+:1003A000DC01ED91FC910190F081E02D099508951B
+:1003B000DC01ED91FC910190F081E02D099508950B
+:1003C0000F931F93CF93DF938C01EB0109C021960C
+:1003D000D801ED91FC910190F081E02DC8010995C3
+:1003E00068816623A1F7DF91CF911F910F91089546
+:1003F0000F931F938C01DC01ED91FC910190F08132
+:10040000E02D6DE00995D801ED91FC910190F0810E
+:10041000E02D6AE0C80109951F910F9108950F938F
+:100420001F938C01DC01ED91FC910190F081E02D96
+:100430000995C8010E94F8011F910F9108950F932B
+:100440001F938C010E94E001C8010E94F8011F91D6
+:100450000F9108950F931F938C01DC01ED91FC9196
+:100460000190F081E02D0995C8010E94F8011F91CB
+:100470000F9108952F923F924F925F926F927F92C9
+:100480008F929F92AF92BF92CF92DF92EF92FF92A4
+:100490000F931F93DF93CF93CDB7DEB7A0970FB61F
+:1004A000F894DEBF0FBECDBF1C016A017B01411570
+:1004B00051056105710549F4DC01ED91FC91019054
+:1004C000F081E02D60E3099554C0882499245401FB
+:1004D000422E55246624772401E010E00C0F1D1FE6
+:1004E000080D191DC701B601A30192010E941A0946
+:1004F000F80160830894811C911CA11CB11CC701E8
+:10050000B601A30192010E941A09C901DA016C0126
+:100510007D01C114D104E104F104F1F681E0E82E7B
+:10052000F12CEC0EFD1EE80CF91C3E010894611C38
+:10053000711CD501C4010197A109B1096C01C8184A
+:10054000D90814C0F601EE0DFF1D60816A3010F469
+:10055000605D01C0695CD101ED91FC910190F08179
+:10056000E02DC10109950894E108F1086E147F049B
+:1005700049F7A0960FB6F894DEBF0FBECDBFCF915E
+:10058000DF911F910F91FF90EF90DF90CF90BF9080
+:10059000AF909F908F907F906F905F904F903F9023
+:1005A0002F9008952AE00E943A0208950F931F9316
+:1005B0008C010E94D202C8010E94F8011F910F9184
+:1005C0000895AB0160E070E00E94D20208950F939D
+:1005D0001F938C01AB0160E070E00E94D202C80161
+:1005E0000E94F8011F910F910895EF92FF920F93CF
+:1005F0001F93CF93DF93EC017A018B0177FF0FC03C
+:10060000E881F9810190F081E02D6DE20995109566
+:100610000095F094E094E11CF11C011D111D2AE0ED
+:10062000B801A701CE010E943A02DF91CF911F913C
+:100630000F91FF90EF9008950F931F938C010E94EC
+:10064000F502C8010E94F8011F910F910895AB01B6
+:10065000662757FD6095762F0E94F50208950F9347
+:100660001F938C01AB01662757FD6095762F0E9482
+:10067000F502C8010E94F8011F910F910895DC0155
+:100680002115310541F4ED91FC910190F081E02DAF
+:10069000642F099508952A30310519F40E94F50256
+:1006A00008950E943A0208950F931F938C010E94AF
+:1006B0003F03C8010E94F8011F910F910895EF9226
+:1006C000FF920F931F937B018C0122E030E040E00A
+:1006D00050E00E943C09205C3D4B404F5F4FCA01F7
+:1006E000B901A80197010E943C09C901DA010197EB
+:1006F000A109B109292F3A2F4B2F552747FD5A95AC
+:100700000196A11DB11D2093C50081508093C400A6
+:10071000E1ECF0E08081806180838081886080836B
+:100720008081806880831F910F91FF90EF900895E2
+:10073000982F8091C00085FFFCCF9093C60008954C
+:10074000809128039091290380589F4F20912A037C
+:1007500030912B03821B930B60E870E00E94070925
+:10076000089540912A0350912B0380912803909182
+:1007700029038417950719F42FEF3FEF0FC0FA01F3
+:10078000E45DFC4F2081CA01019660E870E00E94A0
+:10079000070990932B0380932A0330E0C901089541
+:1007A00080912A0390912B0390932903809328032F
+:1007B00008951F920F920FB60F9211242F933F931B
+:1007C0004F935F936F937F938F939F93AF93BF9359
+:1007D000EF93FF934091C600E0912803F091290325
+:1007E000CF01019660E870E00E9407099C018091AA
+:1007F0002A0390912B032817390739F0E45DFC4F49
+:1008000040833093290320932803FF91EF91BF91F8
+:10081000AF919F918F917F916F915F914F913F9198
+:100820002F910F900FBE0F901F901895A0E0B0E091
+:10083000ECE1F4E00C946B09DC012B01FA019C91D2
+:10084000923008F439C1EB018881823008F433C159
+:10085000943069F4843009F02FC111969C9111975E
+:100860008981981709F428C1A9E1B1E025C1843034
+:1008700009F421C18230A9F4923009F01DC19A0116
+:10088000AD0188E0EA010990AE01E90109929E01FB
+:100890008150C1F7E201898111969C91892381835E
+:1008A00008C1923009F407C112962D903C9013971D
+:1008B000EB018A819B811496AD90BD90CD90DC9028
+:1008C0001797EC80FD800E811F819101281B390B49
+:1008D000B90137FF04C066277727621B730B6032AC
+:1008E00071050CF061C0121613066CF53701480152
+:1008F000062E04C096948794779467940A94D2F74E
+:1009000021E030E040E050E004C0220F331F441FDC
+:10091000551F6A95D2F721503040404050402E215B
+:100920003F2140235123211531054105510521F077
+:1009300021E030E040E050E079018A01E628F72824
+:10094000082919293CC0232BD1F1260E371E350169
+:100950004601062E04C096948794779467940A946F
+:10096000D2F721E030E040E050E004C0220F331F16
+:10097000441F551F6A95D2F72150304040405040E7
+:100980002A213B214C215D212115310541055105CD
+:1009900021F021E030E040E050E059016A01A62852
+:1009A000B728C828D9280BC0821593052CF01C0144
+:1009B000AA24BB24650103C0EE24FF2487011196FD
+:1009C0009C91D20111968C91981709F445C09923F6
+:1009D00039F0A80197012A193B094C095D0906C0A5
+:1009E000A60195012E193F09400B510B57FD08C078
+:1009F00011823382228224833583468357831DC02C
+:100A000081E081833382228288279927DC01821B3F
+:100A1000930BA40BB50B84839583A683B7830DC07A
+:100A2000220F331F441F551F24833583468357836A
+:100A300082819381019793838283248135814681CA
+:100A40005781DA01C9010197A109B1098F5F9F4F51
+:100A5000AF4FBF4328F30BC0918333822282EA0C4D
+:100A6000FB1C0C1D1D1DE482F5820683178383E0A9
+:100A70008083248135814681578157FF1AC0C9017F
+:100A8000AA2797FDA095BA2F81709070A070B070C2
+:100A90005695479537952795822B932BA42BB52BED
+:100AA00084839583A683B783828193810196938300
+:100AB0008283DF0101C0D201CD01CDB7DEB7E2E113
+:100AC0000C948709A0E2B0E0E8E6F5E00C94770921
+:100AD00069837A838B839C832D833E834F835887DE
+:100AE000E9E0EE2EF12CEC0EFD1ECE010196B701D1
+:100AF0000E948F088E010F5E1F4FCE010596B80130
+:100B00000E948F088A8991E089278A8BC701B801E2
+:100B1000AE01475E5F4F0E9416040E94BA07A0967E
+:100B2000E6E00C949309A0E2B0E0E9E9F5E00C946A
+:100B3000770969837A838B839C832D833E834F83DC
+:100B40005887F9E0EF2EF12CEC0EFD1ECE01019638
+:100B5000B7010E948F088E010F5E1F4FCE010596D0
+:100B6000B8010E948F08C701B801AE01475E5F4F10
+:100B70000E9416040E94BA07A096E6E00C9493091E
+:100B8000A0E2B0E0E6ECF5E00C946B0969837A83AF
+:100B90008B839C832D833E834F835887CE010196A0
+:100BA000BE01675F7F4F0E948F08CE010596BE0190
+:100BB0006F5E7F4F0E948F089985923088F08989F7
+:100BC0008230C8F0943019F4823051F404C084307B
+:100BD00029F4923081F489E191E0C6C0923049F461
+:100BE00020E09A858A89981321E02A87CE01099608
+:100BF000BBC0823049F420E09A858A89981321E0AD
+:100C00002A8BCE014196B0C02D843E844F845888F3
+:100C10006D887E888F88988CEE24FF248701AA2413
+:100C2000BB24650140E050E060E070E0E0E0F0E00F
+:100C3000C10181709070892BE9F0E60CF71C081D4A
+:100C4000191D9A01AB012A0D3B1D4C1D5D1D80E055
+:100C500090E0A0E0B0E0E614F7040805190520F4E0
+:100C600081E090E0A0E0B0E0BA01A901480F591F6F
+:100C70006A1F7B1FAA0CBB1CCC1CDD1C97FE08C086
+:100C800081E090E0A0E0B0E0A82AB92ACA2ADB2AD5
+:100C90003196E032F10549F0660C771C881C991CEE
+:100CA0005694479437942794C3CFFA85EA892B89C1
+:100CB0003C898B859C85280F391F2E5F3F4F17C0BD
+:100CC000CA0181709070892B61F016950795F79491
+:100CD000E79480E090E0A0E0B0E8E82AF92A0A2B47
+:100CE0001B2B76956795579547952F5F3F4F77FD5F
+:100CF000E7CF0CC0440F551F661F771F17FD4160DB
+:100D0000EE0CFF1C001F111F21503040403090E0BE
+:100D1000590790E0690790E4790760F32B8F3C8FC7
+:100D2000DB01CA018F779070A070B070803491059C
+:100D3000A105B10561F447FD0AC0E114F104010504
+:100D4000110529F0405C5F4F6F4F7F4F40781A8E3E
+:100D5000FE1711F081E08A8F4D8F5E8F6F8F78A321
+:100D600083E0898FCE0149960E94BA07A096E2E1FE
+:100D70000C948709A8E1B0E0E0ECF6E00C9473096C
+:100D800069837A838B839C832D833E834F8358872B
+:100D9000B9E0EB2EF12CEC0EFD1ECE010196B70151
+:100DA0000E948F088E010F5E1F4FCE010596B8017D
+:100DB0000E948F082985223008F47EC0398932309C
+:100DC00010F4B8017CC08A859A8989278A872430E3
+:100DD00011F0223031F4231709F06EC069E171E09F
+:100DE0006EC0343039F41D861E861F86188A1C8614
+:100DF0001B8604C0323021F484E08987B7015FC0CC
+:100E00002B853C858B899C89281B390B3C872B873C
+:100E1000ED84FE840F851889AD88BE88CF88D88C74
+:100E2000EA14FB040C051D0540F4EE0CFF1C001F2A
+:100E3000111F215030403C872B8720E030E040E0FC
+:100E400050E080E090E0A0E0B0E460E070E0EA1400
+:100E5000FB040C051D0540F0282B392B4A2B5B2B7E
+:100E6000EA18FB080C091D09B695A7959795879573
+:100E7000EE0CFF1C001F111F6F5F7F4F6F3171055C
+:100E800031F7DA01C9018F779070A070B0708034AB
+:100E90009105A105B10561F427FD0AC0E114F10433
+:100EA0000105110529F0205C3F4F4F4F5F4F20781F
+:100EB0002D873E874F87588BBE01675F7F4FCB01E1
+:100EC0000E94BA076896EAE00C948F09ACE0B0E0A3
+:100ED000ECE6F7E00C947B0969837A838B839C832F
+:100EE000CE010196BE016B5F7F4F0E948F088D81FE
+:100EF000823061F1823050F1843021F48E81882378
+:100F000051F12EC02F81388537FD20C06E812F31E1
+:100F100031051CF06623F9F023C08EE190E0821BBE
+:100F2000930B29853A854B855C8504C0569547957A
+:100F3000379527958A95D2F76623B1F0509540955D
+:100F4000309521953F4F4F4F5F4F0EC020E030E06E
+:100F500040E050E009C02FEF3FEF4FEF5FE704C0E4
+:100F600020E030E040E050E8B901CA012C96E2E010
+:100F70000C949709DF92EF92FF920F931F93FC015D
+:100F8000E480F58006811781D1808081823048F429
+:100F900080E090E0A0E1B0E0E82AF92A0A2B1B2BC0
+:100FA000A5C0843009F49FC0823021F4EE24FF24D0
+:100FB000870105C0E114F1040105110519F4E0E011
+:100FC000F0E096C0628173819FEF623879070CF080
+:100FD0005BC022E83FEF261B370B2A3131052CF08E
+:100FE00020E030E040E050E02AC0B801A701022E26
+:100FF00004C076956795579547950A94D2F781E096
+:1010000090E0A0E0B0E004C0880F991FAA1FBB1FAA
+:101010002A95D2F70197A109B1098E219F21A0231A
+:10102000B1230097A105B10521F081E090E0A0E097
+:10103000B0E09A01AB01282B392B4A2B5B2BDA014C
+:10104000C9018F779070A070B07080349105A105B0
+:10105000B10539F427FF09C0205C3F4F4F4F5F4F68
+:1010600004C0215C3F4F4F4F5F4FE0E0F0E0203085
+:10107000A0E03A07A0E04A07A0E45A0710F0E1E038
+:10108000F0E079018A0127C06038710564F5FB0141
+:10109000E158FF4FD801C7018F779070A070B070F2
+:1010A00080349105A105B10539F4E7FE0DC080E457
+:1010B00090E0A0E0B0E004C08FE390E0A0E0B0E0FA
+:1010C000E80EF91E0A1F1B1F17FF05C0169507958E
+:1010D000F794E794319687E016950795F794E7948F
+:1010E0008A95D1F705C0EE24FF248701EFEFF0E0E9
+:1010F0006E2F679566276795902F9F77D794DD248D
+:10110000D7948E2F8695492F462B582F5D29B701EE
+:10111000CA011F910F91FF90EF90DF900895FC019D
+:10112000DB01408151812281622F6F7770E0221FA5
+:101130002227221F9381892F880F822B282F30E0AE
+:10114000991F9927991F11969C9311972115310585
+:10115000A9F5411551056105710511F482E037C00B
+:1011600082E89FEF13969C938E9312979A01AB019E
+:1011700067E0220F331F441F551F6A95D1F783E0A4
+:101180008C930DC0220F331F441F551F12968D9153
+:101190009C911397019713969C938E9312972030EE
+:1011A00080E0380780E0480780E4580758F3149639
+:1011B0002D933D934D935C93179708952F3F3105E1
+:1011C00079F4411551056105710519F484E08C939A
+:1011D000089564FF03C081E08C9312C01C9210C07C
+:1011E0002F57304013963C932E93129783E08C93A5
+:1011F00087E0440F551F661F771F8A95D1F77064EB
+:1012000014964D935D936D937C931797089597FB78
+:10121000092E07260AD077FD04D049D006D0002039
+:101220001AF4709561957F4F0895F6F79095819522
+:101230009F4F0895A1E21A2EAA1BBB1BFD010DC0F2
+:10124000AA1FBB1FEE1FFF1FA217B307E407F50776
+:1012500020F0A21BB30BE40BF50B661F771F881F52
+:10126000991F1A9469F760957095809590959B01E8
+:10127000AC01BD01CF01089597FB092E05260ED0C4
+:1012800057FD04D0D7DF0AD0001C38F450954095A4
+:10129000309521953F4F4F4F5F4F0895F6F790954A
+:1012A0008095709561957F4F8F4F9F4F0895AA1B32
+:1012B000BB1B51E107C0AA1FBB1FA617B70710F041
+:1012C000A61BB70B881F991F5A95A9F78095909573
+:1012D000BC01CD0108952F923F924F925F926F9281
+:1012E0007F928F929F92AF92BF92CF92DF92EF92B6
+:1012F000FF920F931F93CF93DF93CDB7DEB7CA1B37
+:10130000DB0B0FB6F894DEBF0FBECDBF09942A8861
+:10131000398848885F846E847D848C849B84AA8409
+:10132000B984C884DF80EE80FD800C811B81AA8196
+:10133000B981CE0FD11D0FB6F894DEBF0FBECDBF61
+:10134000ED010895EE0FFF1F0590F491E02D099433
+:101350009F9305D00F9007FCEE5F28C0CEC03FD012
+:10136000E8F3E894E0E0BB279F57F0F02AED3FE078
+:1013700049EC06C0EE0FBB0F661F771F881F28F0D1
+:10138000B23A62077307840728F0B25A620B730BF4
+:10139000840BE3959A9572F7803830F49A95BB0FD9
+:1013A000661F771F881FD2F790489BC0EF93E0FF1E
+:1013B00006C0A2EA2AED3FE049EC5FEB37D0BFD090
+:1013C0000F90039401FC9058E8E6F0E099C057FDB7
+:1013D0009058440F551F59F05F3F71F04795880FA3
+:1013E00097FB991F61F09F3F79F08795089512163A
+:1013F00013061406551FF2CF4695F1DF08C01616E6
+:1014000017061806991FF1CF869571056105089496
+:10141000089587D030F08CD020F031F49F3F11F444
+:101420001EF46BC00EF4E095E7FB53C0E92FCFDF4D
+:1014300080F3BA17620773078407950718F071F4F1
+:101440009EF58EC00EF4E0950B2EBA2FA02D0B0149
+:10145000B90190010C01CA01A0011124FF27591BF9
+:1014600099F0593F50F4503E68F11A16F040A22FFF
+:10147000232F342F4427585FF3CF46953795279570
+:10148000A795F0405395C9F77EF41F16BA0B620B6F
+:10149000730B840BBAF09150A1F0FF0FBB1F661FB6
+:1014A000771F881FC2F70EC0BA0F621F731F841FF9
+:1014B00048F4879577956795B795F7959E3F08F01F
+:1014C000B3CF9395880F08F09927EE0F97958795DE
+:1014D000089597F99F6780E870E060E008959F3F66
+:1014E00031F0915020F4879577956795B795880FDF
+:1014F000911D9695879597F908959FEF80EC089533
+:101500009F938F937F936F93FF93EF939B01AC0116
+:1015100037DBEF91FF912BD02F913F914F915F914E
+:101520002FCB00240A9416161706180609060895EC
+:1015300000240A9412161306140605060895092EAF
+:101540000394000C11F4882352F0BB0F40F4BF2B1E
+:1015500011F460FF04C06F5F7F4F8F4F9F4F08955E
+:10156000E894BB2766277727CB0197F90895DF9387
+:10157000CF931F930F93FF92EF92DF927B018C0129
+:10158000689405C0DA2EEF0121D0FE01E894A59100
+:101590002591359145915591AEF3EF0147DFFE015D
+:1015A0009701A801DA9479F7DF90EF90FF900F91FF
+:1015B0001F91CF91DF910895B4DF28F0B9DF18F0C3
+:1015C000952309F086CF99CF1124CBCF00DFA0F36C
+:1015D000959FD1F3950F50E0551F629FF001729FC8
+:1015E000BB27F00DB11D639FAA27F00DB11DAA1FE7
+:1015F000649F6627B00DA11D661F829F2227B00D34
+:10160000A11D621F739FB00DA11D621F839FA00DBE
+:10161000611D221F749F3327A00D611D231F849F0E
+:10162000600D211D822F762F6A2F11249F57504065
+:101630008AF0E1F088234AF0EE0FFF1FBB1F661F00
+:10164000771F881F91505040A9F79E3F510570F0B9
+:1016500040CF87CF5F3FECF3983EDCF386957795DC
+:101660006795B795F795E7959F5FC1F7FE2B880FB4
+:0E167000911D9695879597F90895F894FFCFF0
+:10167E0057656C636F6D6520746F20656C65637460
+:10168E0069630000000000BE0100000000000000C1
+:02169E0000004A
+:00000001FF
diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.lss b/electic_streaming328p/bin/Debug/electic_streaming.elf.lss new file mode 100644 index 0000000..922bd60 --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.lss @@ -0,0 +1,3038 @@ + +bin/Debug/electic_streaming.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000022 00800100 0000167e 00001712 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 0000167e 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 0000028a 00800122 00800122 00001734 2**0 + ALLOC + 3 .stab 000023d0 00000000 00000000 00001734 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00001c16 00000000 00000000 00003b04 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_aranges 00000060 00000000 00000000 0000571a 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_pubnames 000002a7 00000000 00000000 0000577a 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_info 00000d0b 00000000 00000000 00005a21 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_abbrev 000003f7 00000000 00000000 0000672c 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_line 00000689 00000000 00000000 00006b23 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_frame 00000210 00000000 00000000 000071ac 2**2 + CONTENTS, READONLY, DEBUGGING + 11 .debug_str 00000420 00000000 00000000 000073bc 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_loc 0000075a 00000000 00000000 000077dc 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 44 00 jmp 0x88 ; 0x88 <__ctors_end> + 4: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 8: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 10: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 14: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 18: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 1c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 20: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 24: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 28: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 2c: 0c 94 6e 00 jmp 0xdc ; 0xdc <__vector_11> + 30: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 34: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 38: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 3c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 40: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 44: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 48: 0c 94 d9 03 jmp 0x7b2 ; 0x7b2 <__vector_18> + 4c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 50: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 54: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 58: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 5c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 60: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 64: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 68: 05 a8 ldd r0, Z+53 ; 0x35 + 6a: 4c cd rjmp .-1384 ; 0xfffffb04 <__eeprom_end+0xff7efb04> + 6c: b2 d4 rcall .+2404 ; 0x9d2 <__stack+0xd3> + 6e: 4e b9 out 0x0e, r20 ; 14 + 70: 38 36 cpi r19, 0x68 ; 104 + 72: a9 02 muls r26, r25 + 74: 0c 50 subi r16, 0x0C ; 12 + 76: b9 91 ld r27, Y+ + 78: 86 88 ldd r8, Z+22 ; 0x16 + 7a: 08 3c cpi r16, 0xC8 ; 200 + 7c: a6 aa std Z+54, r10 ; 0x36 + 7e: aa 2a or r10, r26 + 80: be 00 .word 0x00be ; ???? + 82: 00 00 nop + 84: 80 3f cpi r24, 0xF0 ; 240 + +00000086 <__ctors_start>: + 86: b7 01 movw r22, r14 + +00000088 <__ctors_end>: + 88: 11 24 eor r1, r1 + 8a: 1f be out 0x3f, r1 ; 63 + 8c: cf ef ldi r28, 0xFF ; 255 + 8e: d8 e0 ldi r29, 0x08 ; 8 + 90: de bf out 0x3e, r29 ; 62 + 92: cd bf out 0x3d, r28 ; 61 + +00000094 <__do_copy_data>: + 94: 11 e0 ldi r17, 0x01 ; 1 + 96: a0 e0 ldi r26, 0x00 ; 0 + 98: b1 e0 ldi r27, 0x01 ; 1 + 9a: ee e7 ldi r30, 0x7E ; 126 + 9c: f6 e1 ldi r31, 0x16 ; 22 + 9e: 02 c0 rjmp .+4 ; 0xa4 <.do_copy_data_start> + +000000a0 <.do_copy_data_loop>: + a0: 05 90 lpm r0, Z+ + a2: 0d 92 st X+, r0 + +000000a4 <.do_copy_data_start>: + a4: a2 32 cpi r26, 0x22 ; 34 + a6: b1 07 cpc r27, r17 + a8: d9 f7 brne .-10 ; 0xa0 <.do_copy_data_loop> + +000000aa <__do_clear_bss>: + aa: 13 e0 ldi r17, 0x03 ; 3 + ac: a2 e2 ldi r26, 0x22 ; 34 + ae: b1 e0 ldi r27, 0x01 ; 1 + b0: 01 c0 rjmp .+2 ; 0xb4 <.do_clear_bss_start> + +000000b2 <.do_clear_bss_loop>: + b2: 1d 92 st X+, r1 + +000000b4 <.do_clear_bss_start>: + b4: ac 3a cpi r26, 0xAC ; 172 + b6: b1 07 cpc r27, r17 + b8: e1 f7 brne .-8 ; 0xb2 <.do_clear_bss_loop> + +000000ba <__do_global_ctors>: + ba: 10 e0 ldi r17, 0x00 ; 0 + bc: c8 e8 ldi r28, 0x88 ; 136 + be: d0 e0 ldi r29, 0x00 ; 0 + c0: 04 c0 rjmp .+8 ; 0xca <.do_global_ctors_start> + +000000c2 <.do_global_ctors_loop>: + c2: 22 97 sbiw r28, 0x02 ; 2 + c4: fe 01 movw r30, r28 + c6: 0e 94 a4 09 call 0x1348 ; 0x1348 <__tablejump__> + +000000ca <.do_global_ctors_start>: + ca: c6 38 cpi r28, 0x86 ; 134 + cc: d1 07 cpc r29, r17 + ce: c9 f7 brne .-14 ; 0xc2 <.do_global_ctors_loop> + d0: 0e 94 5c 01 call 0x2b8 ; 0x2b8 <main> + d4: 0c 94 3d 0b jmp 0x167a ; 0x167a <_exit> + +000000d8 <__bad_interrupt>: + d8: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000dc <__vector_11>: + } + } + } +} + +ISR(TIMER1_COMPA_vect) + dc: 1f 92 push r1 + de: 0f 92 push r0 + e0: 0f b6 in r0, 0x3f ; 63 + e2: 0f 92 push r0 + e4: 11 24 eor r1, r1 + e6: 2f 93 push r18 + e8: 3f 93 push r19 + ea: 4f 93 push r20 + ec: 5f 93 push r21 + ee: 6f 93 push r22 + f0: 7f 93 push r23 + f2: 8f 93 push r24 + f4: 9f 93 push r25 + f6: af 93 push r26 + f8: bf 93 push r27 + fa: ef 93 push r30 + fc: ff 93 push r31 + fe: df 93 push r29 + 100: cf 93 push r28 + 102: 00 d0 rcall .+0 ; 0x104 <__vector_11+0x28> + 104: cd b7 in r28, 0x3d ; 61 + 106: de b7 in r29, 0x3e ; 62 +{ + //if (enabled) + PORTB ^= (1 << 5); + 108: a5 e2 ldi r26, 0x25 ; 37 + 10a: b0 e0 ldi r27, 0x00 ; 0 + 10c: e5 e2 ldi r30, 0x25 ; 37 + 10e: f0 e0 ldi r31, 0x00 ; 0 + 110: 90 81 ld r25, Z + 112: 80 e2 ldi r24, 0x20 ; 32 + 114: 89 27 eor r24, r25 + 116: 8c 93 st X, r24 + for (int i=0;i<PACKETSIZE;i++) { + 118: 1a 82 std Y+2, r1 ; 0x02 + 11a: 19 82 std Y+1, r1 ; 0x01 + 11c: 20 c0 rjmp .+64 ; 0x15e <__vector_11+0x82> + Serial.write(dd[sample]); + 11e: 80 91 24 03 lds r24, 0x0324 + 122: 90 91 25 03 lds r25, 0x0325 + 126: fc 01 movw r30, r24 + 128: ee 5d subi r30, 0xDE ; 222 + 12a: fe 4f sbci r31, 0xFE ; 254 + 12c: 20 81 ld r18, Z + 12e: 86 e2 ldi r24, 0x26 ; 38 + 130: 93 e0 ldi r25, 0x03 ; 3 + 132: 62 2f mov r22, r18 + 134: 0e 94 be 01 call 0x37c ; 0x37c <_ZN14HardwareSerial5writeEh> + sample=(sample+1)%SAMPLES; + 138: 80 91 24 03 lds r24, 0x0324 + 13c: 90 91 25 03 lds r25, 0x0325 + 140: 01 96 adiw r24, 0x01 ; 1 + 142: 20 e0 ldi r18, 0x00 ; 0 + 144: 32 e0 ldi r19, 0x02 ; 2 + 146: b9 01 movw r22, r18 + 148: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 14c: 90 93 25 03 sts 0x0325, r25 + 150: 80 93 24 03 sts 0x0324, r24 + +ISR(TIMER1_COMPA_vect) +{ + //if (enabled) + PORTB ^= (1 << 5); + for (int i=0;i<PACKETSIZE;i++) { + 154: 89 81 ldd r24, Y+1 ; 0x01 + 156: 9a 81 ldd r25, Y+2 ; 0x02 + 158: 01 96 adiw r24, 0x01 ; 1 + 15a: 9a 83 std Y+2, r25 ; 0x02 + 15c: 89 83 std Y+1, r24 ; 0x01 + 15e: 89 81 ldd r24, Y+1 ; 0x01 + 160: 9a 81 ldd r25, Y+2 ; 0x02 + 162: 21 e0 ldi r18, 0x01 ; 1 + 164: 80 34 cpi r24, 0x40 ; 64 + 166: 92 07 cpc r25, r18 + 168: d4 f2 brlt .-76 ; 0x11e <__vector_11+0x42> + Serial.write(dd[sample]); + sample=(sample+1)%SAMPLES; + } + Serial.write((byte)0); + 16a: 86 e2 ldi r24, 0x26 ; 38 + 16c: 93 e0 ldi r25, 0x03 ; 3 + 16e: 60 e0 ldi r22, 0x00 ; 0 + 170: 0e 94 be 01 call 0x37c ; 0x37c <_ZN14HardwareSerial5writeEh> +} + 174: 0f 90 pop r0 + 176: 0f 90 pop r0 + 178: cf 91 pop r28 + 17a: df 91 pop r29 + 17c: ff 91 pop r31 + 17e: ef 91 pop r30 + 180: bf 91 pop r27 + 182: af 91 pop r26 + 184: 9f 91 pop r25 + 186: 8f 91 pop r24 + 188: 7f 91 pop r23 + 18a: 6f 91 pop r22 + 18c: 5f 91 pop r21 + 18e: 4f 91 pop r20 + 190: 3f 91 pop r19 + 192: 2f 91 pop r18 + 194: 0f 90 pop r0 + 196: 0f be out 0x3f, r0 ; 63 + 198: 0f 90 pop r0 + 19a: 1f 90 pop r1 + 19c: 18 95 reti + +0000019e <_Z13fill_sinewavev>: + +byte dd[SAMPLES]; // ram buffer +int loopCount=0; +int sample=0; + +void fill_sinewave(){ + 19e: df 93 push r29 + 1a0: cf 93 push r28 + 1a2: cd b7 in r28, 0x3d ; 61 + 1a4: de b7 in r29, 0x3e ; 62 + 1a6: 64 97 sbiw r28, 0x14 ; 20 + 1a8: 0f b6 in r0, 0x3f ; 63 + 1aa: f8 94 cli + 1ac: de bf out 0x3e, r29 ; 62 + 1ae: 0f be out 0x3f, r0 ; 63 + 1b0: cd bf out 0x3d, r28 ; 61 + sample data to stream + the vital thing is that its possible to distinguish the end of a packet + + here the data is in the range 1-255 and a 0 denotes the end of the packet + */ + float pi = 3.141592; + 1b2: 88 ed ldi r24, 0xD8 ; 216 + 1b4: 9f e0 ldi r25, 0x0F ; 15 + 1b6: a9 e4 ldi r26, 0x49 ; 73 + 1b8: b0 e4 ldi r27, 0x40 ; 64 + 1ba: 89 8b std Y+17, r24 ; 0x11 + 1bc: 9a 8b std Y+18, r25 ; 0x12 + 1be: ab 8b std Y+19, r26 ; 0x13 + 1c0: bc 8b std Y+20, r27 ; 0x14 + float fcnt=0; + 1c2: 80 e0 ldi r24, 0x00 ; 0 + 1c4: 90 e0 ldi r25, 0x00 ; 0 + 1c6: a0 e0 ldi r26, 0x00 ; 0 + 1c8: b0 e0 ldi r27, 0x00 ; 0 + 1ca: 8d 87 std Y+13, r24 ; 0x0d + 1cc: 9e 87 std Y+14, r25 ; 0x0e + 1ce: af 87 std Y+15, r26 ; 0x0f + 1d0: b8 8b std Y+16, r27 ; 0x10 + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + 1d2: 29 89 ldd r18, Y+17 ; 0x11 + 1d4: 3a 89 ldd r19, Y+18 ; 0x12 + 1d6: 4b 89 ldd r20, Y+19 ; 0x13 + 1d8: 5c 89 ldd r21, Y+20 ; 0x14 + 1da: ca 01 movw r24, r20 + 1dc: b9 01 movw r22, r18 + 1de: 0e 94 93 05 call 0xb26 ; 0xb26 <__addsf3> + 1e2: dc 01 movw r26, r24 + 1e4: cb 01 movw r24, r22 + 1e6: bc 01 movw r22, r24 + 1e8: cd 01 movw r24, r26 + 1ea: 20 e0 ldi r18, 0x00 ; 0 + 1ec: 30 e0 ldi r19, 0x00 ; 0 + 1ee: 40 e0 ldi r20, 0x00 ; 0 + 1f0: 54 e4 ldi r21, 0x44 ; 68 + 1f2: 0e 94 ba 06 call 0xd74 ; 0xd74 <__divsf3> + 1f6: dc 01 movw r26, r24 + 1f8: cb 01 movw r24, r22 + 1fa: 8d 83 std Y+5, r24 ; 0x05 + 1fc: 9e 83 std Y+6, r25 ; 0x06 + 1fe: af 83 std Y+7, r26 ; 0x07 + 200: b8 87 std Y+8, r27 ; 0x08 + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + 202: 1a 82 std Y+2, r1 ; 0x02 + 204: 19 82 std Y+1, r1 ; 0x01 + 206: 48 c0 rjmp .+144 ; 0x298 <_Z13fill_sinewavev+0xfa> + fd= 127*sin(fcnt); // fundamental tone + 208: 8d 85 ldd r24, Y+13 ; 0x0d + 20a: 9e 85 ldd r25, Y+14 ; 0x0e + 20c: af 85 ldd r26, Y+15 ; 0x0f + 20e: b8 89 ldd r27, Y+16 ; 0x10 + 210: bc 01 movw r22, r24 + 212: cd 01 movw r24, r26 + 214: 0e 94 a8 09 call 0x1350 ; 0x1350 <sin> + 218: dc 01 movw r26, r24 + 21a: cb 01 movw r24, r22 + 21c: bc 01 movw r22, r24 + 21e: cd 01 movw r24, r26 + 220: 20 e0 ldi r18, 0x00 ; 0 + 222: 30 e0 ldi r19, 0x00 ; 0 + 224: 4e ef ldi r20, 0xFE ; 254 + 226: 52 e4 ldi r21, 0x42 ; 66 + 228: 0e 94 c0 05 call 0xb80 ; 0xb80 <__mulsf3> + 22c: dc 01 movw r26, r24 + 22e: cb 01 movw r24, r22 + 230: 89 87 std Y+9, r24 ; 0x09 + 232: 9a 87 std Y+10, r25 ; 0x0a + 234: ab 87 std Y+11, r26 ; 0x0b + 236: bc 87 std Y+12, r27 ; 0x0c + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + 238: 6d 85 ldd r22, Y+13 ; 0x0d + 23a: 7e 85 ldd r23, Y+14 ; 0x0e + 23c: 8f 85 ldd r24, Y+15 ; 0x0f + 23e: 98 89 ldd r25, Y+16 ; 0x10 + 240: 2d 81 ldd r18, Y+5 ; 0x05 + 242: 3e 81 ldd r19, Y+6 ; 0x06 + 244: 4f 81 ldd r20, Y+7 ; 0x07 + 246: 58 85 ldd r21, Y+8 ; 0x08 + 248: 0e 94 93 05 call 0xb26 ; 0xb26 <__addsf3> + 24c: dc 01 movw r26, r24 + 24e: cb 01 movw r24, r22 + 250: 8d 87 std Y+13, r24 ; 0x0d + 252: 9e 87 std Y+14, r25 ; 0x0e + 254: af 87 std Y+15, r26 ; 0x0f + 256: b8 8b std Y+16, r27 ; 0x10 + bb=128+fd; // add dc offset to sinewawe + 258: 69 85 ldd r22, Y+9 ; 0x09 + 25a: 7a 85 ldd r23, Y+10 ; 0x0a + 25c: 8b 85 ldd r24, Y+11 ; 0x0b + 25e: 9c 85 ldd r25, Y+12 ; 0x0c + 260: 20 e0 ldi r18, 0x00 ; 0 + 262: 30 e0 ldi r19, 0x00 ; 0 + 264: 40 e0 ldi r20, 0x00 ; 0 + 266: 53 e4 ldi r21, 0x43 ; 67 + 268: 0e 94 93 05 call 0xb26 ; 0xb26 <__addsf3> + 26c: dc 01 movw r26, r24 + 26e: cb 01 movw r24, r22 + 270: bc 01 movw r22, r24 + 272: cd 01 movw r24, r26 + 274: 0e 94 66 07 call 0xecc ; 0xecc <__fixsfsi> + 278: dc 01 movw r26, r24 + 27a: cb 01 movw r24, r22 + 27c: 9c 83 std Y+4, r25 ; 0x04 + 27e: 8b 83 std Y+3, r24 ; 0x03 + dd[i]=bb; // write value into array + 280: 89 81 ldd r24, Y+1 ; 0x01 + 282: 9a 81 ldd r25, Y+2 ; 0x02 + 284: 2b 81 ldd r18, Y+3 ; 0x03 + 286: fc 01 movw r30, r24 + 288: ee 5d subi r30, 0xDE ; 222 + 28a: fe 4f sbci r31, 0xFE ; 254 + 28c: 20 83 st Z, r18 + float pi = 3.141592; + float fcnt=0; + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + 28e: 89 81 ldd r24, Y+1 ; 0x01 + 290: 9a 81 ldd r25, Y+2 ; 0x02 + 292: 01 96 adiw r24, 0x01 ; 1 + 294: 9a 83 std Y+2, r25 ; 0x02 + 296: 89 83 std Y+1, r24 ; 0x01 + 298: 89 81 ldd r24, Y+1 ; 0x01 + 29a: 9a 81 ldd r25, Y+2 ; 0x02 + 29c: 22 e0 ldi r18, 0x02 ; 2 + 29e: 80 30 cpi r24, 0x00 ; 0 + 2a0: 92 07 cpc r25, r18 + 2a2: 0c f4 brge .+2 ; 0x2a6 <_Z13fill_sinewavev+0x108> + 2a4: b1 cf rjmp .-158 ; 0x208 <_Z13fill_sinewavev+0x6a> + fd= 127*sin(fcnt); // fundamental tone + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + bb=128+fd; // add dc offset to sinewawe + dd[i]=bb; // write value into array + } +} + 2a6: 64 96 adiw r28, 0x14 ; 20 + 2a8: 0f b6 in r0, 0x3f ; 63 + 2aa: f8 94 cli + 2ac: de bf out 0x3e, r29 ; 62 + 2ae: 0f be out 0x3f, r0 ; 63 + 2b0: cd bf out 0x3d, r28 ; 61 + 2b2: cf 91 pop r28 + 2b4: df 91 pop r29 + 2b6: 08 95 ret + +000002b8 <main>: + +int main(){ + 2b8: df 93 push r29 + 2ba: cf 93 push r28 + 2bc: 00 d0 rcall .+0 ; 0x2be <main+0x6> + 2be: cd b7 in r28, 0x3d ; 61 + 2c0: de b7 in r29, 0x3e ; 62 + + //init(); -- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + fill_sinewave(); + 2c2: 0e 94 cf 00 call 0x19e ; 0x19e <_Z13fill_sinewavev> + Serial.begin(115200); + 2c6: 86 e2 ldi r24, 0x26 ; 38 + 2c8: 93 e0 ldi r25, 0x03 ; 3 + 2ca: 40 e0 ldi r20, 0x00 ; 0 + 2cc: 52 ec ldi r21, 0xC2 ; 194 + 2ce: 61 e0 ldi r22, 0x01 ; 1 + 2d0: 70 e0 ldi r23, 0x00 ; 0 + 2d2: 0e 94 cb 01 call 0x396 ; 0x396 <_ZN14HardwareSerial5beginEl> + + DDRB |= (1 << 5); // port B bit 6 = arduino pin 13 + 2d6: a4 e2 ldi r26, 0x24 ; 36 + 2d8: b0 e0 ldi r27, 0x00 ; 0 + 2da: e4 e2 ldi r30, 0x24 ; 36 + 2dc: f0 e0 ldi r31, 0x00 ; 0 + 2de: 80 81 ld r24, Z + 2e0: 80 62 ori r24, 0x20 ; 32 + 2e2: 8c 93 st X, r24 + PORTB = (1 << 5); //turn on to start + 2e4: e5 e2 ldi r30, 0x25 ; 37 + 2e6: f0 e0 ldi r31, 0x00 ; 0 + 2e8: 80 e2 ldi r24, 0x20 ; 32 + 2ea: 80 83 st Z, r24 + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + 2ec: a1 e8 ldi r26, 0x81 ; 129 + 2ee: b0 e0 ldi r27, 0x00 ; 0 + 2f0: e1 e8 ldi r30, 0x81 ; 129 + 2f2: f0 e0 ldi r31, 0x00 ; 0 + 2f4: 80 81 ld r24, Z + 2f6: 88 60 ori r24, 0x08 ; 8 + 2f8: 8c 93 st X, r24 + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + 2fa: af e6 ldi r26, 0x6F ; 111 + 2fc: b0 e0 ldi r27, 0x00 ; 0 + 2fe: ef e6 ldi r30, 0x6F ; 111 + 300: f0 e0 ldi r31, 0x00 ; 0 + 302: 80 81 ld r24, Z + 304: 82 60 ori r24, 0x02 ; 2 + 306: 8c 93 st X, r24 + OCR1A = 390; // Set CTC compare value: final speed = CPU clocks / prescaler / CTC 15625=1Hz + 308: e8 e8 ldi r30, 0x88 ; 136 + 30a: f0 e0 ldi r31, 0x00 ; 0 + 30c: 86 e8 ldi r24, 0x86 ; 134 + 30e: 91 e0 ldi r25, 0x01 ; 1 + 310: 91 83 std Z+1, r25 ; 0x01 + 312: 80 83 st Z, r24 + sei(); // Enable global interrupts + 314: 78 94 sei + + while(1) { + if (Serial.available() > 0) { + 316: 86 e2 ldi r24, 0x26 ; 38 + 318: 93 e0 ldi r25, 0x03 ; 3 + 31a: 0e 94 c8 01 call 0x390 ; 0x390 <_ZN14HardwareSerial9availableEv> + 31e: 1a 82 std Y+2, r1 ; 0x02 + 320: 18 16 cp r1, r24 + 322: 19 06 cpc r1, r25 + 324: 14 f4 brge .+4 ; 0x32a <main+0x72> + 326: 81 e0 ldi r24, 0x01 ; 1 + 328: 8a 83 std Y+2, r24 ; 0x02 + 32a: 8a 81 ldd r24, Y+2 ; 0x02 + 32c: 88 23 and r24, r24 + 32e: 99 f3 breq .-26 ; 0x316 <main+0x5e> + PORTB ^= (1 << 5); + 330: a5 e2 ldi r26, 0x25 ; 37 + 332: b0 e0 ldi r27, 0x00 ; 0 + 334: e5 e2 ldi r30, 0x25 ; 37 + 336: f0 e0 ldi r31, 0x00 ; 0 + 338: 90 81 ld r25, Z + 33a: 80 e2 ldi r24, 0x20 ; 32 + 33c: 89 27 eor r24, r25 + 33e: 8c 93 st X, r24 + byte in=Serial.read(); + 340: 86 e2 ldi r24, 0x26 ; 38 + 342: 93 e0 ldi r25, 0x03 ; 3 + 344: 0e 94 c5 01 call 0x38a ; 0x38a <_ZN14HardwareSerial4readEv> + 348: 89 83 std Y+1, r24 ; 0x01 + if (in=='a') { + 34a: 89 81 ldd r24, Y+1 ; 0x01 + 34c: 81 36 cpi r24, 0x61 ; 97 + 34e: 19 f7 brne .-58 ; 0x316 <main+0x5e> + Serial.println("Welcome to electic"); + 350: 86 e2 ldi r24, 0x26 ; 38 + 352: 93 e0 ldi r25, 0x03 ; 3 + 354: 20 e0 ldi r18, 0x00 ; 0 + 356: 31 e0 ldi r19, 0x01 ; 1 + 358: b9 01 movw r22, r18 + 35a: 0e 94 1f 02 call 0x43e ; 0x43e <_ZN5Print7printlnEPKc> + TCCR1B |= ((1<<CS10)|(1 << CS12)); // Set up timer at Fcpu/1024 + 35e: a1 e8 ldi r26, 0x81 ; 129 + 360: b0 e0 ldi r27, 0x00 ; 0 + 362: e1 e8 ldi r30, 0x81 ; 129 + 364: f0 e0 ldi r31, 0x00 ; 0 + 366: 80 81 ld r24, Z + 368: 85 60 ori r24, 0x05 ; 5 + 36a: 8c 93 st X, r24 + 36c: d4 cf rjmp .-88 ; 0x316 <main+0x5e> + +0000036e <_GLOBAL__I__ZN14HardwareSerial5beginEl>: + 36e: 87 e1 ldi r24, 0x17 ; 23 + 370: 91 e0 ldi r25, 0x01 ; 1 + 372: 90 93 27 03 sts 0x0327, r25 + 376: 80 93 26 03 sts 0x0326, r24 + 37a: 08 95 ret + +0000037c <_ZN14HardwareSerial5writeEh>: + 37c: 86 2f mov r24, r22 + 37e: 0e 94 98 03 call 0x730 ; 0x730 <serialWrite> + 382: 08 95 ret + +00000384 <_ZN14HardwareSerial5flushEv>: + 384: 0e 94 d0 03 call 0x7a0 ; 0x7a0 <serialFlush> + 388: 08 95 ret + +0000038a <_ZN14HardwareSerial4readEv>: + 38a: 0e 94 b1 03 call 0x762 ; 0x762 <serialRead> + 38e: 08 95 ret + +00000390 <_ZN14HardwareSerial9availableEv>: + 390: 0e 94 a0 03 call 0x740 ; 0x740 <serialAvailable> + 394: 08 95 ret + +00000396 <_ZN14HardwareSerial5beginEl>: + 396: cb 01 movw r24, r22 + 398: ba 01 movw r22, r20 + 39a: 0e 94 5f 03 call 0x6be ; 0x6be <beginSerial> + 39e: 08 95 ret + +000003a0 <_ZN5Print5printEh>: + 3a0: dc 01 movw r26, r24 + 3a2: ed 91 ld r30, X+ + 3a4: fc 91 ld r31, X + 3a6: 01 90 ld r0, Z+ + 3a8: f0 81 ld r31, Z + 3aa: e0 2d mov r30, r0 + 3ac: 09 95 icall + 3ae: 08 95 ret + +000003b0 <_ZN5Print5printEc>: + 3b0: dc 01 movw r26, r24 + 3b2: ed 91 ld r30, X+ + 3b4: fc 91 ld r31, X + 3b6: 01 90 ld r0, Z+ + 3b8: f0 81 ld r31, Z + 3ba: e0 2d mov r30, r0 + 3bc: 09 95 icall + 3be: 08 95 ret + +000003c0 <_ZN5Print5printEPKc>: + 3c0: 0f 93 push r16 + 3c2: 1f 93 push r17 + 3c4: cf 93 push r28 + 3c6: df 93 push r29 + 3c8: 8c 01 movw r16, r24 + 3ca: eb 01 movw r28, r22 + 3cc: 09 c0 rjmp .+18 ; 0x3e0 <_ZN5Print5printEPKc+0x20> + 3ce: 21 96 adiw r28, 0x01 ; 1 + 3d0: d8 01 movw r26, r16 + 3d2: ed 91 ld r30, X+ + 3d4: fc 91 ld r31, X + 3d6: 01 90 ld r0, Z+ + 3d8: f0 81 ld r31, Z + 3da: e0 2d mov r30, r0 + 3dc: c8 01 movw r24, r16 + 3de: 09 95 icall + 3e0: 68 81 ld r22, Y + 3e2: 66 23 and r22, r22 + 3e4: a1 f7 brne .-24 ; 0x3ce <_ZN5Print5printEPKc+0xe> + 3e6: df 91 pop r29 + 3e8: cf 91 pop r28 + 3ea: 1f 91 pop r17 + 3ec: 0f 91 pop r16 + 3ee: 08 95 ret + +000003f0 <_ZN5Print7printlnEv>: + 3f0: 0f 93 push r16 + 3f2: 1f 93 push r17 + 3f4: 8c 01 movw r16, r24 + 3f6: dc 01 movw r26, r24 + 3f8: ed 91 ld r30, X+ + 3fa: fc 91 ld r31, X + 3fc: 01 90 ld r0, Z+ + 3fe: f0 81 ld r31, Z + 400: e0 2d mov r30, r0 + 402: 6d e0 ldi r22, 0x0D ; 13 + 404: 09 95 icall + 406: d8 01 movw r26, r16 + 408: ed 91 ld r30, X+ + 40a: fc 91 ld r31, X + 40c: 01 90 ld r0, Z+ + 40e: f0 81 ld r31, Z + 410: e0 2d mov r30, r0 + 412: 6a e0 ldi r22, 0x0A ; 10 + 414: c8 01 movw r24, r16 + 416: 09 95 icall + 418: 1f 91 pop r17 + 41a: 0f 91 pop r16 + 41c: 08 95 ret + +0000041e <_ZN5Print7printlnEc>: + 41e: 0f 93 push r16 + 420: 1f 93 push r17 + 422: 8c 01 movw r16, r24 + 424: dc 01 movw r26, r24 + 426: ed 91 ld r30, X+ + 428: fc 91 ld r31, X + 42a: 01 90 ld r0, Z+ + 42c: f0 81 ld r31, Z + 42e: e0 2d mov r30, r0 + 430: 09 95 icall + 432: c8 01 movw r24, r16 + 434: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 438: 1f 91 pop r17 + 43a: 0f 91 pop r16 + 43c: 08 95 ret + +0000043e <_ZN5Print7printlnEPKc>: + 43e: 0f 93 push r16 + 440: 1f 93 push r17 + 442: 8c 01 movw r16, r24 + 444: 0e 94 e0 01 call 0x3c0 ; 0x3c0 <_ZN5Print5printEPKc> + 448: c8 01 movw r24, r16 + 44a: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 44e: 1f 91 pop r17 + 450: 0f 91 pop r16 + 452: 08 95 ret + +00000454 <_ZN5Print7printlnEh>: + 454: 0f 93 push r16 + 456: 1f 93 push r17 + 458: 8c 01 movw r16, r24 + 45a: dc 01 movw r26, r24 + 45c: ed 91 ld r30, X+ + 45e: fc 91 ld r31, X + 460: 01 90 ld r0, Z+ + 462: f0 81 ld r31, Z + 464: e0 2d mov r30, r0 + 466: 09 95 icall + 468: c8 01 movw r24, r16 + 46a: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 46e: 1f 91 pop r17 + 470: 0f 91 pop r16 + 472: 08 95 ret + +00000474 <_ZN5Print11printNumberEmh>: + 474: 2f 92 push r2 + 476: 3f 92 push r3 + 478: 4f 92 push r4 + 47a: 5f 92 push r5 + 47c: 6f 92 push r6 + 47e: 7f 92 push r7 + 480: 8f 92 push r8 + 482: 9f 92 push r9 + 484: af 92 push r10 + 486: bf 92 push r11 + 488: cf 92 push r12 + 48a: df 92 push r13 + 48c: ef 92 push r14 + 48e: ff 92 push r15 + 490: 0f 93 push r16 + 492: 1f 93 push r17 + 494: df 93 push r29 + 496: cf 93 push r28 + 498: cd b7 in r28, 0x3d ; 61 + 49a: de b7 in r29, 0x3e ; 62 + 49c: a0 97 sbiw r28, 0x20 ; 32 + 49e: 0f b6 in r0, 0x3f ; 63 + 4a0: f8 94 cli + 4a2: de bf out 0x3e, r29 ; 62 + 4a4: 0f be out 0x3f, r0 ; 63 + 4a6: cd bf out 0x3d, r28 ; 61 + 4a8: 1c 01 movw r2, r24 + 4aa: 6a 01 movw r12, r20 + 4ac: 7b 01 movw r14, r22 + 4ae: 41 15 cp r20, r1 + 4b0: 51 05 cpc r21, r1 + 4b2: 61 05 cpc r22, r1 + 4b4: 71 05 cpc r23, r1 + 4b6: 49 f4 brne .+18 ; 0x4ca <_ZN5Print11printNumberEmh+0x56> + 4b8: dc 01 movw r26, r24 + 4ba: ed 91 ld r30, X+ + 4bc: fc 91 ld r31, X + 4be: 01 90 ld r0, Z+ + 4c0: f0 81 ld r31, Z + 4c2: e0 2d mov r30, r0 + 4c4: 60 e3 ldi r22, 0x30 ; 48 + 4c6: 09 95 icall + 4c8: 54 c0 rjmp .+168 ; 0x572 <_ZN5Print11printNumberEmh+0xfe> + 4ca: 88 24 eor r8, r8 + 4cc: 99 24 eor r9, r9 + 4ce: 54 01 movw r10, r8 + 4d0: 42 2e mov r4, r18 + 4d2: 55 24 eor r5, r5 + 4d4: 66 24 eor r6, r6 + 4d6: 77 24 eor r7, r7 + 4d8: 01 e0 ldi r16, 0x01 ; 1 + 4da: 10 e0 ldi r17, 0x00 ; 0 + 4dc: 0c 0f add r16, r28 + 4de: 1d 1f adc r17, r29 + 4e0: 08 0d add r16, r8 + 4e2: 19 1d adc r17, r9 + 4e4: c7 01 movw r24, r14 + 4e6: b6 01 movw r22, r12 + 4e8: a3 01 movw r20, r6 + 4ea: 92 01 movw r18, r4 + 4ec: 0e 94 1a 09 call 0x1234 ; 0x1234 <__udivmodsi4> + 4f0: f8 01 movw r30, r16 + 4f2: 60 83 st Z, r22 + 4f4: 08 94 sec + 4f6: 81 1c adc r8, r1 + 4f8: 91 1c adc r9, r1 + 4fa: a1 1c adc r10, r1 + 4fc: b1 1c adc r11, r1 + 4fe: c7 01 movw r24, r14 + 500: b6 01 movw r22, r12 + 502: a3 01 movw r20, r6 + 504: 92 01 movw r18, r4 + 506: 0e 94 1a 09 call 0x1234 ; 0x1234 <__udivmodsi4> + 50a: c9 01 movw r24, r18 + 50c: da 01 movw r26, r20 + 50e: 6c 01 movw r12, r24 + 510: 7d 01 movw r14, r26 + 512: c1 14 cp r12, r1 + 514: d1 04 cpc r13, r1 + 516: e1 04 cpc r14, r1 + 518: f1 04 cpc r15, r1 + 51a: f1 f6 brne .-68 ; 0x4d8 <_ZN5Print11printNumberEmh+0x64> + 51c: 81 e0 ldi r24, 0x01 ; 1 + 51e: e8 2e mov r14, r24 + 520: f1 2c mov r15, r1 + 522: ec 0e add r14, r28 + 524: fd 1e adc r15, r29 + 526: e8 0c add r14, r8 + 528: f9 1c adc r15, r9 + 52a: 3e 01 movw r6, r28 + 52c: 08 94 sec + 52e: 61 1c adc r6, r1 + 530: 71 1c adc r7, r1 + 532: d5 01 movw r26, r10 + 534: c4 01 movw r24, r8 + 536: 01 97 sbiw r24, 0x01 ; 1 + 538: a1 09 sbc r26, r1 + 53a: b1 09 sbc r27, r1 + 53c: 6c 01 movw r12, r24 + 53e: c8 18 sub r12, r8 + 540: d9 08 sbc r13, r9 + 542: 14 c0 rjmp .+40 ; 0x56c <_ZN5Print11printNumberEmh+0xf8> + 544: f6 01 movw r30, r12 + 546: ee 0d add r30, r14 + 548: ff 1d adc r31, r15 + 54a: 60 81 ld r22, Z + 54c: 6a 30 cpi r22, 0x0A ; 10 + 54e: 10 f4 brcc .+4 ; 0x554 <_ZN5Print11printNumberEmh+0xe0> + 550: 60 5d subi r22, 0xD0 ; 208 + 552: 01 c0 rjmp .+2 ; 0x556 <_ZN5Print11printNumberEmh+0xe2> + 554: 69 5c subi r22, 0xC9 ; 201 + 556: d1 01 movw r26, r2 + 558: ed 91 ld r30, X+ + 55a: fc 91 ld r31, X + 55c: 01 90 ld r0, Z+ + 55e: f0 81 ld r31, Z + 560: e0 2d mov r30, r0 + 562: c1 01 movw r24, r2 + 564: 09 95 icall + 566: 08 94 sec + 568: e1 08 sbc r14, r1 + 56a: f1 08 sbc r15, r1 + 56c: 6e 14 cp r6, r14 + 56e: 7f 04 cpc r7, r15 + 570: 49 f7 brne .-46 ; 0x544 <_ZN5Print11printNumberEmh+0xd0> + 572: a0 96 adiw r28, 0x20 ; 32 + 574: 0f b6 in r0, 0x3f ; 63 + 576: f8 94 cli + 578: de bf out 0x3e, r29 ; 62 + 57a: 0f be out 0x3f, r0 ; 63 + 57c: cd bf out 0x3d, r28 ; 61 + 57e: cf 91 pop r28 + 580: df 91 pop r29 + 582: 1f 91 pop r17 + 584: 0f 91 pop r16 + 586: ff 90 pop r15 + 588: ef 90 pop r14 + 58a: df 90 pop r13 + 58c: cf 90 pop r12 + 58e: bf 90 pop r11 + 590: af 90 pop r10 + 592: 9f 90 pop r9 + 594: 8f 90 pop r8 + 596: 7f 90 pop r7 + 598: 6f 90 pop r6 + 59a: 5f 90 pop r5 + 59c: 4f 90 pop r4 + 59e: 3f 90 pop r3 + 5a0: 2f 90 pop r2 + 5a2: 08 95 ret + +000005a4 <_ZN5Print5printEm>: + 5a4: 2a e0 ldi r18, 0x0A ; 10 + 5a6: 0e 94 3a 02 call 0x474 ; 0x474 <_ZN5Print11printNumberEmh> + 5aa: 08 95 ret + +000005ac <_ZN5Print7printlnEm>: + 5ac: 0f 93 push r16 + 5ae: 1f 93 push r17 + 5b0: 8c 01 movw r16, r24 + 5b2: 0e 94 d2 02 call 0x5a4 ; 0x5a4 <_ZN5Print5printEm> + 5b6: c8 01 movw r24, r16 + 5b8: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 5bc: 1f 91 pop r17 + 5be: 0f 91 pop r16 + 5c0: 08 95 ret + +000005c2 <_ZN5Print5printEj>: + 5c2: ab 01 movw r20, r22 + 5c4: 60 e0 ldi r22, 0x00 ; 0 + 5c6: 70 e0 ldi r23, 0x00 ; 0 + 5c8: 0e 94 d2 02 call 0x5a4 ; 0x5a4 <_ZN5Print5printEm> + 5cc: 08 95 ret + +000005ce <_ZN5Print7printlnEj>: + 5ce: 0f 93 push r16 + 5d0: 1f 93 push r17 + 5d2: 8c 01 movw r16, r24 + 5d4: ab 01 movw r20, r22 + 5d6: 60 e0 ldi r22, 0x00 ; 0 + 5d8: 70 e0 ldi r23, 0x00 ; 0 + 5da: 0e 94 d2 02 call 0x5a4 ; 0x5a4 <_ZN5Print5printEm> + 5de: c8 01 movw r24, r16 + 5e0: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 5e4: 1f 91 pop r17 + 5e6: 0f 91 pop r16 + 5e8: 08 95 ret + +000005ea <_ZN5Print5printEl>: + 5ea: ef 92 push r14 + 5ec: ff 92 push r15 + 5ee: 0f 93 push r16 + 5f0: 1f 93 push r17 + 5f2: cf 93 push r28 + 5f4: df 93 push r29 + 5f6: ec 01 movw r28, r24 + 5f8: 7a 01 movw r14, r20 + 5fa: 8b 01 movw r16, r22 + 5fc: 77 ff sbrs r23, 7 + 5fe: 0f c0 rjmp .+30 ; 0x61e <_ZN5Print5printEl+0x34> + 600: e8 81 ld r30, Y + 602: f9 81 ldd r31, Y+1 ; 0x01 + 604: 01 90 ld r0, Z+ + 606: f0 81 ld r31, Z + 608: e0 2d mov r30, r0 + 60a: 6d e2 ldi r22, 0x2D ; 45 + 60c: 09 95 icall + 60e: 10 95 com r17 + 610: 00 95 com r16 + 612: f0 94 com r15 + 614: e0 94 com r14 + 616: e1 1c adc r14, r1 + 618: f1 1c adc r15, r1 + 61a: 01 1d adc r16, r1 + 61c: 11 1d adc r17, r1 + 61e: 2a e0 ldi r18, 0x0A ; 10 + 620: b8 01 movw r22, r16 + 622: a7 01 movw r20, r14 + 624: ce 01 movw r24, r28 + 626: 0e 94 3a 02 call 0x474 ; 0x474 <_ZN5Print11printNumberEmh> + 62a: df 91 pop r29 + 62c: cf 91 pop r28 + 62e: 1f 91 pop r17 + 630: 0f 91 pop r16 + 632: ff 90 pop r15 + 634: ef 90 pop r14 + 636: 08 95 ret + +00000638 <_ZN5Print7printlnEl>: + 638: 0f 93 push r16 + 63a: 1f 93 push r17 + 63c: 8c 01 movw r16, r24 + 63e: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 642: c8 01 movw r24, r16 + 644: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 648: 1f 91 pop r17 + 64a: 0f 91 pop r16 + 64c: 08 95 ret + +0000064e <_ZN5Print5printEi>: + 64e: ab 01 movw r20, r22 + 650: 66 27 eor r22, r22 + 652: 57 fd sbrc r21, 7 + 654: 60 95 com r22 + 656: 76 2f mov r23, r22 + 658: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 65c: 08 95 ret + +0000065e <_ZN5Print7printlnEi>: + 65e: 0f 93 push r16 + 660: 1f 93 push r17 + 662: 8c 01 movw r16, r24 + 664: ab 01 movw r20, r22 + 666: 66 27 eor r22, r22 + 668: 57 fd sbrc r21, 7 + 66a: 60 95 com r22 + 66c: 76 2f mov r23, r22 + 66e: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 672: c8 01 movw r24, r16 + 674: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 678: 1f 91 pop r17 + 67a: 0f 91 pop r16 + 67c: 08 95 ret + +0000067e <_ZN5Print5printEli>: + 67e: dc 01 movw r26, r24 + 680: 21 15 cp r18, r1 + 682: 31 05 cpc r19, r1 + 684: 41 f4 brne .+16 ; 0x696 <_ZN5Print5printEli+0x18> + 686: ed 91 ld r30, X+ + 688: fc 91 ld r31, X + 68a: 01 90 ld r0, Z+ + 68c: f0 81 ld r31, Z + 68e: e0 2d mov r30, r0 + 690: 64 2f mov r22, r20 + 692: 09 95 icall + 694: 08 95 ret + 696: 2a 30 cpi r18, 0x0A ; 10 + 698: 31 05 cpc r19, r1 + 69a: 19 f4 brne .+6 ; 0x6a2 <_ZN5Print5printEli+0x24> + 69c: 0e 94 f5 02 call 0x5ea ; 0x5ea <_ZN5Print5printEl> + 6a0: 08 95 ret + 6a2: 0e 94 3a 02 call 0x474 ; 0x474 <_ZN5Print11printNumberEmh> + 6a6: 08 95 ret + +000006a8 <_ZN5Print7printlnEli>: + 6a8: 0f 93 push r16 + 6aa: 1f 93 push r17 + 6ac: 8c 01 movw r16, r24 + 6ae: 0e 94 3f 03 call 0x67e ; 0x67e <_ZN5Print5printEli> + 6b2: c8 01 movw r24, r16 + 6b4: 0e 94 f8 01 call 0x3f0 ; 0x3f0 <_ZN5Print7printlnEv> + 6b8: 1f 91 pop r17 + 6ba: 0f 91 pop r16 + 6bc: 08 95 ret + +000006be <beginSerial>: + 6be: ef 92 push r14 + 6c0: ff 92 push r15 + 6c2: 0f 93 push r16 + 6c4: 1f 93 push r17 + 6c6: 7b 01 movw r14, r22 + 6c8: 8c 01 movw r16, r24 + 6ca: 22 e0 ldi r18, 0x02 ; 2 + 6cc: 30 e0 ldi r19, 0x00 ; 0 + 6ce: 40 e0 ldi r20, 0x00 ; 0 + 6d0: 50 e0 ldi r21, 0x00 ; 0 + 6d2: 0e 94 3c 09 call 0x1278 ; 0x1278 <__divmodsi4> + 6d6: 20 5c subi r18, 0xC0 ; 192 + 6d8: 3d 4b sbci r19, 0xBD ; 189 + 6da: 40 4f sbci r20, 0xF0 ; 240 + 6dc: 5f 4f sbci r21, 0xFF ; 255 + 6de: ca 01 movw r24, r20 + 6e0: b9 01 movw r22, r18 + 6e2: a8 01 movw r20, r16 + 6e4: 97 01 movw r18, r14 + 6e6: 0e 94 3c 09 call 0x1278 ; 0x1278 <__divmodsi4> + 6ea: c9 01 movw r24, r18 + 6ec: da 01 movw r26, r20 + 6ee: 01 97 sbiw r24, 0x01 ; 1 + 6f0: a1 09 sbc r26, r1 + 6f2: b1 09 sbc r27, r1 + 6f4: 29 2f mov r18, r25 + 6f6: 3a 2f mov r19, r26 + 6f8: 4b 2f mov r20, r27 + 6fa: 55 27 eor r21, r21 + 6fc: 47 fd sbrc r20, 7 + 6fe: 5a 95 dec r21 + 700: 01 96 adiw r24, 0x01 ; 1 + 702: a1 1d adc r26, r1 + 704: b1 1d adc r27, r1 + 706: 20 93 c5 00 sts 0x00C5, r18 + 70a: 81 50 subi r24, 0x01 ; 1 + 70c: 80 93 c4 00 sts 0x00C4, r24 + 710: e1 ec ldi r30, 0xC1 ; 193 + 712: f0 e0 ldi r31, 0x00 ; 0 + 714: 80 81 ld r24, Z + 716: 80 61 ori r24, 0x10 ; 16 + 718: 80 83 st Z, r24 + 71a: 80 81 ld r24, Z + 71c: 88 60 ori r24, 0x08 ; 8 + 71e: 80 83 st Z, r24 + 720: 80 81 ld r24, Z + 722: 80 68 ori r24, 0x80 ; 128 + 724: 80 83 st Z, r24 + 726: 1f 91 pop r17 + 728: 0f 91 pop r16 + 72a: ff 90 pop r15 + 72c: ef 90 pop r14 + 72e: 08 95 ret + +00000730 <serialWrite>: + 730: 98 2f mov r25, r24 + 732: 80 91 c0 00 lds r24, 0x00C0 + 736: 85 ff sbrs r24, 5 + 738: fc cf rjmp .-8 ; 0x732 <serialWrite+0x2> + 73a: 90 93 c6 00 sts 0x00C6, r25 + 73e: 08 95 ret + +00000740 <serialAvailable>: + 740: 80 91 28 03 lds r24, 0x0328 + 744: 90 91 29 03 lds r25, 0x0329 + 748: 80 58 subi r24, 0x80 ; 128 + 74a: 9f 4f sbci r25, 0xFF ; 255 + 74c: 20 91 2a 03 lds r18, 0x032A + 750: 30 91 2b 03 lds r19, 0x032B + 754: 82 1b sub r24, r18 + 756: 93 0b sbc r25, r19 + 758: 60 e8 ldi r22, 0x80 ; 128 + 75a: 70 e0 ldi r23, 0x00 ; 0 + 75c: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 760: 08 95 ret + +00000762 <serialRead>: + 762: 40 91 2a 03 lds r20, 0x032A + 766: 50 91 2b 03 lds r21, 0x032B + 76a: 80 91 28 03 lds r24, 0x0328 + 76e: 90 91 29 03 lds r25, 0x0329 + 772: 84 17 cp r24, r20 + 774: 95 07 cpc r25, r21 + 776: 19 f4 brne .+6 ; 0x77e <serialRead+0x1c> + 778: 2f ef ldi r18, 0xFF ; 255 + 77a: 3f ef ldi r19, 0xFF ; 255 + 77c: 0f c0 rjmp .+30 ; 0x79c <serialRead+0x3a> + 77e: fa 01 movw r30, r20 + 780: e4 5d subi r30, 0xD4 ; 212 + 782: fc 4f sbci r31, 0xFC ; 252 + 784: 20 81 ld r18, Z + 786: ca 01 movw r24, r20 + 788: 01 96 adiw r24, 0x01 ; 1 + 78a: 60 e8 ldi r22, 0x80 ; 128 + 78c: 70 e0 ldi r23, 0x00 ; 0 + 78e: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 792: 90 93 2b 03 sts 0x032B, r25 + 796: 80 93 2a 03 sts 0x032A, r24 + 79a: 30 e0 ldi r19, 0x00 ; 0 + 79c: c9 01 movw r24, r18 + 79e: 08 95 ret + +000007a0 <serialFlush>: + 7a0: 80 91 2a 03 lds r24, 0x032A + 7a4: 90 91 2b 03 lds r25, 0x032B + 7a8: 90 93 29 03 sts 0x0329, r25 + 7ac: 80 93 28 03 sts 0x0328, r24 + 7b0: 08 95 ret + +000007b2 <__vector_18>: + 7b2: 1f 92 push r1 + 7b4: 0f 92 push r0 + 7b6: 0f b6 in r0, 0x3f ; 63 + 7b8: 0f 92 push r0 + 7ba: 11 24 eor r1, r1 + 7bc: 2f 93 push r18 + 7be: 3f 93 push r19 + 7c0: 4f 93 push r20 + 7c2: 5f 93 push r21 + 7c4: 6f 93 push r22 + 7c6: 7f 93 push r23 + 7c8: 8f 93 push r24 + 7ca: 9f 93 push r25 + 7cc: af 93 push r26 + 7ce: bf 93 push r27 + 7d0: ef 93 push r30 + 7d2: ff 93 push r31 + 7d4: 40 91 c6 00 lds r20, 0x00C6 + 7d8: e0 91 28 03 lds r30, 0x0328 + 7dc: f0 91 29 03 lds r31, 0x0329 + 7e0: cf 01 movw r24, r30 + 7e2: 01 96 adiw r24, 0x01 ; 1 + 7e4: 60 e8 ldi r22, 0x80 ; 128 + 7e6: 70 e0 ldi r23, 0x00 ; 0 + 7e8: 0e 94 07 09 call 0x120e ; 0x120e <__divmodhi4> + 7ec: 9c 01 movw r18, r24 + 7ee: 80 91 2a 03 lds r24, 0x032A + 7f2: 90 91 2b 03 lds r25, 0x032B + 7f6: 28 17 cp r18, r24 + 7f8: 39 07 cpc r19, r25 + 7fa: 39 f0 breq .+14 ; 0x80a <__vector_18+0x58> + 7fc: e4 5d subi r30, 0xD4 ; 212 + 7fe: fc 4f sbci r31, 0xFC ; 252 + 800: 40 83 st Z, r20 + 802: 30 93 29 03 sts 0x0329, r19 + 806: 20 93 28 03 sts 0x0328, r18 + 80a: ff 91 pop r31 + 80c: ef 91 pop r30 + 80e: bf 91 pop r27 + 810: af 91 pop r26 + 812: 9f 91 pop r25 + 814: 8f 91 pop r24 + 816: 7f 91 pop r23 + 818: 6f 91 pop r22 + 81a: 5f 91 pop r21 + 81c: 4f 91 pop r20 + 81e: 3f 91 pop r19 + 820: 2f 91 pop r18 + 822: 0f 90 pop r0 + 824: 0f be out 0x3f, r0 ; 63 + 826: 0f 90 pop r0 + 828: 1f 90 pop r1 + 82a: 18 95 reti + +0000082c <_fpadd_parts>: + 82c: a0 e0 ldi r26, 0x00 ; 0 + 82e: b0 e0 ldi r27, 0x00 ; 0 + 830: ec e1 ldi r30, 0x1C ; 28 + 832: f4 e0 ldi r31, 0x04 ; 4 + 834: 0c 94 6b 09 jmp 0x12d6 ; 0x12d6 <__prologue_saves__> + 838: dc 01 movw r26, r24 + 83a: 2b 01 movw r4, r22 + 83c: fa 01 movw r30, r20 + 83e: 9c 91 ld r25, X + 840: 92 30 cpi r25, 0x02 ; 2 + 842: 08 f4 brcc .+2 ; 0x846 <_fpadd_parts+0x1a> + 844: 39 c1 rjmp .+626 ; 0xab8 <__stack+0x1b9> + 846: eb 01 movw r28, r22 + 848: 88 81 ld r24, Y + 84a: 82 30 cpi r24, 0x02 ; 2 + 84c: 08 f4 brcc .+2 ; 0x850 <_fpadd_parts+0x24> + 84e: 33 c1 rjmp .+614 ; 0xab6 <__stack+0x1b7> + 850: 94 30 cpi r25, 0x04 ; 4 + 852: 69 f4 brne .+26 ; 0x86e <_fpadd_parts+0x42> + 854: 84 30 cpi r24, 0x04 ; 4 + 856: 09 f0 breq .+2 ; 0x85a <_fpadd_parts+0x2e> + 858: 2f c1 rjmp .+606 ; 0xab8 <__stack+0x1b9> + 85a: 11 96 adiw r26, 0x01 ; 1 + 85c: 9c 91 ld r25, X + 85e: 11 97 sbiw r26, 0x01 ; 1 + 860: 89 81 ldd r24, Y+1 ; 0x01 + 862: 98 17 cp r25, r24 + 864: 09 f4 brne .+2 ; 0x868 <_fpadd_parts+0x3c> + 866: 28 c1 rjmp .+592 ; 0xab8 <__stack+0x1b9> + 868: a9 e1 ldi r26, 0x19 ; 25 + 86a: b1 e0 ldi r27, 0x01 ; 1 + 86c: 25 c1 rjmp .+586 ; 0xab8 <__stack+0x1b9> + 86e: 84 30 cpi r24, 0x04 ; 4 + 870: 09 f4 brne .+2 ; 0x874 <_fpadd_parts+0x48> + 872: 21 c1 rjmp .+578 ; 0xab6 <__stack+0x1b7> + 874: 82 30 cpi r24, 0x02 ; 2 + 876: a9 f4 brne .+42 ; 0x8a2 <_fpadd_parts+0x76> + 878: 92 30 cpi r25, 0x02 ; 2 + 87a: 09 f0 breq .+2 ; 0x87e <_fpadd_parts+0x52> + 87c: 1d c1 rjmp .+570 ; 0xab8 <__stack+0x1b9> + 87e: 9a 01 movw r18, r20 + 880: ad 01 movw r20, r26 + 882: 88 e0 ldi r24, 0x08 ; 8 + 884: ea 01 movw r28, r20 + 886: 09 90 ld r0, Y+ + 888: ae 01 movw r20, r28 + 88a: e9 01 movw r28, r18 + 88c: 09 92 st Y+, r0 + 88e: 9e 01 movw r18, r28 + 890: 81 50 subi r24, 0x01 ; 1 + 892: c1 f7 brne .-16 ; 0x884 <_fpadd_parts+0x58> + 894: e2 01 movw r28, r4 + 896: 89 81 ldd r24, Y+1 ; 0x01 + 898: 11 96 adiw r26, 0x01 ; 1 + 89a: 9c 91 ld r25, X + 89c: 89 23 and r24, r25 + 89e: 81 83 std Z+1, r24 ; 0x01 + 8a0: 08 c1 rjmp .+528 ; 0xab2 <__stack+0x1b3> + 8a2: 92 30 cpi r25, 0x02 ; 2 + 8a4: 09 f4 brne .+2 ; 0x8a8 <_fpadd_parts+0x7c> + 8a6: 07 c1 rjmp .+526 ; 0xab6 <__stack+0x1b7> + 8a8: 12 96 adiw r26, 0x02 ; 2 + 8aa: 2d 90 ld r2, X+ + 8ac: 3c 90 ld r3, X + 8ae: 13 97 sbiw r26, 0x03 ; 3 + 8b0: eb 01 movw r28, r22 + 8b2: 8a 81 ldd r24, Y+2 ; 0x02 + 8b4: 9b 81 ldd r25, Y+3 ; 0x03 + 8b6: 14 96 adiw r26, 0x04 ; 4 + 8b8: ad 90 ld r10, X+ + 8ba: bd 90 ld r11, X+ + 8bc: cd 90 ld r12, X+ + 8be: dc 90 ld r13, X + 8c0: 17 97 sbiw r26, 0x07 ; 7 + 8c2: ec 80 ldd r14, Y+4 ; 0x04 + 8c4: fd 80 ldd r15, Y+5 ; 0x05 + 8c6: 0e 81 ldd r16, Y+6 ; 0x06 + 8c8: 1f 81 ldd r17, Y+7 ; 0x07 + 8ca: 91 01 movw r18, r2 + 8cc: 28 1b sub r18, r24 + 8ce: 39 0b sbc r19, r25 + 8d0: b9 01 movw r22, r18 + 8d2: 37 ff sbrs r19, 7 + 8d4: 04 c0 rjmp .+8 ; 0x8de <_fpadd_parts+0xb2> + 8d6: 66 27 eor r22, r22 + 8d8: 77 27 eor r23, r23 + 8da: 62 1b sub r22, r18 + 8dc: 73 0b sbc r23, r19 + 8de: 60 32 cpi r22, 0x20 ; 32 + 8e0: 71 05 cpc r23, r1 + 8e2: 0c f0 brlt .+2 ; 0x8e6 <_fpadd_parts+0xba> + 8e4: 61 c0 rjmp .+194 ; 0x9a8 <__stack+0xa9> + 8e6: 12 16 cp r1, r18 + 8e8: 13 06 cpc r1, r19 + 8ea: 6c f5 brge .+90 ; 0x946 <__stack+0x47> + 8ec: 37 01 movw r6, r14 + 8ee: 48 01 movw r8, r16 + 8f0: 06 2e mov r0, r22 + 8f2: 04 c0 rjmp .+8 ; 0x8fc <_fpadd_parts+0xd0> + 8f4: 96 94 lsr r9 + 8f6: 87 94 ror r8 + 8f8: 77 94 ror r7 + 8fa: 67 94 ror r6 + 8fc: 0a 94 dec r0 + 8fe: d2 f7 brpl .-12 ; 0x8f4 <_fpadd_parts+0xc8> + 900: 21 e0 ldi r18, 0x01 ; 1 + 902: 30 e0 ldi r19, 0x00 ; 0 + 904: 40 e0 ldi r20, 0x00 ; 0 + 906: 50 e0 ldi r21, 0x00 ; 0 + 908: 04 c0 rjmp .+8 ; 0x912 <__stack+0x13> + 90a: 22 0f add r18, r18 + 90c: 33 1f adc r19, r19 + 90e: 44 1f adc r20, r20 + 910: 55 1f adc r21, r21 + 912: 6a 95 dec r22 + 914: d2 f7 brpl .-12 ; 0x90a <__stack+0xb> + 916: 21 50 subi r18, 0x01 ; 1 + 918: 30 40 sbci r19, 0x00 ; 0 + 91a: 40 40 sbci r20, 0x00 ; 0 + 91c: 50 40 sbci r21, 0x00 ; 0 + 91e: 2e 21 and r18, r14 + 920: 3f 21 and r19, r15 + 922: 40 23 and r20, r16 + 924: 51 23 and r21, r17 + 926: 21 15 cp r18, r1 + 928: 31 05 cpc r19, r1 + 92a: 41 05 cpc r20, r1 + 92c: 51 05 cpc r21, r1 + 92e: 21 f0 breq .+8 ; 0x938 <__stack+0x39> + 930: 21 e0 ldi r18, 0x01 ; 1 + 932: 30 e0 ldi r19, 0x00 ; 0 + 934: 40 e0 ldi r20, 0x00 ; 0 + 936: 50 e0 ldi r21, 0x00 ; 0 + 938: 79 01 movw r14, r18 + 93a: 8a 01 movw r16, r20 + 93c: e6 28 or r14, r6 + 93e: f7 28 or r15, r7 + 940: 08 29 or r16, r8 + 942: 19 29 or r17, r9 + 944: 3c c0 rjmp .+120 ; 0x9be <__stack+0xbf> + 946: 23 2b or r18, r19 + 948: d1 f1 breq .+116 ; 0x9be <__stack+0xbf> + 94a: 26 0e add r2, r22 + 94c: 37 1e adc r3, r23 + 94e: 35 01 movw r6, r10 + 950: 46 01 movw r8, r12 + 952: 06 2e mov r0, r22 + 954: 04 c0 rjmp .+8 ; 0x95e <__stack+0x5f> + 956: 96 94 lsr r9 + 958: 87 94 ror r8 + 95a: 77 94 ror r7 + 95c: 67 94 ror r6 + 95e: 0a 94 dec r0 + 960: d2 f7 brpl .-12 ; 0x956 <__stack+0x57> + 962: 21 e0 ldi r18, 0x01 ; 1 + 964: 30 e0 ldi r19, 0x00 ; 0 + 966: 40 e0 ldi r20, 0x00 ; 0 + 968: 50 e0 ldi r21, 0x00 ; 0 + 96a: 04 c0 rjmp .+8 ; 0x974 <__stack+0x75> + 96c: 22 0f add r18, r18 + 96e: 33 1f adc r19, r19 + 970: 44 1f adc r20, r20 + 972: 55 1f adc r21, r21 + 974: 6a 95 dec r22 + 976: d2 f7 brpl .-12 ; 0x96c <__stack+0x6d> + 978: 21 50 subi r18, 0x01 ; 1 + 97a: 30 40 sbci r19, 0x00 ; 0 + 97c: 40 40 sbci r20, 0x00 ; 0 + 97e: 50 40 sbci r21, 0x00 ; 0 + 980: 2a 21 and r18, r10 + 982: 3b 21 and r19, r11 + 984: 4c 21 and r20, r12 + 986: 5d 21 and r21, r13 + 988: 21 15 cp r18, r1 + 98a: 31 05 cpc r19, r1 + 98c: 41 05 cpc r20, r1 + 98e: 51 05 cpc r21, r1 + 990: 21 f0 breq .+8 ; 0x99a <__stack+0x9b> + 992: 21 e0 ldi r18, 0x01 ; 1 + 994: 30 e0 ldi r19, 0x00 ; 0 + 996: 40 e0 ldi r20, 0x00 ; 0 + 998: 50 e0 ldi r21, 0x00 ; 0 + 99a: 59 01 movw r10, r18 + 99c: 6a 01 movw r12, r20 + 99e: a6 28 or r10, r6 + 9a0: b7 28 or r11, r7 + 9a2: c8 28 or r12, r8 + 9a4: d9 28 or r13, r9 + 9a6: 0b c0 rjmp .+22 ; 0x9be <__stack+0xbf> + 9a8: 82 15 cp r24, r2 + 9aa: 93 05 cpc r25, r3 + 9ac: 2c f0 brlt .+10 ; 0x9b8 <__stack+0xb9> + 9ae: 1c 01 movw r2, r24 + 9b0: aa 24 eor r10, r10 + 9b2: bb 24 eor r11, r11 + 9b4: 65 01 movw r12, r10 + 9b6: 03 c0 rjmp .+6 ; 0x9be <__stack+0xbf> + 9b8: ee 24 eor r14, r14 + 9ba: ff 24 eor r15, r15 + 9bc: 87 01 movw r16, r14 + 9be: 11 96 adiw r26, 0x01 ; 1 + 9c0: 9c 91 ld r25, X + 9c2: d2 01 movw r26, r4 + 9c4: 11 96 adiw r26, 0x01 ; 1 + 9c6: 8c 91 ld r24, X + 9c8: 98 17 cp r25, r24 + 9ca: 09 f4 brne .+2 ; 0x9ce <__stack+0xcf> + 9cc: 45 c0 rjmp .+138 ; 0xa58 <__stack+0x159> + 9ce: 99 23 and r25, r25 + 9d0: 39 f0 breq .+14 ; 0x9e0 <__stack+0xe1> + 9d2: a8 01 movw r20, r16 + 9d4: 97 01 movw r18, r14 + 9d6: 2a 19 sub r18, r10 + 9d8: 3b 09 sbc r19, r11 + 9da: 4c 09 sbc r20, r12 + 9dc: 5d 09 sbc r21, r13 + 9de: 06 c0 rjmp .+12 ; 0x9ec <__stack+0xed> + 9e0: a6 01 movw r20, r12 + 9e2: 95 01 movw r18, r10 + 9e4: 2e 19 sub r18, r14 + 9e6: 3f 09 sbc r19, r15 + 9e8: 40 0b sbc r20, r16 + 9ea: 51 0b sbc r21, r17 + 9ec: 57 fd sbrc r21, 7 + 9ee: 08 c0 rjmp .+16 ; 0xa00 <__stack+0x101> + 9f0: 11 82 std Z+1, r1 ; 0x01 + 9f2: 33 82 std Z+3, r3 ; 0x03 + 9f4: 22 82 std Z+2, r2 ; 0x02 + 9f6: 24 83 std Z+4, r18 ; 0x04 + 9f8: 35 83 std Z+5, r19 ; 0x05 + 9fa: 46 83 std Z+6, r20 ; 0x06 + 9fc: 57 83 std Z+7, r21 ; 0x07 + 9fe: 1d c0 rjmp .+58 ; 0xa3a <__stack+0x13b> + a00: 81 e0 ldi r24, 0x01 ; 1 + a02: 81 83 std Z+1, r24 ; 0x01 + a04: 33 82 std Z+3, r3 ; 0x03 + a06: 22 82 std Z+2, r2 ; 0x02 + a08: 88 27 eor r24, r24 + a0a: 99 27 eor r25, r25 + a0c: dc 01 movw r26, r24 + a0e: 82 1b sub r24, r18 + a10: 93 0b sbc r25, r19 + a12: a4 0b sbc r26, r20 + a14: b5 0b sbc r27, r21 + a16: 84 83 std Z+4, r24 ; 0x04 + a18: 95 83 std Z+5, r25 ; 0x05 + a1a: a6 83 std Z+6, r26 ; 0x06 + a1c: b7 83 std Z+7, r27 ; 0x07 + a1e: 0d c0 rjmp .+26 ; 0xa3a <__stack+0x13b> + a20: 22 0f add r18, r18 + a22: 33 1f adc r19, r19 + a24: 44 1f adc r20, r20 + a26: 55 1f adc r21, r21 + a28: 24 83 std Z+4, r18 ; 0x04 + a2a: 35 83 std Z+5, r19 ; 0x05 + a2c: 46 83 std Z+6, r20 ; 0x06 + a2e: 57 83 std Z+7, r21 ; 0x07 + a30: 82 81 ldd r24, Z+2 ; 0x02 + a32: 93 81 ldd r25, Z+3 ; 0x03 + a34: 01 97 sbiw r24, 0x01 ; 1 + a36: 93 83 std Z+3, r25 ; 0x03 + a38: 82 83 std Z+2, r24 ; 0x02 + a3a: 24 81 ldd r18, Z+4 ; 0x04 + a3c: 35 81 ldd r19, Z+5 ; 0x05 + a3e: 46 81 ldd r20, Z+6 ; 0x06 + a40: 57 81 ldd r21, Z+7 ; 0x07 + a42: da 01 movw r26, r20 + a44: c9 01 movw r24, r18 + a46: 01 97 sbiw r24, 0x01 ; 1 + a48: a1 09 sbc r26, r1 + a4a: b1 09 sbc r27, r1 + a4c: 8f 5f subi r24, 0xFF ; 255 + a4e: 9f 4f sbci r25, 0xFF ; 255 + a50: af 4f sbci r26, 0xFF ; 255 + a52: bf 43 sbci r27, 0x3F ; 63 + a54: 28 f3 brcs .-54 ; 0xa20 <__stack+0x121> + a56: 0b c0 rjmp .+22 ; 0xa6e <__stack+0x16f> + a58: 91 83 std Z+1, r25 ; 0x01 + a5a: 33 82 std Z+3, r3 ; 0x03 + a5c: 22 82 std Z+2, r2 ; 0x02 + a5e: ea 0c add r14, r10 + a60: fb 1c adc r15, r11 + a62: 0c 1d adc r16, r12 + a64: 1d 1d adc r17, r13 + a66: e4 82 std Z+4, r14 ; 0x04 + a68: f5 82 std Z+5, r15 ; 0x05 + a6a: 06 83 std Z+6, r16 ; 0x06 + a6c: 17 83 std Z+7, r17 ; 0x07 + a6e: 83 e0 ldi r24, 0x03 ; 3 + a70: 80 83 st Z, r24 + a72: 24 81 ldd r18, Z+4 ; 0x04 + a74: 35 81 ldd r19, Z+5 ; 0x05 + a76: 46 81 ldd r20, Z+6 ; 0x06 + a78: 57 81 ldd r21, Z+7 ; 0x07 + a7a: 57 ff sbrs r21, 7 + a7c: 1a c0 rjmp .+52 ; 0xab2 <__stack+0x1b3> + a7e: c9 01 movw r24, r18 + a80: aa 27 eor r26, r26 + a82: 97 fd sbrc r25, 7 + a84: a0 95 com r26 + a86: ba 2f mov r27, r26 + a88: 81 70 andi r24, 0x01 ; 1 + a8a: 90 70 andi r25, 0x00 ; 0 + a8c: a0 70 andi r26, 0x00 ; 0 + a8e: b0 70 andi r27, 0x00 ; 0 + a90: 56 95 lsr r21 + a92: 47 95 ror r20 + a94: 37 95 ror r19 + a96: 27 95 ror r18 + a98: 82 2b or r24, r18 + a9a: 93 2b or r25, r19 + a9c: a4 2b or r26, r20 + a9e: b5 2b or r27, r21 + aa0: 84 83 std Z+4, r24 ; 0x04 + aa2: 95 83 std Z+5, r25 ; 0x05 + aa4: a6 83 std Z+6, r26 ; 0x06 + aa6: b7 83 std Z+7, r27 ; 0x07 + aa8: 82 81 ldd r24, Z+2 ; 0x02 + aaa: 93 81 ldd r25, Z+3 ; 0x03 + aac: 01 96 adiw r24, 0x01 ; 1 + aae: 93 83 std Z+3, r25 ; 0x03 + ab0: 82 83 std Z+2, r24 ; 0x02 + ab2: df 01 movw r26, r30 + ab4: 01 c0 rjmp .+2 ; 0xab8 <__stack+0x1b9> + ab6: d2 01 movw r26, r4 + ab8: cd 01 movw r24, r26 + aba: cd b7 in r28, 0x3d ; 61 + abc: de b7 in r29, 0x3e ; 62 + abe: e2 e1 ldi r30, 0x12 ; 18 + ac0: 0c 94 87 09 jmp 0x130e ; 0x130e <__epilogue_restores__> + +00000ac4 <__subsf3>: + ac4: a0 e2 ldi r26, 0x20 ; 32 + ac6: b0 e0 ldi r27, 0x00 ; 0 + ac8: e8 e6 ldi r30, 0x68 ; 104 + aca: f5 e0 ldi r31, 0x05 ; 5 + acc: 0c 94 77 09 jmp 0x12ee ; 0x12ee <__prologue_saves__+0x18> + ad0: 69 83 std Y+1, r22 ; 0x01 + ad2: 7a 83 std Y+2, r23 ; 0x02 + ad4: 8b 83 std Y+3, r24 ; 0x03 + ad6: 9c 83 std Y+4, r25 ; 0x04 + ad8: 2d 83 std Y+5, r18 ; 0x05 + ada: 3e 83 std Y+6, r19 ; 0x06 + adc: 4f 83 std Y+7, r20 ; 0x07 + ade: 58 87 std Y+8, r21 ; 0x08 + ae0: e9 e0 ldi r30, 0x09 ; 9 + ae2: ee 2e mov r14, r30 + ae4: f1 2c mov r15, r1 + ae6: ec 0e add r14, r28 + ae8: fd 1e adc r15, r29 + aea: ce 01 movw r24, r28 + aec: 01 96 adiw r24, 0x01 ; 1 + aee: b7 01 movw r22, r14 + af0: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + af4: 8e 01 movw r16, r28 + af6: 0f 5e subi r16, 0xEF ; 239 + af8: 1f 4f sbci r17, 0xFF ; 255 + afa: ce 01 movw r24, r28 + afc: 05 96 adiw r24, 0x05 ; 5 + afe: b8 01 movw r22, r16 + b00: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + b04: 8a 89 ldd r24, Y+18 ; 0x12 + b06: 91 e0 ldi r25, 0x01 ; 1 + b08: 89 27 eor r24, r25 + b0a: 8a 8b std Y+18, r24 ; 0x12 + b0c: c7 01 movw r24, r14 + b0e: b8 01 movw r22, r16 + b10: ae 01 movw r20, r28 + b12: 47 5e subi r20, 0xE7 ; 231 + b14: 5f 4f sbci r21, 0xFF ; 255 + b16: 0e 94 16 04 call 0x82c ; 0x82c <_fpadd_parts> + b1a: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + b1e: a0 96 adiw r28, 0x20 ; 32 + b20: e6 e0 ldi r30, 0x06 ; 6 + b22: 0c 94 93 09 jmp 0x1326 ; 0x1326 <__epilogue_restores__+0x18> + +00000b26 <__addsf3>: + b26: a0 e2 ldi r26, 0x20 ; 32 + b28: b0 e0 ldi r27, 0x00 ; 0 + b2a: e9 e9 ldi r30, 0x99 ; 153 + b2c: f5 e0 ldi r31, 0x05 ; 5 + b2e: 0c 94 77 09 jmp 0x12ee ; 0x12ee <__prologue_saves__+0x18> + b32: 69 83 std Y+1, r22 ; 0x01 + b34: 7a 83 std Y+2, r23 ; 0x02 + b36: 8b 83 std Y+3, r24 ; 0x03 + b38: 9c 83 std Y+4, r25 ; 0x04 + b3a: 2d 83 std Y+5, r18 ; 0x05 + b3c: 3e 83 std Y+6, r19 ; 0x06 + b3e: 4f 83 std Y+7, r20 ; 0x07 + b40: 58 87 std Y+8, r21 ; 0x08 + b42: f9 e0 ldi r31, 0x09 ; 9 + b44: ef 2e mov r14, r31 + b46: f1 2c mov r15, r1 + b48: ec 0e add r14, r28 + b4a: fd 1e adc r15, r29 + b4c: ce 01 movw r24, r28 + b4e: 01 96 adiw r24, 0x01 ; 1 + b50: b7 01 movw r22, r14 + b52: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + b56: 8e 01 movw r16, r28 + b58: 0f 5e subi r16, 0xEF ; 239 + b5a: 1f 4f sbci r17, 0xFF ; 255 + b5c: ce 01 movw r24, r28 + b5e: 05 96 adiw r24, 0x05 ; 5 + b60: b8 01 movw r22, r16 + b62: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + b66: c7 01 movw r24, r14 + b68: b8 01 movw r22, r16 + b6a: ae 01 movw r20, r28 + b6c: 47 5e subi r20, 0xE7 ; 231 + b6e: 5f 4f sbci r21, 0xFF ; 255 + b70: 0e 94 16 04 call 0x82c ; 0x82c <_fpadd_parts> + b74: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + b78: a0 96 adiw r28, 0x20 ; 32 + b7a: e6 e0 ldi r30, 0x06 ; 6 + b7c: 0c 94 93 09 jmp 0x1326 ; 0x1326 <__epilogue_restores__+0x18> + +00000b80 <__mulsf3>: + b80: a0 e2 ldi r26, 0x20 ; 32 + b82: b0 e0 ldi r27, 0x00 ; 0 + b84: e6 ec ldi r30, 0xC6 ; 198 + b86: f5 e0 ldi r31, 0x05 ; 5 + b88: 0c 94 6b 09 jmp 0x12d6 ; 0x12d6 <__prologue_saves__> + b8c: 69 83 std Y+1, r22 ; 0x01 + b8e: 7a 83 std Y+2, r23 ; 0x02 + b90: 8b 83 std Y+3, r24 ; 0x03 + b92: 9c 83 std Y+4, r25 ; 0x04 + b94: 2d 83 std Y+5, r18 ; 0x05 + b96: 3e 83 std Y+6, r19 ; 0x06 + b98: 4f 83 std Y+7, r20 ; 0x07 + b9a: 58 87 std Y+8, r21 ; 0x08 + b9c: ce 01 movw r24, r28 + b9e: 01 96 adiw r24, 0x01 ; 1 + ba0: be 01 movw r22, r28 + ba2: 67 5f subi r22, 0xF7 ; 247 + ba4: 7f 4f sbci r23, 0xFF ; 255 + ba6: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + baa: ce 01 movw r24, r28 + bac: 05 96 adiw r24, 0x05 ; 5 + bae: be 01 movw r22, r28 + bb0: 6f 5e subi r22, 0xEF ; 239 + bb2: 7f 4f sbci r23, 0xFF ; 255 + bb4: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + bb8: 99 85 ldd r25, Y+9 ; 0x09 + bba: 92 30 cpi r25, 0x02 ; 2 + bbc: 88 f0 brcs .+34 ; 0xbe0 <__mulsf3+0x60> + bbe: 89 89 ldd r24, Y+17 ; 0x11 + bc0: 82 30 cpi r24, 0x02 ; 2 + bc2: c8 f0 brcs .+50 ; 0xbf6 <__mulsf3+0x76> + bc4: 94 30 cpi r25, 0x04 ; 4 + bc6: 19 f4 brne .+6 ; 0xbce <__mulsf3+0x4e> + bc8: 82 30 cpi r24, 0x02 ; 2 + bca: 51 f4 brne .+20 ; 0xbe0 <__mulsf3+0x60> + bcc: 04 c0 rjmp .+8 ; 0xbd6 <__mulsf3+0x56> + bce: 84 30 cpi r24, 0x04 ; 4 + bd0: 29 f4 brne .+10 ; 0xbdc <__mulsf3+0x5c> + bd2: 92 30 cpi r25, 0x02 ; 2 + bd4: 81 f4 brne .+32 ; 0xbf6 <__mulsf3+0x76> + bd6: 89 e1 ldi r24, 0x19 ; 25 + bd8: 91 e0 ldi r25, 0x01 ; 1 + bda: c6 c0 rjmp .+396 ; 0xd68 <__mulsf3+0x1e8> + bdc: 92 30 cpi r25, 0x02 ; 2 + bde: 49 f4 brne .+18 ; 0xbf2 <__mulsf3+0x72> + be0: 20 e0 ldi r18, 0x00 ; 0 + be2: 9a 85 ldd r25, Y+10 ; 0x0a + be4: 8a 89 ldd r24, Y+18 ; 0x12 + be6: 98 13 cpse r25, r24 + be8: 21 e0 ldi r18, 0x01 ; 1 + bea: 2a 87 std Y+10, r18 ; 0x0a + bec: ce 01 movw r24, r28 + bee: 09 96 adiw r24, 0x09 ; 9 + bf0: bb c0 rjmp .+374 ; 0xd68 <__mulsf3+0x1e8> + bf2: 82 30 cpi r24, 0x02 ; 2 + bf4: 49 f4 brne .+18 ; 0xc08 <__mulsf3+0x88> + bf6: 20 e0 ldi r18, 0x00 ; 0 + bf8: 9a 85 ldd r25, Y+10 ; 0x0a + bfa: 8a 89 ldd r24, Y+18 ; 0x12 + bfc: 98 13 cpse r25, r24 + bfe: 21 e0 ldi r18, 0x01 ; 1 + c00: 2a 8b std Y+18, r18 ; 0x12 + c02: ce 01 movw r24, r28 + c04: 41 96 adiw r24, 0x11 ; 17 + c06: b0 c0 rjmp .+352 ; 0xd68 <__mulsf3+0x1e8> + c08: 2d 84 ldd r2, Y+13 ; 0x0d + c0a: 3e 84 ldd r3, Y+14 ; 0x0e + c0c: 4f 84 ldd r4, Y+15 ; 0x0f + c0e: 58 88 ldd r5, Y+16 ; 0x10 + c10: 6d 88 ldd r6, Y+21 ; 0x15 + c12: 7e 88 ldd r7, Y+22 ; 0x16 + c14: 8f 88 ldd r8, Y+23 ; 0x17 + c16: 98 8c ldd r9, Y+24 ; 0x18 + c18: ee 24 eor r14, r14 + c1a: ff 24 eor r15, r15 + c1c: 87 01 movw r16, r14 + c1e: aa 24 eor r10, r10 + c20: bb 24 eor r11, r11 + c22: 65 01 movw r12, r10 + c24: 40 e0 ldi r20, 0x00 ; 0 + c26: 50 e0 ldi r21, 0x00 ; 0 + c28: 60 e0 ldi r22, 0x00 ; 0 + c2a: 70 e0 ldi r23, 0x00 ; 0 + c2c: e0 e0 ldi r30, 0x00 ; 0 + c2e: f0 e0 ldi r31, 0x00 ; 0 + c30: c1 01 movw r24, r2 + c32: 81 70 andi r24, 0x01 ; 1 + c34: 90 70 andi r25, 0x00 ; 0 + c36: 89 2b or r24, r25 + c38: e9 f0 breq .+58 ; 0xc74 <__mulsf3+0xf4> + c3a: e6 0c add r14, r6 + c3c: f7 1c adc r15, r7 + c3e: 08 1d adc r16, r8 + c40: 19 1d adc r17, r9 + c42: 9a 01 movw r18, r20 + c44: ab 01 movw r20, r22 + c46: 2a 0d add r18, r10 + c48: 3b 1d adc r19, r11 + c4a: 4c 1d adc r20, r12 + c4c: 5d 1d adc r21, r13 + c4e: 80 e0 ldi r24, 0x00 ; 0 + c50: 90 e0 ldi r25, 0x00 ; 0 + c52: a0 e0 ldi r26, 0x00 ; 0 + c54: b0 e0 ldi r27, 0x00 ; 0 + c56: e6 14 cp r14, r6 + c58: f7 04 cpc r15, r7 + c5a: 08 05 cpc r16, r8 + c5c: 19 05 cpc r17, r9 + c5e: 20 f4 brcc .+8 ; 0xc68 <__mulsf3+0xe8> + c60: 81 e0 ldi r24, 0x01 ; 1 + c62: 90 e0 ldi r25, 0x00 ; 0 + c64: a0 e0 ldi r26, 0x00 ; 0 + c66: b0 e0 ldi r27, 0x00 ; 0 + c68: ba 01 movw r22, r20 + c6a: a9 01 movw r20, r18 + c6c: 48 0f add r20, r24 + c6e: 59 1f adc r21, r25 + c70: 6a 1f adc r22, r26 + c72: 7b 1f adc r23, r27 + c74: aa 0c add r10, r10 + c76: bb 1c adc r11, r11 + c78: cc 1c adc r12, r12 + c7a: dd 1c adc r13, r13 + c7c: 97 fe sbrs r9, 7 + c7e: 08 c0 rjmp .+16 ; 0xc90 <__mulsf3+0x110> + c80: 81 e0 ldi r24, 0x01 ; 1 + c82: 90 e0 ldi r25, 0x00 ; 0 + c84: a0 e0 ldi r26, 0x00 ; 0 + c86: b0 e0 ldi r27, 0x00 ; 0 + c88: a8 2a or r10, r24 + c8a: b9 2a or r11, r25 + c8c: ca 2a or r12, r26 + c8e: db 2a or r13, r27 + c90: 31 96 adiw r30, 0x01 ; 1 + c92: e0 32 cpi r30, 0x20 ; 32 + c94: f1 05 cpc r31, r1 + c96: 49 f0 breq .+18 ; 0xcaa <__mulsf3+0x12a> + c98: 66 0c add r6, r6 + c9a: 77 1c adc r7, r7 + c9c: 88 1c adc r8, r8 + c9e: 99 1c adc r9, r9 + ca0: 56 94 lsr r5 + ca2: 47 94 ror r4 + ca4: 37 94 ror r3 + ca6: 27 94 ror r2 + ca8: c3 cf rjmp .-122 ; 0xc30 <__mulsf3+0xb0> + caa: fa 85 ldd r31, Y+10 ; 0x0a + cac: ea 89 ldd r30, Y+18 ; 0x12 + cae: 2b 89 ldd r18, Y+19 ; 0x13 + cb0: 3c 89 ldd r19, Y+20 ; 0x14 + cb2: 8b 85 ldd r24, Y+11 ; 0x0b + cb4: 9c 85 ldd r25, Y+12 ; 0x0c + cb6: 28 0f add r18, r24 + cb8: 39 1f adc r19, r25 + cba: 2e 5f subi r18, 0xFE ; 254 + cbc: 3f 4f sbci r19, 0xFF ; 255 + cbe: 17 c0 rjmp .+46 ; 0xcee <__mulsf3+0x16e> + cc0: ca 01 movw r24, r20 + cc2: 81 70 andi r24, 0x01 ; 1 + cc4: 90 70 andi r25, 0x00 ; 0 + cc6: 89 2b or r24, r25 + cc8: 61 f0 breq .+24 ; 0xce2 <__mulsf3+0x162> + cca: 16 95 lsr r17 + ccc: 07 95 ror r16 + cce: f7 94 ror r15 + cd0: e7 94 ror r14 + cd2: 80 e0 ldi r24, 0x00 ; 0 + cd4: 90 e0 ldi r25, 0x00 ; 0 + cd6: a0 e0 ldi r26, 0x00 ; 0 + cd8: b0 e8 ldi r27, 0x80 ; 128 + cda: e8 2a or r14, r24 + cdc: f9 2a or r15, r25 + cde: 0a 2b or r16, r26 + ce0: 1b 2b or r17, r27 + ce2: 76 95 lsr r23 + ce4: 67 95 ror r22 + ce6: 57 95 ror r21 + ce8: 47 95 ror r20 + cea: 2f 5f subi r18, 0xFF ; 255 + cec: 3f 4f sbci r19, 0xFF ; 255 + cee: 77 fd sbrc r23, 7 + cf0: e7 cf rjmp .-50 ; 0xcc0 <__mulsf3+0x140> + cf2: 0c c0 rjmp .+24 ; 0xd0c <__mulsf3+0x18c> + cf4: 44 0f add r20, r20 + cf6: 55 1f adc r21, r21 + cf8: 66 1f adc r22, r22 + cfa: 77 1f adc r23, r23 + cfc: 17 fd sbrc r17, 7 + cfe: 41 60 ori r20, 0x01 ; 1 + d00: ee 0c add r14, r14 + d02: ff 1c adc r15, r15 + d04: 00 1f adc r16, r16 + d06: 11 1f adc r17, r17 + d08: 21 50 subi r18, 0x01 ; 1 + d0a: 30 40 sbci r19, 0x00 ; 0 + d0c: 40 30 cpi r20, 0x00 ; 0 + d0e: 90 e0 ldi r25, 0x00 ; 0 + d10: 59 07 cpc r21, r25 + d12: 90 e0 ldi r25, 0x00 ; 0 + d14: 69 07 cpc r22, r25 + d16: 90 e4 ldi r25, 0x40 ; 64 + d18: 79 07 cpc r23, r25 + d1a: 60 f3 brcs .-40 ; 0xcf4 <__mulsf3+0x174> + d1c: 2b 8f std Y+27, r18 ; 0x1b + d1e: 3c 8f std Y+28, r19 ; 0x1c + d20: db 01 movw r26, r22 + d22: ca 01 movw r24, r20 + d24: 8f 77 andi r24, 0x7F ; 127 + d26: 90 70 andi r25, 0x00 ; 0 + d28: a0 70 andi r26, 0x00 ; 0 + d2a: b0 70 andi r27, 0x00 ; 0 + d2c: 80 34 cpi r24, 0x40 ; 64 + d2e: 91 05 cpc r25, r1 + d30: a1 05 cpc r26, r1 + d32: b1 05 cpc r27, r1 + d34: 61 f4 brne .+24 ; 0xd4e <__mulsf3+0x1ce> + d36: 47 fd sbrc r20, 7 + d38: 0a c0 rjmp .+20 ; 0xd4e <__mulsf3+0x1ce> + d3a: e1 14 cp r14, r1 + d3c: f1 04 cpc r15, r1 + d3e: 01 05 cpc r16, r1 + d40: 11 05 cpc r17, r1 + d42: 29 f0 breq .+10 ; 0xd4e <__mulsf3+0x1ce> + d44: 40 5c subi r20, 0xC0 ; 192 + d46: 5f 4f sbci r21, 0xFF ; 255 + d48: 6f 4f sbci r22, 0xFF ; 255 + d4a: 7f 4f sbci r23, 0xFF ; 255 + d4c: 40 78 andi r20, 0x80 ; 128 + d4e: 1a 8e std Y+26, r1 ; 0x1a + d50: fe 17 cp r31, r30 + d52: 11 f0 breq .+4 ; 0xd58 <__mulsf3+0x1d8> + d54: 81 e0 ldi r24, 0x01 ; 1 + d56: 8a 8f std Y+26, r24 ; 0x1a + d58: 4d 8f std Y+29, r20 ; 0x1d + d5a: 5e 8f std Y+30, r21 ; 0x1e + d5c: 6f 8f std Y+31, r22 ; 0x1f + d5e: 78 a3 std Y+32, r23 ; 0x20 + d60: 83 e0 ldi r24, 0x03 ; 3 + d62: 89 8f std Y+25, r24 ; 0x19 + d64: ce 01 movw r24, r28 + d66: 49 96 adiw r24, 0x19 ; 25 + d68: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + d6c: a0 96 adiw r28, 0x20 ; 32 + d6e: e2 e1 ldi r30, 0x12 ; 18 + d70: 0c 94 87 09 jmp 0x130e ; 0x130e <__epilogue_restores__> + +00000d74 <__divsf3>: + d74: a8 e1 ldi r26, 0x18 ; 24 + d76: b0 e0 ldi r27, 0x00 ; 0 + d78: e0 ec ldi r30, 0xC0 ; 192 + d7a: f6 e0 ldi r31, 0x06 ; 6 + d7c: 0c 94 73 09 jmp 0x12e6 ; 0x12e6 <__prologue_saves__+0x10> + d80: 69 83 std Y+1, r22 ; 0x01 + d82: 7a 83 std Y+2, r23 ; 0x02 + d84: 8b 83 std Y+3, r24 ; 0x03 + d86: 9c 83 std Y+4, r25 ; 0x04 + d88: 2d 83 std Y+5, r18 ; 0x05 + d8a: 3e 83 std Y+6, r19 ; 0x06 + d8c: 4f 83 std Y+7, r20 ; 0x07 + d8e: 58 87 std Y+8, r21 ; 0x08 + d90: b9 e0 ldi r27, 0x09 ; 9 + d92: eb 2e mov r14, r27 + d94: f1 2c mov r15, r1 + d96: ec 0e add r14, r28 + d98: fd 1e adc r15, r29 + d9a: ce 01 movw r24, r28 + d9c: 01 96 adiw r24, 0x01 ; 1 + d9e: b7 01 movw r22, r14 + da0: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + da4: 8e 01 movw r16, r28 + da6: 0f 5e subi r16, 0xEF ; 239 + da8: 1f 4f sbci r17, 0xFF ; 255 + daa: ce 01 movw r24, r28 + dac: 05 96 adiw r24, 0x05 ; 5 + dae: b8 01 movw r22, r16 + db0: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + db4: 29 85 ldd r18, Y+9 ; 0x09 + db6: 22 30 cpi r18, 0x02 ; 2 + db8: 08 f4 brcc .+2 ; 0xdbc <__divsf3+0x48> + dba: 7e c0 rjmp .+252 ; 0xeb8 <__divsf3+0x144> + dbc: 39 89 ldd r19, Y+17 ; 0x11 + dbe: 32 30 cpi r19, 0x02 ; 2 + dc0: 10 f4 brcc .+4 ; 0xdc6 <__divsf3+0x52> + dc2: b8 01 movw r22, r16 + dc4: 7c c0 rjmp .+248 ; 0xebe <__divsf3+0x14a> + dc6: 8a 85 ldd r24, Y+10 ; 0x0a + dc8: 9a 89 ldd r25, Y+18 ; 0x12 + dca: 89 27 eor r24, r25 + dcc: 8a 87 std Y+10, r24 ; 0x0a + dce: 24 30 cpi r18, 0x04 ; 4 + dd0: 11 f0 breq .+4 ; 0xdd6 <__divsf3+0x62> + dd2: 22 30 cpi r18, 0x02 ; 2 + dd4: 31 f4 brne .+12 ; 0xde2 <__divsf3+0x6e> + dd6: 23 17 cp r18, r19 + dd8: 09 f0 breq .+2 ; 0xddc <__divsf3+0x68> + dda: 6e c0 rjmp .+220 ; 0xeb8 <__divsf3+0x144> + ddc: 69 e1 ldi r22, 0x19 ; 25 + dde: 71 e0 ldi r23, 0x01 ; 1 + de0: 6e c0 rjmp .+220 ; 0xebe <__divsf3+0x14a> + de2: 34 30 cpi r19, 0x04 ; 4 + de4: 39 f4 brne .+14 ; 0xdf4 <__divsf3+0x80> + de6: 1d 86 std Y+13, r1 ; 0x0d + de8: 1e 86 std Y+14, r1 ; 0x0e + dea: 1f 86 std Y+15, r1 ; 0x0f + dec: 18 8a std Y+16, r1 ; 0x10 + dee: 1c 86 std Y+12, r1 ; 0x0c + df0: 1b 86 std Y+11, r1 ; 0x0b + df2: 04 c0 rjmp .+8 ; 0xdfc <__divsf3+0x88> + df4: 32 30 cpi r19, 0x02 ; 2 + df6: 21 f4 brne .+8 ; 0xe00 <__divsf3+0x8c> + df8: 84 e0 ldi r24, 0x04 ; 4 + dfa: 89 87 std Y+9, r24 ; 0x09 + dfc: b7 01 movw r22, r14 + dfe: 5f c0 rjmp .+190 ; 0xebe <__divsf3+0x14a> + e00: 2b 85 ldd r18, Y+11 ; 0x0b + e02: 3c 85 ldd r19, Y+12 ; 0x0c + e04: 8b 89 ldd r24, Y+19 ; 0x13 + e06: 9c 89 ldd r25, Y+20 ; 0x14 + e08: 28 1b sub r18, r24 + e0a: 39 0b sbc r19, r25 + e0c: 3c 87 std Y+12, r19 ; 0x0c + e0e: 2b 87 std Y+11, r18 ; 0x0b + e10: ed 84 ldd r14, Y+13 ; 0x0d + e12: fe 84 ldd r15, Y+14 ; 0x0e + e14: 0f 85 ldd r16, Y+15 ; 0x0f + e16: 18 89 ldd r17, Y+16 ; 0x10 + e18: ad 88 ldd r10, Y+21 ; 0x15 + e1a: be 88 ldd r11, Y+22 ; 0x16 + e1c: cf 88 ldd r12, Y+23 ; 0x17 + e1e: d8 8c ldd r13, Y+24 ; 0x18 + e20: ea 14 cp r14, r10 + e22: fb 04 cpc r15, r11 + e24: 0c 05 cpc r16, r12 + e26: 1d 05 cpc r17, r13 + e28: 40 f4 brcc .+16 ; 0xe3a <__divsf3+0xc6> + e2a: ee 0c add r14, r14 + e2c: ff 1c adc r15, r15 + e2e: 00 1f adc r16, r16 + e30: 11 1f adc r17, r17 + e32: 21 50 subi r18, 0x01 ; 1 + e34: 30 40 sbci r19, 0x00 ; 0 + e36: 3c 87 std Y+12, r19 ; 0x0c + e38: 2b 87 std Y+11, r18 ; 0x0b + e3a: 20 e0 ldi r18, 0x00 ; 0 + e3c: 30 e0 ldi r19, 0x00 ; 0 + e3e: 40 e0 ldi r20, 0x00 ; 0 + e40: 50 e0 ldi r21, 0x00 ; 0 + e42: 80 e0 ldi r24, 0x00 ; 0 + e44: 90 e0 ldi r25, 0x00 ; 0 + e46: a0 e0 ldi r26, 0x00 ; 0 + e48: b0 e4 ldi r27, 0x40 ; 64 + e4a: 60 e0 ldi r22, 0x00 ; 0 + e4c: 70 e0 ldi r23, 0x00 ; 0 + e4e: ea 14 cp r14, r10 + e50: fb 04 cpc r15, r11 + e52: 0c 05 cpc r16, r12 + e54: 1d 05 cpc r17, r13 + e56: 40 f0 brcs .+16 ; 0xe68 <__divsf3+0xf4> + e58: 28 2b or r18, r24 + e5a: 39 2b or r19, r25 + e5c: 4a 2b or r20, r26 + e5e: 5b 2b or r21, r27 + e60: ea 18 sub r14, r10 + e62: fb 08 sbc r15, r11 + e64: 0c 09 sbc r16, r12 + e66: 1d 09 sbc r17, r13 + e68: b6 95 lsr r27 + e6a: a7 95 ror r26 + e6c: 97 95 ror r25 + e6e: 87 95 ror r24 + e70: ee 0c add r14, r14 + e72: ff 1c adc r15, r15 + e74: 00 1f adc r16, r16 + e76: 11 1f adc r17, r17 + e78: 6f 5f subi r22, 0xFF ; 255 + e7a: 7f 4f sbci r23, 0xFF ; 255 + e7c: 6f 31 cpi r22, 0x1F ; 31 + e7e: 71 05 cpc r23, r1 + e80: 31 f7 brne .-52 ; 0xe4e <__divsf3+0xda> + e82: da 01 movw r26, r20 + e84: c9 01 movw r24, r18 + e86: 8f 77 andi r24, 0x7F ; 127 + e88: 90 70 andi r25, 0x00 ; 0 + e8a: a0 70 andi r26, 0x00 ; 0 + e8c: b0 70 andi r27, 0x00 ; 0 + e8e: 80 34 cpi r24, 0x40 ; 64 + e90: 91 05 cpc r25, r1 + e92: a1 05 cpc r26, r1 + e94: b1 05 cpc r27, r1 + e96: 61 f4 brne .+24 ; 0xeb0 <__divsf3+0x13c> + e98: 27 fd sbrc r18, 7 + e9a: 0a c0 rjmp .+20 ; 0xeb0 <__divsf3+0x13c> + e9c: e1 14 cp r14, r1 + e9e: f1 04 cpc r15, r1 + ea0: 01 05 cpc r16, r1 + ea2: 11 05 cpc r17, r1 + ea4: 29 f0 breq .+10 ; 0xeb0 <__divsf3+0x13c> + ea6: 20 5c subi r18, 0xC0 ; 192 + ea8: 3f 4f sbci r19, 0xFF ; 255 + eaa: 4f 4f sbci r20, 0xFF ; 255 + eac: 5f 4f sbci r21, 0xFF ; 255 + eae: 20 78 andi r18, 0x80 ; 128 + eb0: 2d 87 std Y+13, r18 ; 0x0d + eb2: 3e 87 std Y+14, r19 ; 0x0e + eb4: 4f 87 std Y+15, r20 ; 0x0f + eb6: 58 8b std Y+16, r21 ; 0x10 + eb8: be 01 movw r22, r28 + eba: 67 5f subi r22, 0xF7 ; 247 + ebc: 7f 4f sbci r23, 0xFF ; 255 + ebe: cb 01 movw r24, r22 + ec0: 0e 94 ba 07 call 0xf74 ; 0xf74 <__pack_f> + ec4: 68 96 adiw r28, 0x18 ; 24 + ec6: ea e0 ldi r30, 0x0A ; 10 + ec8: 0c 94 8f 09 jmp 0x131e ; 0x131e <__epilogue_restores__+0x10> + +00000ecc <__fixsfsi>: + ecc: ac e0 ldi r26, 0x0C ; 12 + ece: b0 e0 ldi r27, 0x00 ; 0 + ed0: ec e6 ldi r30, 0x6C ; 108 + ed2: f7 e0 ldi r31, 0x07 ; 7 + ed4: 0c 94 7b 09 jmp 0x12f6 ; 0x12f6 <__prologue_saves__+0x20> + ed8: 69 83 std Y+1, r22 ; 0x01 + eda: 7a 83 std Y+2, r23 ; 0x02 + edc: 8b 83 std Y+3, r24 ; 0x03 + ede: 9c 83 std Y+4, r25 ; 0x04 + ee0: ce 01 movw r24, r28 + ee2: 01 96 adiw r24, 0x01 ; 1 + ee4: be 01 movw r22, r28 + ee6: 6b 5f subi r22, 0xFB ; 251 + ee8: 7f 4f sbci r23, 0xFF ; 255 + eea: 0e 94 8f 08 call 0x111e ; 0x111e <__unpack_f> + eee: 8d 81 ldd r24, Y+5 ; 0x05 + ef0: 82 30 cpi r24, 0x02 ; 2 + ef2: 61 f1 breq .+88 ; 0xf4c <__fixsfsi+0x80> + ef4: 82 30 cpi r24, 0x02 ; 2 + ef6: 50 f1 brcs .+84 ; 0xf4c <__fixsfsi+0x80> + ef8: 84 30 cpi r24, 0x04 ; 4 + efa: 21 f4 brne .+8 ; 0xf04 <__fixsfsi+0x38> + efc: 8e 81 ldd r24, Y+6 ; 0x06 + efe: 88 23 and r24, r24 + f00: 51 f1 breq .+84 ; 0xf56 <__fixsfsi+0x8a> + f02: 2e c0 rjmp .+92 ; 0xf60 <__fixsfsi+0x94> + f04: 2f 81 ldd r18, Y+7 ; 0x07 + f06: 38 85 ldd r19, Y+8 ; 0x08 + f08: 37 fd sbrc r19, 7 + f0a: 20 c0 rjmp .+64 ; 0xf4c <__fixsfsi+0x80> + f0c: 6e 81 ldd r22, Y+6 ; 0x06 + f0e: 2f 31 cpi r18, 0x1F ; 31 + f10: 31 05 cpc r19, r1 + f12: 1c f0 brlt .+6 ; 0xf1a <__fixsfsi+0x4e> + f14: 66 23 and r22, r22 + f16: f9 f0 breq .+62 ; 0xf56 <__fixsfsi+0x8a> + f18: 23 c0 rjmp .+70 ; 0xf60 <__fixsfsi+0x94> + f1a: 8e e1 ldi r24, 0x1E ; 30 + f1c: 90 e0 ldi r25, 0x00 ; 0 + f1e: 82 1b sub r24, r18 + f20: 93 0b sbc r25, r19 + f22: 29 85 ldd r18, Y+9 ; 0x09 + f24: 3a 85 ldd r19, Y+10 ; 0x0a + f26: 4b 85 ldd r20, Y+11 ; 0x0b + f28: 5c 85 ldd r21, Y+12 ; 0x0c + f2a: 04 c0 rjmp .+8 ; 0xf34 <__fixsfsi+0x68> + f2c: 56 95 lsr r21 + f2e: 47 95 ror r20 + f30: 37 95 ror r19 + f32: 27 95 ror r18 + f34: 8a 95 dec r24 + f36: d2 f7 brpl .-12 ; 0xf2c <__fixsfsi+0x60> + f38: 66 23 and r22, r22 + f3a: b1 f0 breq .+44 ; 0xf68 <__fixsfsi+0x9c> + f3c: 50 95 com r21 + f3e: 40 95 com r20 + f40: 30 95 com r19 + f42: 21 95 neg r18 + f44: 3f 4f sbci r19, 0xFF ; 255 + f46: 4f 4f sbci r20, 0xFF ; 255 + f48: 5f 4f sbci r21, 0xFF ; 255 + f4a: 0e c0 rjmp .+28 ; 0xf68 <__fixsfsi+0x9c> + f4c: 20 e0 ldi r18, 0x00 ; 0 + f4e: 30 e0 ldi r19, 0x00 ; 0 + f50: 40 e0 ldi r20, 0x00 ; 0 + f52: 50 e0 ldi r21, 0x00 ; 0 + f54: 09 c0 rjmp .+18 ; 0xf68 <__fixsfsi+0x9c> + f56: 2f ef ldi r18, 0xFF ; 255 + f58: 3f ef ldi r19, 0xFF ; 255 + f5a: 4f ef ldi r20, 0xFF ; 255 + f5c: 5f e7 ldi r21, 0x7F ; 127 + f5e: 04 c0 rjmp .+8 ; 0xf68 <__fixsfsi+0x9c> + f60: 20 e0 ldi r18, 0x00 ; 0 + f62: 30 e0 ldi r19, 0x00 ; 0 + f64: 40 e0 ldi r20, 0x00 ; 0 + f66: 50 e8 ldi r21, 0x80 ; 128 + f68: b9 01 movw r22, r18 + f6a: ca 01 movw r24, r20 + f6c: 2c 96 adiw r28, 0x0c ; 12 + f6e: e2 e0 ldi r30, 0x02 ; 2 + f70: 0c 94 97 09 jmp 0x132e ; 0x132e <__epilogue_restores__+0x20> + +00000f74 <__pack_f>: + f74: df 92 push r13 + f76: ef 92 push r14 + f78: ff 92 push r15 + f7a: 0f 93 push r16 + f7c: 1f 93 push r17 + f7e: fc 01 movw r30, r24 + f80: e4 80 ldd r14, Z+4 ; 0x04 + f82: f5 80 ldd r15, Z+5 ; 0x05 + f84: 06 81 ldd r16, Z+6 ; 0x06 + f86: 17 81 ldd r17, Z+7 ; 0x07 + f88: d1 80 ldd r13, Z+1 ; 0x01 + f8a: 80 81 ld r24, Z + f8c: 82 30 cpi r24, 0x02 ; 2 + f8e: 48 f4 brcc .+18 ; 0xfa2 <__pack_f+0x2e> + f90: 80 e0 ldi r24, 0x00 ; 0 + f92: 90 e0 ldi r25, 0x00 ; 0 + f94: a0 e1 ldi r26, 0x10 ; 16 + f96: b0 e0 ldi r27, 0x00 ; 0 + f98: e8 2a or r14, r24 + f9a: f9 2a or r15, r25 + f9c: 0a 2b or r16, r26 + f9e: 1b 2b or r17, r27 + fa0: a5 c0 rjmp .+330 ; 0x10ec <__pack_f+0x178> + fa2: 84 30 cpi r24, 0x04 ; 4 + fa4: 09 f4 brne .+2 ; 0xfa8 <__pack_f+0x34> + fa6: 9f c0 rjmp .+318 ; 0x10e6 <__pack_f+0x172> + fa8: 82 30 cpi r24, 0x02 ; 2 + faa: 21 f4 brne .+8 ; 0xfb4 <__pack_f+0x40> + fac: ee 24 eor r14, r14 + fae: ff 24 eor r15, r15 + fb0: 87 01 movw r16, r14 + fb2: 05 c0 rjmp .+10 ; 0xfbe <__pack_f+0x4a> + fb4: e1 14 cp r14, r1 + fb6: f1 04 cpc r15, r1 + fb8: 01 05 cpc r16, r1 + fba: 11 05 cpc r17, r1 + fbc: 19 f4 brne .+6 ; 0xfc4 <__pack_f+0x50> + fbe: e0 e0 ldi r30, 0x00 ; 0 + fc0: f0 e0 ldi r31, 0x00 ; 0 + fc2: 96 c0 rjmp .+300 ; 0x10f0 <__pack_f+0x17c> + fc4: 62 81 ldd r22, Z+2 ; 0x02 + fc6: 73 81 ldd r23, Z+3 ; 0x03 + fc8: 9f ef ldi r25, 0xFF ; 255 + fca: 62 38 cpi r22, 0x82 ; 130 + fcc: 79 07 cpc r23, r25 + fce: 0c f0 brlt .+2 ; 0xfd2 <__pack_f+0x5e> + fd0: 5b c0 rjmp .+182 ; 0x1088 <__pack_f+0x114> + fd2: 22 e8 ldi r18, 0x82 ; 130 + fd4: 3f ef ldi r19, 0xFF ; 255 + fd6: 26 1b sub r18, r22 + fd8: 37 0b sbc r19, r23 + fda: 2a 31 cpi r18, 0x1A ; 26 + fdc: 31 05 cpc r19, r1 + fde: 2c f0 brlt .+10 ; 0xfea <__pack_f+0x76> + fe0: 20 e0 ldi r18, 0x00 ; 0 + fe2: 30 e0 ldi r19, 0x00 ; 0 + fe4: 40 e0 ldi r20, 0x00 ; 0 + fe6: 50 e0 ldi r21, 0x00 ; 0 + fe8: 2a c0 rjmp .+84 ; 0x103e <__pack_f+0xca> + fea: b8 01 movw r22, r16 + fec: a7 01 movw r20, r14 + fee: 02 2e mov r0, r18 + ff0: 04 c0 rjmp .+8 ; 0xffa <__pack_f+0x86> + ff2: 76 95 lsr r23 + ff4: 67 95 ror r22 + ff6: 57 95 ror r21 + ff8: 47 95 ror r20 + ffa: 0a 94 dec r0 + ffc: d2 f7 brpl .-12 ; 0xff2 <__pack_f+0x7e> + ffe: 81 e0 ldi r24, 0x01 ; 1 + 1000: 90 e0 ldi r25, 0x00 ; 0 + 1002: a0 e0 ldi r26, 0x00 ; 0 + 1004: b0 e0 ldi r27, 0x00 ; 0 + 1006: 04 c0 rjmp .+8 ; 0x1010 <__pack_f+0x9c> + 1008: 88 0f add r24, r24 + 100a: 99 1f adc r25, r25 + 100c: aa 1f adc r26, r26 + 100e: bb 1f adc r27, r27 + 1010: 2a 95 dec r18 + 1012: d2 f7 brpl .-12 ; 0x1008 <__pack_f+0x94> + 1014: 01 97 sbiw r24, 0x01 ; 1 + 1016: a1 09 sbc r26, r1 + 1018: b1 09 sbc r27, r1 + 101a: 8e 21 and r24, r14 + 101c: 9f 21 and r25, r15 + 101e: a0 23 and r26, r16 + 1020: b1 23 and r27, r17 + 1022: 00 97 sbiw r24, 0x00 ; 0 + 1024: a1 05 cpc r26, r1 + 1026: b1 05 cpc r27, r1 + 1028: 21 f0 breq .+8 ; 0x1032 <__pack_f+0xbe> + 102a: 81 e0 ldi r24, 0x01 ; 1 + 102c: 90 e0 ldi r25, 0x00 ; 0 + 102e: a0 e0 ldi r26, 0x00 ; 0 + 1030: b0 e0 ldi r27, 0x00 ; 0 + 1032: 9a 01 movw r18, r20 + 1034: ab 01 movw r20, r22 + 1036: 28 2b or r18, r24 + 1038: 39 2b or r19, r25 + 103a: 4a 2b or r20, r26 + 103c: 5b 2b or r21, r27 + 103e: da 01 movw r26, r20 + 1040: c9 01 movw r24, r18 + 1042: 8f 77 andi r24, 0x7F ; 127 + 1044: 90 70 andi r25, 0x00 ; 0 + 1046: a0 70 andi r26, 0x00 ; 0 + 1048: b0 70 andi r27, 0x00 ; 0 + 104a: 80 34 cpi r24, 0x40 ; 64 + 104c: 91 05 cpc r25, r1 + 104e: a1 05 cpc r26, r1 + 1050: b1 05 cpc r27, r1 + 1052: 39 f4 brne .+14 ; 0x1062 <__pack_f+0xee> + 1054: 27 ff sbrs r18, 7 + 1056: 09 c0 rjmp .+18 ; 0x106a <__pack_f+0xf6> + 1058: 20 5c subi r18, 0xC0 ; 192 + 105a: 3f 4f sbci r19, 0xFF ; 255 + 105c: 4f 4f sbci r20, 0xFF ; 255 + 105e: 5f 4f sbci r21, 0xFF ; 255 + 1060: 04 c0 rjmp .+8 ; 0x106a <__pack_f+0xf6> + 1062: 21 5c subi r18, 0xC1 ; 193 + 1064: 3f 4f sbci r19, 0xFF ; 255 + 1066: 4f 4f sbci r20, 0xFF ; 255 + 1068: 5f 4f sbci r21, 0xFF ; 255 + 106a: e0 e0 ldi r30, 0x00 ; 0 + 106c: f0 e0 ldi r31, 0x00 ; 0 + 106e: 20 30 cpi r18, 0x00 ; 0 + 1070: a0 e0 ldi r26, 0x00 ; 0 + 1072: 3a 07 cpc r19, r26 + 1074: a0 e0 ldi r26, 0x00 ; 0 + 1076: 4a 07 cpc r20, r26 + 1078: a0 e4 ldi r26, 0x40 ; 64 + 107a: 5a 07 cpc r21, r26 + 107c: 10 f0 brcs .+4 ; 0x1082 <__pack_f+0x10e> + 107e: e1 e0 ldi r30, 0x01 ; 1 + 1080: f0 e0 ldi r31, 0x00 ; 0 + 1082: 79 01 movw r14, r18 + 1084: 8a 01 movw r16, r20 + 1086: 27 c0 rjmp .+78 ; 0x10d6 <__pack_f+0x162> + 1088: 60 38 cpi r22, 0x80 ; 128 + 108a: 71 05 cpc r23, r1 + 108c: 64 f5 brge .+88 ; 0x10e6 <__pack_f+0x172> + 108e: fb 01 movw r30, r22 + 1090: e1 58 subi r30, 0x81 ; 129 + 1092: ff 4f sbci r31, 0xFF ; 255 + 1094: d8 01 movw r26, r16 + 1096: c7 01 movw r24, r14 + 1098: 8f 77 andi r24, 0x7F ; 127 + 109a: 90 70 andi r25, 0x00 ; 0 + 109c: a0 70 andi r26, 0x00 ; 0 + 109e: b0 70 andi r27, 0x00 ; 0 + 10a0: 80 34 cpi r24, 0x40 ; 64 + 10a2: 91 05 cpc r25, r1 + 10a4: a1 05 cpc r26, r1 + 10a6: b1 05 cpc r27, r1 + 10a8: 39 f4 brne .+14 ; 0x10b8 <__pack_f+0x144> + 10aa: e7 fe sbrs r14, 7 + 10ac: 0d c0 rjmp .+26 ; 0x10c8 <__pack_f+0x154> + 10ae: 80 e4 ldi r24, 0x40 ; 64 + 10b0: 90 e0 ldi r25, 0x00 ; 0 + 10b2: a0 e0 ldi r26, 0x00 ; 0 + 10b4: b0 e0 ldi r27, 0x00 ; 0 + 10b6: 04 c0 rjmp .+8 ; 0x10c0 <__pack_f+0x14c> + 10b8: 8f e3 ldi r24, 0x3F ; 63 + 10ba: 90 e0 ldi r25, 0x00 ; 0 + 10bc: a0 e0 ldi r26, 0x00 ; 0 + 10be: b0 e0 ldi r27, 0x00 ; 0 + 10c0: e8 0e add r14, r24 + 10c2: f9 1e adc r15, r25 + 10c4: 0a 1f adc r16, r26 + 10c6: 1b 1f adc r17, r27 + 10c8: 17 ff sbrs r17, 7 + 10ca: 05 c0 rjmp .+10 ; 0x10d6 <__pack_f+0x162> + 10cc: 16 95 lsr r17 + 10ce: 07 95 ror r16 + 10d0: f7 94 ror r15 + 10d2: e7 94 ror r14 + 10d4: 31 96 adiw r30, 0x01 ; 1 + 10d6: 87 e0 ldi r24, 0x07 ; 7 + 10d8: 16 95 lsr r17 + 10da: 07 95 ror r16 + 10dc: f7 94 ror r15 + 10de: e7 94 ror r14 + 10e0: 8a 95 dec r24 + 10e2: d1 f7 brne .-12 ; 0x10d8 <__pack_f+0x164> + 10e4: 05 c0 rjmp .+10 ; 0x10f0 <__pack_f+0x17c> + 10e6: ee 24 eor r14, r14 + 10e8: ff 24 eor r15, r15 + 10ea: 87 01 movw r16, r14 + 10ec: ef ef ldi r30, 0xFF ; 255 + 10ee: f0 e0 ldi r31, 0x00 ; 0 + 10f0: 6e 2f mov r22, r30 + 10f2: 67 95 ror r22 + 10f4: 66 27 eor r22, r22 + 10f6: 67 95 ror r22 + 10f8: 90 2f mov r25, r16 + 10fa: 9f 77 andi r25, 0x7F ; 127 + 10fc: d7 94 ror r13 + 10fe: dd 24 eor r13, r13 + 1100: d7 94 ror r13 + 1102: 8e 2f mov r24, r30 + 1104: 86 95 lsr r24 + 1106: 49 2f mov r20, r25 + 1108: 46 2b or r20, r22 + 110a: 58 2f mov r21, r24 + 110c: 5d 29 or r21, r13 + 110e: b7 01 movw r22, r14 + 1110: ca 01 movw r24, r20 + 1112: 1f 91 pop r17 + 1114: 0f 91 pop r16 + 1116: ff 90 pop r15 + 1118: ef 90 pop r14 + 111a: df 90 pop r13 + 111c: 08 95 ret + +0000111e <__unpack_f>: + 111e: fc 01 movw r30, r24 + 1120: db 01 movw r26, r22 + 1122: 40 81 ld r20, Z + 1124: 51 81 ldd r21, Z+1 ; 0x01 + 1126: 22 81 ldd r18, Z+2 ; 0x02 + 1128: 62 2f mov r22, r18 + 112a: 6f 77 andi r22, 0x7F ; 127 + 112c: 70 e0 ldi r23, 0x00 ; 0 + 112e: 22 1f adc r18, r18 + 1130: 22 27 eor r18, r18 + 1132: 22 1f adc r18, r18 + 1134: 93 81 ldd r25, Z+3 ; 0x03 + 1136: 89 2f mov r24, r25 + 1138: 88 0f add r24, r24 + 113a: 82 2b or r24, r18 + 113c: 28 2f mov r18, r24 + 113e: 30 e0 ldi r19, 0x00 ; 0 + 1140: 99 1f adc r25, r25 + 1142: 99 27 eor r25, r25 + 1144: 99 1f adc r25, r25 + 1146: 11 96 adiw r26, 0x01 ; 1 + 1148: 9c 93 st X, r25 + 114a: 11 97 sbiw r26, 0x01 ; 1 + 114c: 21 15 cp r18, r1 + 114e: 31 05 cpc r19, r1 + 1150: a9 f5 brne .+106 ; 0x11bc <__unpack_f+0x9e> + 1152: 41 15 cp r20, r1 + 1154: 51 05 cpc r21, r1 + 1156: 61 05 cpc r22, r1 + 1158: 71 05 cpc r23, r1 + 115a: 11 f4 brne .+4 ; 0x1160 <__unpack_f+0x42> + 115c: 82 e0 ldi r24, 0x02 ; 2 + 115e: 37 c0 rjmp .+110 ; 0x11ce <__unpack_f+0xb0> + 1160: 82 e8 ldi r24, 0x82 ; 130 + 1162: 9f ef ldi r25, 0xFF ; 255 + 1164: 13 96 adiw r26, 0x03 ; 3 + 1166: 9c 93 st X, r25 + 1168: 8e 93 st -X, r24 + 116a: 12 97 sbiw r26, 0x02 ; 2 + 116c: 9a 01 movw r18, r20 + 116e: ab 01 movw r20, r22 + 1170: 67 e0 ldi r22, 0x07 ; 7 + 1172: 22 0f add r18, r18 + 1174: 33 1f adc r19, r19 + 1176: 44 1f adc r20, r20 + 1178: 55 1f adc r21, r21 + 117a: 6a 95 dec r22 + 117c: d1 f7 brne .-12 ; 0x1172 <__unpack_f+0x54> + 117e: 83 e0 ldi r24, 0x03 ; 3 + 1180: 8c 93 st X, r24 + 1182: 0d c0 rjmp .+26 ; 0x119e <__unpack_f+0x80> + 1184: 22 0f add r18, r18 + 1186: 33 1f adc r19, r19 + 1188: 44 1f adc r20, r20 + 118a: 55 1f adc r21, r21 + 118c: 12 96 adiw r26, 0x02 ; 2 + 118e: 8d 91 ld r24, X+ + 1190: 9c 91 ld r25, X + 1192: 13 97 sbiw r26, 0x03 ; 3 + 1194: 01 97 sbiw r24, 0x01 ; 1 + 1196: 13 96 adiw r26, 0x03 ; 3 + 1198: 9c 93 st X, r25 + 119a: 8e 93 st -X, r24 + 119c: 12 97 sbiw r26, 0x02 ; 2 + 119e: 20 30 cpi r18, 0x00 ; 0 + 11a0: 80 e0 ldi r24, 0x00 ; 0 + 11a2: 38 07 cpc r19, r24 + 11a4: 80 e0 ldi r24, 0x00 ; 0 + 11a6: 48 07 cpc r20, r24 + 11a8: 80 e4 ldi r24, 0x40 ; 64 + 11aa: 58 07 cpc r21, r24 + 11ac: 58 f3 brcs .-42 ; 0x1184 <__unpack_f+0x66> + 11ae: 14 96 adiw r26, 0x04 ; 4 + 11b0: 2d 93 st X+, r18 + 11b2: 3d 93 st X+, r19 + 11b4: 4d 93 st X+, r20 + 11b6: 5c 93 st X, r21 + 11b8: 17 97 sbiw r26, 0x07 ; 7 + 11ba: 08 95 ret + 11bc: 2f 3f cpi r18, 0xFF ; 255 + 11be: 31 05 cpc r19, r1 + 11c0: 79 f4 brne .+30 ; 0x11e0 <__unpack_f+0xc2> + 11c2: 41 15 cp r20, r1 + 11c4: 51 05 cpc r21, r1 + 11c6: 61 05 cpc r22, r1 + 11c8: 71 05 cpc r23, r1 + 11ca: 19 f4 brne .+6 ; 0x11d2 <__unpack_f+0xb4> + 11cc: 84 e0 ldi r24, 0x04 ; 4 + 11ce: 8c 93 st X, r24 + 11d0: 08 95 ret + 11d2: 64 ff sbrs r22, 4 + 11d4: 03 c0 rjmp .+6 ; 0x11dc <__unpack_f+0xbe> + 11d6: 81 e0 ldi r24, 0x01 ; 1 + 11d8: 8c 93 st X, r24 + 11da: 12 c0 rjmp .+36 ; 0x1200 <__unpack_f+0xe2> + 11dc: 1c 92 st X, r1 + 11de: 10 c0 rjmp .+32 ; 0x1200 <__unpack_f+0xe2> + 11e0: 2f 57 subi r18, 0x7F ; 127 + 11e2: 30 40 sbci r19, 0x00 ; 0 + 11e4: 13 96 adiw r26, 0x03 ; 3 + 11e6: 3c 93 st X, r19 + 11e8: 2e 93 st -X, r18 + 11ea: 12 97 sbiw r26, 0x02 ; 2 + 11ec: 83 e0 ldi r24, 0x03 ; 3 + 11ee: 8c 93 st X, r24 + 11f0: 87 e0 ldi r24, 0x07 ; 7 + 11f2: 44 0f add r20, r20 + 11f4: 55 1f adc r21, r21 + 11f6: 66 1f adc r22, r22 + 11f8: 77 1f adc r23, r23 + 11fa: 8a 95 dec r24 + 11fc: d1 f7 brne .-12 ; 0x11f2 <__unpack_f+0xd4> + 11fe: 70 64 ori r23, 0x40 ; 64 + 1200: 14 96 adiw r26, 0x04 ; 4 + 1202: 4d 93 st X+, r20 + 1204: 5d 93 st X+, r21 + 1206: 6d 93 st X+, r22 + 1208: 7c 93 st X, r23 + 120a: 17 97 sbiw r26, 0x07 ; 7 + 120c: 08 95 ret + +0000120e <__divmodhi4>: + 120e: 97 fb bst r25, 7 + 1210: 09 2e mov r0, r25 + 1212: 07 26 eor r0, r23 + 1214: 0a d0 rcall .+20 ; 0x122a <__divmodhi4_neg1> + 1216: 77 fd sbrc r23, 7 + 1218: 04 d0 rcall .+8 ; 0x1222 <__divmodhi4_neg2> + 121a: 49 d0 rcall .+146 ; 0x12ae <__udivmodhi4> + 121c: 06 d0 rcall .+12 ; 0x122a <__divmodhi4_neg1> + 121e: 00 20 and r0, r0 + 1220: 1a f4 brpl .+6 ; 0x1228 <__divmodhi4_exit> + +00001222 <__divmodhi4_neg2>: + 1222: 70 95 com r23 + 1224: 61 95 neg r22 + 1226: 7f 4f sbci r23, 0xFF ; 255 + +00001228 <__divmodhi4_exit>: + 1228: 08 95 ret + +0000122a <__divmodhi4_neg1>: + 122a: f6 f7 brtc .-4 ; 0x1228 <__divmodhi4_exit> + 122c: 90 95 com r25 + 122e: 81 95 neg r24 + 1230: 9f 4f sbci r25, 0xFF ; 255 + 1232: 08 95 ret + +00001234 <__udivmodsi4>: + 1234: a1 e2 ldi r26, 0x21 ; 33 + 1236: 1a 2e mov r1, r26 + 1238: aa 1b sub r26, r26 + 123a: bb 1b sub r27, r27 + 123c: fd 01 movw r30, r26 + 123e: 0d c0 rjmp .+26 ; 0x125a <__udivmodsi4_ep> + +00001240 <__udivmodsi4_loop>: + 1240: aa 1f adc r26, r26 + 1242: bb 1f adc r27, r27 + 1244: ee 1f adc r30, r30 + 1246: ff 1f adc r31, r31 + 1248: a2 17 cp r26, r18 + 124a: b3 07 cpc r27, r19 + 124c: e4 07 cpc r30, r20 + 124e: f5 07 cpc r31, r21 + 1250: 20 f0 brcs .+8 ; 0x125a <__udivmodsi4_ep> + 1252: a2 1b sub r26, r18 + 1254: b3 0b sbc r27, r19 + 1256: e4 0b sbc r30, r20 + 1258: f5 0b sbc r31, r21 + +0000125a <__udivmodsi4_ep>: + 125a: 66 1f adc r22, r22 + 125c: 77 1f adc r23, r23 + 125e: 88 1f adc r24, r24 + 1260: 99 1f adc r25, r25 + 1262: 1a 94 dec r1 + 1264: 69 f7 brne .-38 ; 0x1240 <__udivmodsi4_loop> + 1266: 60 95 com r22 + 1268: 70 95 com r23 + 126a: 80 95 com r24 + 126c: 90 95 com r25 + 126e: 9b 01 movw r18, r22 + 1270: ac 01 movw r20, r24 + 1272: bd 01 movw r22, r26 + 1274: cf 01 movw r24, r30 + 1276: 08 95 ret + +00001278 <__divmodsi4>: + 1278: 97 fb bst r25, 7 + 127a: 09 2e mov r0, r25 + 127c: 05 26 eor r0, r21 + 127e: 0e d0 rcall .+28 ; 0x129c <__divmodsi4_neg1> + 1280: 57 fd sbrc r21, 7 + 1282: 04 d0 rcall .+8 ; 0x128c <__divmodsi4_neg2> + 1284: d7 df rcall .-82 ; 0x1234 <__udivmodsi4> + 1286: 0a d0 rcall .+20 ; 0x129c <__divmodsi4_neg1> + 1288: 00 1c adc r0, r0 + 128a: 38 f4 brcc .+14 ; 0x129a <__divmodsi4_exit> + +0000128c <__divmodsi4_neg2>: + 128c: 50 95 com r21 + 128e: 40 95 com r20 + 1290: 30 95 com r19 + 1292: 21 95 neg r18 + 1294: 3f 4f sbci r19, 0xFF ; 255 + 1296: 4f 4f sbci r20, 0xFF ; 255 + 1298: 5f 4f sbci r21, 0xFF ; 255 + +0000129a <__divmodsi4_exit>: + 129a: 08 95 ret + +0000129c <__divmodsi4_neg1>: + 129c: f6 f7 brtc .-4 ; 0x129a <__divmodsi4_exit> + 129e: 90 95 com r25 + 12a0: 80 95 com r24 + 12a2: 70 95 com r23 + 12a4: 61 95 neg r22 + 12a6: 7f 4f sbci r23, 0xFF ; 255 + 12a8: 8f 4f sbci r24, 0xFF ; 255 + 12aa: 9f 4f sbci r25, 0xFF ; 255 + 12ac: 08 95 ret + +000012ae <__udivmodhi4>: + 12ae: aa 1b sub r26, r26 + 12b0: bb 1b sub r27, r27 + 12b2: 51 e1 ldi r21, 0x11 ; 17 + 12b4: 07 c0 rjmp .+14 ; 0x12c4 <__udivmodhi4_ep> + +000012b6 <__udivmodhi4_loop>: + 12b6: aa 1f adc r26, r26 + 12b8: bb 1f adc r27, r27 + 12ba: a6 17 cp r26, r22 + 12bc: b7 07 cpc r27, r23 + 12be: 10 f0 brcs .+4 ; 0x12c4 <__udivmodhi4_ep> + 12c0: a6 1b sub r26, r22 + 12c2: b7 0b sbc r27, r23 + +000012c4 <__udivmodhi4_ep>: + 12c4: 88 1f adc r24, r24 + 12c6: 99 1f adc r25, r25 + 12c8: 5a 95 dec r21 + 12ca: a9 f7 brne .-22 ; 0x12b6 <__udivmodhi4_loop> + 12cc: 80 95 com r24 + 12ce: 90 95 com r25 + 12d0: bc 01 movw r22, r24 + 12d2: cd 01 movw r24, r26 + 12d4: 08 95 ret + +000012d6 <__prologue_saves__>: + 12d6: 2f 92 push r2 + 12d8: 3f 92 push r3 + 12da: 4f 92 push r4 + 12dc: 5f 92 push r5 + 12de: 6f 92 push r6 + 12e0: 7f 92 push r7 + 12e2: 8f 92 push r8 + 12e4: 9f 92 push r9 + 12e6: af 92 push r10 + 12e8: bf 92 push r11 + 12ea: cf 92 push r12 + 12ec: df 92 push r13 + 12ee: ef 92 push r14 + 12f0: ff 92 push r15 + 12f2: 0f 93 push r16 + 12f4: 1f 93 push r17 + 12f6: cf 93 push r28 + 12f8: df 93 push r29 + 12fa: cd b7 in r28, 0x3d ; 61 + 12fc: de b7 in r29, 0x3e ; 62 + 12fe: ca 1b sub r28, r26 + 1300: db 0b sbc r29, r27 + 1302: 0f b6 in r0, 0x3f ; 63 + 1304: f8 94 cli + 1306: de bf out 0x3e, r29 ; 62 + 1308: 0f be out 0x3f, r0 ; 63 + 130a: cd bf out 0x3d, r28 ; 61 + 130c: 09 94 ijmp + +0000130e <__epilogue_restores__>: + 130e: 2a 88 ldd r2, Y+18 ; 0x12 + 1310: 39 88 ldd r3, Y+17 ; 0x11 + 1312: 48 88 ldd r4, Y+16 ; 0x10 + 1314: 5f 84 ldd r5, Y+15 ; 0x0f + 1316: 6e 84 ldd r6, Y+14 ; 0x0e + 1318: 7d 84 ldd r7, Y+13 ; 0x0d + 131a: 8c 84 ldd r8, Y+12 ; 0x0c + 131c: 9b 84 ldd r9, Y+11 ; 0x0b + 131e: aa 84 ldd r10, Y+10 ; 0x0a + 1320: b9 84 ldd r11, Y+9 ; 0x09 + 1322: c8 84 ldd r12, Y+8 ; 0x08 + 1324: df 80 ldd r13, Y+7 ; 0x07 + 1326: ee 80 ldd r14, Y+6 ; 0x06 + 1328: fd 80 ldd r15, Y+5 ; 0x05 + 132a: 0c 81 ldd r16, Y+4 ; 0x04 + 132c: 1b 81 ldd r17, Y+3 ; 0x03 + 132e: aa 81 ldd r26, Y+2 ; 0x02 + 1330: b9 81 ldd r27, Y+1 ; 0x01 + 1332: ce 0f add r28, r30 + 1334: d1 1d adc r29, r1 + 1336: 0f b6 in r0, 0x3f ; 63 + 1338: f8 94 cli + 133a: de bf out 0x3e, r29 ; 62 + 133c: 0f be out 0x3f, r0 ; 63 + 133e: cd bf out 0x3d, r28 ; 61 + 1340: ed 01 movw r28, r26 + 1342: 08 95 ret + +00001344 <__tablejump2__>: + 1344: ee 0f add r30, r30 + 1346: ff 1f adc r31, r31 + +00001348 <__tablejump__>: + 1348: 05 90 lpm r0, Z+ + 134a: f4 91 lpm r31, Z+ + 134c: e0 2d mov r30, r0 + 134e: 09 94 ijmp + +00001350 <sin>: + 1350: 9f 93 push r25 + 1352: 05 d0 rcall .+10 ; 0x135e <__fp_rempio2> + 1354: 0f 90 pop r0 + 1356: 07 fc sbrc r0, 7 + 1358: ee 5f subi r30, 0xFE ; 254 + 135a: 28 c0 rjmp .+80 ; 0x13ac <__fp_sinus> + 135c: ce c0 rjmp .+412 ; 0x14fa <__fp_nan> + +0000135e <__fp_rempio2>: + 135e: 3f d0 rcall .+126 ; 0x13de <__fp_splitA> + 1360: e8 f3 brcs .-6 ; 0x135c <sin+0xc> + 1362: e8 94 clt + 1364: e0 e0 ldi r30, 0x00 ; 0 + 1366: bb 27 eor r27, r27 + 1368: 9f 57 subi r25, 0x7F ; 127 + 136a: f0 f0 brcs .+60 ; 0x13a8 <__fp_rempio2+0x4a> + 136c: 2a ed ldi r18, 0xDA ; 218 + 136e: 3f e0 ldi r19, 0x0F ; 15 + 1370: 49 ec ldi r20, 0xC9 ; 201 + 1372: 06 c0 rjmp .+12 ; 0x1380 <__fp_rempio2+0x22> + 1374: ee 0f add r30, r30 + 1376: bb 0f add r27, r27 + 1378: 66 1f adc r22, r22 + 137a: 77 1f adc r23, r23 + 137c: 88 1f adc r24, r24 + 137e: 28 f0 brcs .+10 ; 0x138a <__fp_rempio2+0x2c> + 1380: b2 3a cpi r27, 0xA2 ; 162 + 1382: 62 07 cpc r22, r18 + 1384: 73 07 cpc r23, r19 + 1386: 84 07 cpc r24, r20 + 1388: 28 f0 brcs .+10 ; 0x1394 <__fp_rempio2+0x36> + 138a: b2 5a subi r27, 0xA2 ; 162 + 138c: 62 0b sbc r22, r18 + 138e: 73 0b sbc r23, r19 + 1390: 84 0b sbc r24, r20 + 1392: e3 95 inc r30 + 1394: 9a 95 dec r25 + 1396: 72 f7 brpl .-36 ; 0x1374 <__fp_rempio2+0x16> + 1398: 80 38 cpi r24, 0x80 ; 128 + 139a: 30 f4 brcc .+12 ; 0x13a8 <__fp_rempio2+0x4a> + 139c: 9a 95 dec r25 + 139e: bb 0f add r27, r27 + 13a0: 66 1f adc r22, r22 + 13a2: 77 1f adc r23, r23 + 13a4: 88 1f adc r24, r24 + 13a6: d2 f7 brpl .-12 ; 0x139c <__fp_rempio2+0x3e> + 13a8: 90 48 sbci r25, 0x80 ; 128 + 13aa: 9b c0 rjmp .+310 ; 0x14e2 <__fp_mpack_finite> + +000013ac <__fp_sinus>: + 13ac: ef 93 push r30 + 13ae: e0 ff sbrs r30, 0 + 13b0: 06 c0 rjmp .+12 ; 0x13be <__fp_sinus+0x12> + 13b2: a2 ea ldi r26, 0xA2 ; 162 + 13b4: 2a ed ldi r18, 0xDA ; 218 + 13b6: 3f e0 ldi r19, 0x0F ; 15 + 13b8: 49 ec ldi r20, 0xC9 ; 201 + 13ba: 5f eb ldi r21, 0xBF ; 191 + 13bc: 37 d0 rcall .+110 ; 0x142c <__addsf3x> + 13be: bf d0 rcall .+382 ; 0x153e <__fp_round> + 13c0: 0f 90 pop r0 + 13c2: 03 94 inc r0 + 13c4: 01 fc sbrc r0, 1 + 13c6: 90 58 subi r25, 0x80 ; 128 + 13c8: e8 e6 ldi r30, 0x68 ; 104 + 13ca: f0 e0 ldi r31, 0x00 ; 0 + 13cc: 99 c0 rjmp .+306 ; 0x1500 <__fp_powsodd> + +000013ce <__fp_split3>: + 13ce: 57 fd sbrc r21, 7 + 13d0: 90 58 subi r25, 0x80 ; 128 + 13d2: 44 0f add r20, r20 + 13d4: 55 1f adc r21, r21 + 13d6: 59 f0 breq .+22 ; 0x13ee <__fp_splitA+0x10> + 13d8: 5f 3f cpi r21, 0xFF ; 255 + 13da: 71 f0 breq .+28 ; 0x13f8 <__fp_splitA+0x1a> + 13dc: 47 95 ror r20 + +000013de <__fp_splitA>: + 13de: 88 0f add r24, r24 + 13e0: 97 fb bst r25, 7 + 13e2: 99 1f adc r25, r25 + 13e4: 61 f0 breq .+24 ; 0x13fe <__fp_splitA+0x20> + 13e6: 9f 3f cpi r25, 0xFF ; 255 + 13e8: 79 f0 breq .+30 ; 0x1408 <__fp_splitA+0x2a> + 13ea: 87 95 ror r24 + 13ec: 08 95 ret + 13ee: 12 16 cp r1, r18 + 13f0: 13 06 cpc r1, r19 + 13f2: 14 06 cpc r1, r20 + 13f4: 55 1f adc r21, r21 + 13f6: f2 cf rjmp .-28 ; 0x13dc <__fp_split3+0xe> + 13f8: 46 95 lsr r20 + 13fa: f1 df rcall .-30 ; 0x13de <__fp_splitA> + 13fc: 08 c0 rjmp .+16 ; 0x140e <__fp_splitA+0x30> + 13fe: 16 16 cp r1, r22 + 1400: 17 06 cpc r1, r23 + 1402: 18 06 cpc r1, r24 + 1404: 99 1f adc r25, r25 + 1406: f1 cf rjmp .-30 ; 0x13ea <__fp_splitA+0xc> + 1408: 86 95 lsr r24 + 140a: 71 05 cpc r23, r1 + 140c: 61 05 cpc r22, r1 + 140e: 08 94 sec + 1410: 08 95 ret + 1412: 87 d0 rcall .+270 ; 0x1522 <__fp_pscA> + 1414: 30 f0 brcs .+12 ; 0x1422 <__fp_splitA+0x44> + 1416: 8c d0 rcall .+280 ; 0x1530 <__fp_pscB> + 1418: 20 f0 brcs .+8 ; 0x1422 <__fp_splitA+0x44> + 141a: 31 f4 brne .+12 ; 0x1428 <__fp_splitA+0x4a> + 141c: 9f 3f cpi r25, 0xFF ; 255 + 141e: 11 f4 brne .+4 ; 0x1424 <__fp_splitA+0x46> + 1420: 1e f4 brtc .+6 ; 0x1428 <__fp_splitA+0x4a> + 1422: 6b c0 rjmp .+214 ; 0x14fa <__fp_nan> + 1424: 0e f4 brtc .+2 ; 0x1428 <__fp_splitA+0x4a> + 1426: e0 95 com r30 + 1428: e7 fb bst r30, 7 + 142a: 53 c0 rjmp .+166 ; 0x14d2 <__fp_inf> + +0000142c <__addsf3x>: + 142c: e9 2f mov r30, r25 + 142e: cf df rcall .-98 ; 0x13ce <__fp_split3> + 1430: 80 f3 brcs .-32 ; 0x1412 <__fp_splitA+0x34> + 1432: ba 17 cp r27, r26 + 1434: 62 07 cpc r22, r18 + 1436: 73 07 cpc r23, r19 + 1438: 84 07 cpc r24, r20 + 143a: 95 07 cpc r25, r21 + 143c: 18 f0 brcs .+6 ; 0x1444 <__addsf3x+0x18> + 143e: 71 f4 brne .+28 ; 0x145c <__addsf3x+0x30> + 1440: 9e f5 brtc .+102 ; 0x14a8 <__addsf3x+0x7c> + 1442: 8e c0 rjmp .+284 ; 0x1560 <__fp_zero> + 1444: 0e f4 brtc .+2 ; 0x1448 <__addsf3x+0x1c> + 1446: e0 95 com r30 + 1448: 0b 2e mov r0, r27 + 144a: ba 2f mov r27, r26 + 144c: a0 2d mov r26, r0 + 144e: 0b 01 movw r0, r22 + 1450: b9 01 movw r22, r18 + 1452: 90 01 movw r18, r0 + 1454: 0c 01 movw r0, r24 + 1456: ca 01 movw r24, r20 + 1458: a0 01 movw r20, r0 + 145a: 11 24 eor r1, r1 + 145c: ff 27 eor r31, r31 + 145e: 59 1b sub r21, r25 + 1460: 99 f0 breq .+38 ; 0x1488 <__addsf3x+0x5c> + 1462: 59 3f cpi r21, 0xF9 ; 249 + 1464: 50 f4 brcc .+20 ; 0x147a <__addsf3x+0x4e> + 1466: 50 3e cpi r21, 0xE0 ; 224 + 1468: 68 f1 brcs .+90 ; 0x14c4 <__addsf3x+0x98> + 146a: 1a 16 cp r1, r26 + 146c: f0 40 sbci r31, 0x00 ; 0 + 146e: a2 2f mov r26, r18 + 1470: 23 2f mov r18, r19 + 1472: 34 2f mov r19, r20 + 1474: 44 27 eor r20, r20 + 1476: 58 5f subi r21, 0xF8 ; 248 + 1478: f3 cf rjmp .-26 ; 0x1460 <__addsf3x+0x34> + 147a: 46 95 lsr r20 + 147c: 37 95 ror r19 + 147e: 27 95 ror r18 + 1480: a7 95 ror r26 + 1482: f0 40 sbci r31, 0x00 ; 0 + 1484: 53 95 inc r21 + 1486: c9 f7 brne .-14 ; 0x147a <__addsf3x+0x4e> + 1488: 7e f4 brtc .+30 ; 0x14a8 <__addsf3x+0x7c> + 148a: 1f 16 cp r1, r31 + 148c: ba 0b sbc r27, r26 + 148e: 62 0b sbc r22, r18 + 1490: 73 0b sbc r23, r19 + 1492: 84 0b sbc r24, r20 + 1494: ba f0 brmi .+46 ; 0x14c4 <__addsf3x+0x98> + 1496: 91 50 subi r25, 0x01 ; 1 + 1498: a1 f0 breq .+40 ; 0x14c2 <__addsf3x+0x96> + 149a: ff 0f add r31, r31 + 149c: bb 1f adc r27, r27 + 149e: 66 1f adc r22, r22 + 14a0: 77 1f adc r23, r23 + 14a2: 88 1f adc r24, r24 + 14a4: c2 f7 brpl .-16 ; 0x1496 <__addsf3x+0x6a> + 14a6: 0e c0 rjmp .+28 ; 0x14c4 <__addsf3x+0x98> + 14a8: ba 0f add r27, r26 + 14aa: 62 1f adc r22, r18 + 14ac: 73 1f adc r23, r19 + 14ae: 84 1f adc r24, r20 + 14b0: 48 f4 brcc .+18 ; 0x14c4 <__addsf3x+0x98> + 14b2: 87 95 ror r24 + 14b4: 77 95 ror r23 + 14b6: 67 95 ror r22 + 14b8: b7 95 ror r27 + 14ba: f7 95 ror r31 + 14bc: 9e 3f cpi r25, 0xFE ; 254 + 14be: 08 f0 brcs .+2 ; 0x14c2 <__addsf3x+0x96> + 14c0: b3 cf rjmp .-154 ; 0x1428 <__fp_splitA+0x4a> + 14c2: 93 95 inc r25 + 14c4: 88 0f add r24, r24 + 14c6: 08 f0 brcs .+2 ; 0x14ca <__addsf3x+0x9e> + 14c8: 99 27 eor r25, r25 + 14ca: ee 0f add r30, r30 + 14cc: 97 95 ror r25 + 14ce: 87 95 ror r24 + 14d0: 08 95 ret + +000014d2 <__fp_inf>: + 14d2: 97 f9 bld r25, 7 + 14d4: 9f 67 ori r25, 0x7F ; 127 + 14d6: 80 e8 ldi r24, 0x80 ; 128 + 14d8: 70 e0 ldi r23, 0x00 ; 0 + 14da: 60 e0 ldi r22, 0x00 ; 0 + 14dc: 08 95 ret + +000014de <__fp_mpack>: + 14de: 9f 3f cpi r25, 0xFF ; 255 + 14e0: 31 f0 breq .+12 ; 0x14ee <__fp_mpack_finite+0xc> + +000014e2 <__fp_mpack_finite>: + 14e2: 91 50 subi r25, 0x01 ; 1 + 14e4: 20 f4 brcc .+8 ; 0x14ee <__fp_mpack_finite+0xc> + 14e6: 87 95 ror r24 + 14e8: 77 95 ror r23 + 14ea: 67 95 ror r22 + 14ec: b7 95 ror r27 + 14ee: 88 0f add r24, r24 + 14f0: 91 1d adc r25, r1 + 14f2: 96 95 lsr r25 + 14f4: 87 95 ror r24 + 14f6: 97 f9 bld r25, 7 + 14f8: 08 95 ret + +000014fa <__fp_nan>: + 14fa: 9f ef ldi r25, 0xFF ; 255 + 14fc: 80 ec ldi r24, 0xC0 ; 192 + 14fe: 08 95 ret + +00001500 <__fp_powsodd>: + 1500: 9f 93 push r25 + 1502: 8f 93 push r24 + 1504: 7f 93 push r23 + 1506: 6f 93 push r22 + 1508: ff 93 push r31 + 150a: ef 93 push r30 + 150c: 9b 01 movw r18, r22 + 150e: ac 01 movw r20, r24 + 1510: 37 db rcall .-2450 ; 0xb80 <__mulsf3> + 1512: ef 91 pop r30 + 1514: ff 91 pop r31 + 1516: 2b d0 rcall .+86 ; 0x156e <__fp_powser> + 1518: 2f 91 pop r18 + 151a: 3f 91 pop r19 + 151c: 4f 91 pop r20 + 151e: 5f 91 pop r21 + 1520: 2f cb rjmp .-2466 ; 0xb80 <__mulsf3> + +00001522 <__fp_pscA>: + 1522: 00 24 eor r0, r0 + 1524: 0a 94 dec r0 + 1526: 16 16 cp r1, r22 + 1528: 17 06 cpc r1, r23 + 152a: 18 06 cpc r1, r24 + 152c: 09 06 cpc r0, r25 + 152e: 08 95 ret + +00001530 <__fp_pscB>: + 1530: 00 24 eor r0, r0 + 1532: 0a 94 dec r0 + 1534: 12 16 cp r1, r18 + 1536: 13 06 cpc r1, r19 + 1538: 14 06 cpc r1, r20 + 153a: 05 06 cpc r0, r21 + 153c: 08 95 ret + +0000153e <__fp_round>: + 153e: 09 2e mov r0, r25 + 1540: 03 94 inc r0 + 1542: 00 0c add r0, r0 + 1544: 11 f4 brne .+4 ; 0x154a <__fp_round+0xc> + 1546: 88 23 and r24, r24 + 1548: 52 f0 brmi .+20 ; 0x155e <__fp_round+0x20> + 154a: bb 0f add r27, r27 + 154c: 40 f4 brcc .+16 ; 0x155e <__fp_round+0x20> + 154e: bf 2b or r27, r31 + 1550: 11 f4 brne .+4 ; 0x1556 <__fp_round+0x18> + 1552: 60 ff sbrs r22, 0 + 1554: 04 c0 rjmp .+8 ; 0x155e <__fp_round+0x20> + 1556: 6f 5f subi r22, 0xFF ; 255 + 1558: 7f 4f sbci r23, 0xFF ; 255 + 155a: 8f 4f sbci r24, 0xFF ; 255 + 155c: 9f 4f sbci r25, 0xFF ; 255 + 155e: 08 95 ret + +00001560 <__fp_zero>: + 1560: e8 94 clt + +00001562 <__fp_szero>: + 1562: bb 27 eor r27, r27 + 1564: 66 27 eor r22, r22 + 1566: 77 27 eor r23, r23 + 1568: cb 01 movw r24, r22 + 156a: 97 f9 bld r25, 7 + 156c: 08 95 ret + +0000156e <__fp_powser>: + 156e: df 93 push r29 + 1570: cf 93 push r28 + 1572: 1f 93 push r17 + 1574: 0f 93 push r16 + 1576: ff 92 push r15 + 1578: ef 92 push r14 + 157a: df 92 push r13 + 157c: 7b 01 movw r14, r22 + 157e: 8c 01 movw r16, r24 + 1580: 68 94 set + 1582: 05 c0 rjmp .+10 ; 0x158e <__fp_powser+0x20> + 1584: da 2e mov r13, r26 + 1586: ef 01 movw r28, r30 + 1588: 21 d0 rcall .+66 ; 0x15cc <__mulsf3x> + 158a: fe 01 movw r30, r28 + 158c: e8 94 clt + 158e: a5 91 lpm r26, Z+ + 1590: 25 91 lpm r18, Z+ + 1592: 35 91 lpm r19, Z+ + 1594: 45 91 lpm r20, Z+ + 1596: 55 91 lpm r21, Z+ + 1598: ae f3 brts .-22 ; 0x1584 <__fp_powser+0x16> + 159a: ef 01 movw r28, r30 + 159c: 47 df rcall .-370 ; 0x142c <__addsf3x> + 159e: fe 01 movw r30, r28 + 15a0: 97 01 movw r18, r14 + 15a2: a8 01 movw r20, r16 + 15a4: da 94 dec r13 + 15a6: 79 f7 brne .-34 ; 0x1586 <__fp_powser+0x18> + 15a8: df 90 pop r13 + 15aa: ef 90 pop r14 + 15ac: ff 90 pop r15 + 15ae: 0f 91 pop r16 + 15b0: 1f 91 pop r17 + 15b2: cf 91 pop r28 + 15b4: df 91 pop r29 + 15b6: 08 95 ret + 15b8: b4 df rcall .-152 ; 0x1522 <__fp_pscA> + 15ba: 28 f0 brcs .+10 ; 0x15c6 <__fp_powser+0x58> + 15bc: b9 df rcall .-142 ; 0x1530 <__fp_pscB> + 15be: 18 f0 brcs .+6 ; 0x15c6 <__fp_powser+0x58> + 15c0: 95 23 and r25, r21 + 15c2: 09 f0 breq .+2 ; 0x15c6 <__fp_powser+0x58> + 15c4: 86 cf rjmp .-244 ; 0x14d2 <__fp_inf> + 15c6: 99 cf rjmp .-206 ; 0x14fa <__fp_nan> + 15c8: 11 24 eor r1, r1 + 15ca: cb cf rjmp .-106 ; 0x1562 <__fp_szero> + +000015cc <__mulsf3x>: + 15cc: 00 df rcall .-512 ; 0x13ce <__fp_split3> + 15ce: a0 f3 brcs .-24 ; 0x15b8 <__fp_powser+0x4a> + +000015d0 <__mulsf3_pse>: + 15d0: 95 9f mul r25, r21 + 15d2: d1 f3 breq .-12 ; 0x15c8 <__fp_powser+0x5a> + 15d4: 95 0f add r25, r21 + 15d6: 50 e0 ldi r21, 0x00 ; 0 + 15d8: 55 1f adc r21, r21 + 15da: 62 9f mul r22, r18 + 15dc: f0 01 movw r30, r0 + 15de: 72 9f mul r23, r18 + 15e0: bb 27 eor r27, r27 + 15e2: f0 0d add r31, r0 + 15e4: b1 1d adc r27, r1 + 15e6: 63 9f mul r22, r19 + 15e8: aa 27 eor r26, r26 + 15ea: f0 0d add r31, r0 + 15ec: b1 1d adc r27, r1 + 15ee: aa 1f adc r26, r26 + 15f0: 64 9f mul r22, r20 + 15f2: 66 27 eor r22, r22 + 15f4: b0 0d add r27, r0 + 15f6: a1 1d adc r26, r1 + 15f8: 66 1f adc r22, r22 + 15fa: 82 9f mul r24, r18 + 15fc: 22 27 eor r18, r18 + 15fe: b0 0d add r27, r0 + 1600: a1 1d adc r26, r1 + 1602: 62 1f adc r22, r18 + 1604: 73 9f mul r23, r19 + 1606: b0 0d add r27, r0 + 1608: a1 1d adc r26, r1 + 160a: 62 1f adc r22, r18 + 160c: 83 9f mul r24, r19 + 160e: a0 0d add r26, r0 + 1610: 61 1d adc r22, r1 + 1612: 22 1f adc r18, r18 + 1614: 74 9f mul r23, r20 + 1616: 33 27 eor r19, r19 + 1618: a0 0d add r26, r0 + 161a: 61 1d adc r22, r1 + 161c: 23 1f adc r18, r19 + 161e: 84 9f mul r24, r20 + 1620: 60 0d add r22, r0 + 1622: 21 1d adc r18, r1 + 1624: 82 2f mov r24, r18 + 1626: 76 2f mov r23, r22 + 1628: 6a 2f mov r22, r26 + 162a: 11 24 eor r1, r1 + 162c: 9f 57 subi r25, 0x7F ; 127 + 162e: 50 40 sbci r21, 0x00 ; 0 + 1630: 8a f0 brmi .+34 ; 0x1654 <__mulsf3_pse+0x84> + 1632: e1 f0 breq .+56 ; 0x166c <__mulsf3_pse+0x9c> + 1634: 88 23 and r24, r24 + 1636: 4a f0 brmi .+18 ; 0x164a <__mulsf3_pse+0x7a> + 1638: ee 0f add r30, r30 + 163a: ff 1f adc r31, r31 + 163c: bb 1f adc r27, r27 + 163e: 66 1f adc r22, r22 + 1640: 77 1f adc r23, r23 + 1642: 88 1f adc r24, r24 + 1644: 91 50 subi r25, 0x01 ; 1 + 1646: 50 40 sbci r21, 0x00 ; 0 + 1648: a9 f7 brne .-22 ; 0x1634 <__mulsf3_pse+0x64> + 164a: 9e 3f cpi r25, 0xFE ; 254 + 164c: 51 05 cpc r21, r1 + 164e: 70 f0 brcs .+28 ; 0x166c <__mulsf3_pse+0x9c> + 1650: 40 cf rjmp .-384 ; 0x14d2 <__fp_inf> + 1652: 87 cf rjmp .-242 ; 0x1562 <__fp_szero> + 1654: 5f 3f cpi r21, 0xFF ; 255 + 1656: ec f3 brlt .-6 ; 0x1652 <__mulsf3_pse+0x82> + 1658: 98 3e cpi r25, 0xE8 ; 232 + 165a: dc f3 brlt .-10 ; 0x1652 <__mulsf3_pse+0x82> + 165c: 86 95 lsr r24 + 165e: 77 95 ror r23 + 1660: 67 95 ror r22 + 1662: b7 95 ror r27 + 1664: f7 95 ror r31 + 1666: e7 95 ror r30 + 1668: 9f 5f subi r25, 0xFF ; 255 + 166a: c1 f7 brne .-16 ; 0x165c <__mulsf3_pse+0x8c> + 166c: fe 2b or r31, r30 + 166e: 88 0f add r24, r24 + 1670: 91 1d adc r25, r1 + 1672: 96 95 lsr r25 + 1674: 87 95 ror r24 + 1676: 97 f9 bld r25, 7 + 1678: 08 95 ret + +0000167a <_exit>: + 167a: f8 94 cli + +0000167c <__stop_program>: + 167c: ff cf rjmp .-2 ; 0x167c <__stop_program> diff --git a/electic_streaming328p/bin/Debug/electic_streaming.elf.map b/electic_streaming328p/bin/Debug/electic_streaming.elf.map new file mode 100644 index 0000000..76ef832 --- /dev/null +++ b/electic_streaming328p/bin/Debug/electic_streaming.elf.map @@ -0,0 +1,912 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o (Serial) +../arduino_libs/core0022_328p.a(Print.cpp.o) + obj/Debug/main.o (Print::println(char const*)) +../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) (beginSerial) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + obj/Debug/main.o (__divmodhi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) (__udivmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) (__divmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + obj/Debug/main.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + obj/Debug/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) (__do_global_ctors) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Debug/main.o (__addsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + obj/Debug/main.o (__mulsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + obj/Debug/main.o (__divsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Debug/main.o (__fixsfsi) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + obj/Debug/main.o (sin) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) (__fp_rempio2) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) (__fp_sinus) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_splitA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__addsf3x) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_inf) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_mpack_finite) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_nan) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_powsodd) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscB) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_round) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_zero) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) (__fp_powser) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) (__mulsf3x) + +Allocating common symbols +Common symbol size file + +rx_buffer 0x80 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x167e + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + .progmem.gcc_fplib + 0x00000068 0x1e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + *(.progmem*) + 0x00000086 . = ALIGN (0x2) + 0x00000086 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000086 0x0 linker stubs + *(.trampolines*) + 0x00000086 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000086 __ctors_start = . + *(.ctors) + .ctors 0x00000086 0x2 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x00000088 __ctors_end = . + 0x00000088 __dtors_start = . + *(.dtors) + 0x00000088 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000088 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000088 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000088 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000094 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x00000094 __do_copy_data + .init4 0x000000aa 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000aa __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000ba 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + 0x000000ba __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000d0 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000d8 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000d8 __vector_22 + 0x000000d8 __vector_1 + 0x000000d8 __vector_24 + 0x000000d8 __vector_12 + 0x000000d8 __bad_interrupt + 0x000000d8 __vector_6 + 0x000000d8 __vector_3 + 0x000000d8 __vector_23 + 0x000000d8 __vector_25 + 0x000000d8 __vector_13 + 0x000000d8 __vector_17 + 0x000000d8 __vector_19 + 0x000000d8 __vector_7 + 0x000000d8 __vector_5 + 0x000000d8 __vector_4 + 0x000000d8 __vector_9 + 0x000000d8 __vector_2 + 0x000000d8 __vector_21 + 0x000000d8 __vector_15 + 0x000000d8 __vector_8 + 0x000000d8 __vector_14 + 0x000000d8 __vector_10 + 0x000000d8 __vector_16 + 0x000000d8 __vector_20 + .text 0x000000dc 0x292 obj/Debug/main.o + 0x000000dc __vector_11 + 0x0000019e fill_sinewave() + 0x000002b8 main + .text 0x0000036e 0x32 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x0000037c HardwareSerial::write(unsigned char) + 0x00000384 HardwareSerial::flush() + 0x0000038a HardwareSerial::read() + 0x00000390 HardwareSerial::available() + 0x00000396 HardwareSerial::begin(long) + .text 0x000003a0 0x31e ../arduino_libs/core0022_328p.a(Print.cpp.o) + 0x000003a0 Print::print(unsigned char) + 0x000003b0 Print::print(char) + 0x000003c0 Print::print(char const*) + 0x000003f0 Print::println() + 0x0000041e Print::println(char) + 0x0000043e Print::println(char const*) + 0x00000454 Print::println(unsigned char) + 0x00000474 Print::printNumber(unsigned long, unsigned char) + 0x000005a4 Print::print(unsigned long) + 0x000005ac Print::println(unsigned long) + 0x000005c2 Print::print(unsigned int) + 0x000005ce Print::println(unsigned int) + 0x000005ea Print::print(long) + 0x00000638 Print::println(long) + 0x0000064e Print::print(int) + 0x0000065e Print::println(int) + 0x0000067e Print::print(long, int) + 0x000006a8 Print::println(long, int) + .text 0x000006be 0x16e ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x000006be beginSerial + 0x00000730 serialWrite + 0x00000740 serialAvailable + 0x00000762 serialRead + 0x000007a0 serialFlush + 0x000007b2 __vector_18 + .text 0x0000082c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .text 0x0000082c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .text 0x0000082c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .text 0x0000082c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x0000082c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x0000082c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text 0x0000082c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text 0x0000082c 0x354 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + 0x00000ac4 __subsf3 + 0x00000b26 __addsf3 + .text 0x00000b80 0x1f4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + 0x00000b80 __mulsf3 + .text 0x00000d74 0x158 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + 0x00000d74 __divsf3 + .text 0x00000ecc 0xa8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + 0x00000ecc __fixsfsi + .text 0x00000f74 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .text 0x00000f74 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00000f74 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .text 0x00000f74 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .text 0x00000f74 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .text 0x00000f74 0x1aa /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + 0x00000f74 __pack_f + .text 0x0000111e 0xf0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + 0x0000111e __unpack_f + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .text 0x0000120e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x0000120e . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x0000120e 0x26 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + 0x0000120e __divmodhi4 + 0x0000120e _div + .text.libgcc 0x00001234 0x44 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + 0x00001234 __udivmodsi4 + .text.libgcc 0x00001278 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + 0x00001278 __divmodsi4 + .text.libgcc 0x000012ae 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x000012ae 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x000012ae 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x000012ae 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x000012ae 0x28 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + 0x000012ae __udivmodhi4 + .text.libgcc 0x000012d6 0x38 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + 0x000012d6 __prologue_saves__ + .text.libgcc 0x0000130e 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + 0x0000130e __epilogue_restores__ + .text.libgcc 0x00001344 0xc /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + 0x00001344 __tablejump2__ + 0x00001348 __tablejump__ + .text.avr-libc.fplib + 0x00001350 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + 0x00001350 sin + .text.avr-libc.fplib + 0x0000135c 0x50 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x0000135e __fp_rempio2 + .text.avr-libc.fplib + 0x000013ac 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x000013ac __fp_sinus + .text.avr-libc.fplib + 0x000013ce 0x44 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x000013ce __fp_split3 + 0x000013de __fp_splitA + .text.avr-libc.fplib + 0x00001412 0xc0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x0000142c __addsf3x + .text.avr-libc.fplib + 0x000014d2 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x000014d2 __fp_inf + .text.avr-libc.fplib + 0x000014de 0x1c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0x000014de __fp_mpack + 0x000014e2 __fp_mpack_finite + .text.avr-libc.fplib + 0x000014fa 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x000014fa __fp_nan + .text.avr-libc.fplib + 0x00001500 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x00001500 __fp_powsodd + .text.avr-libc.fplib + 0x00001522 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x00001522 __fp_pscA + .text.avr-libc.fplib + 0x00001530 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x00001530 __fp_pscB + .text.avr-libc.fplib + 0x0000153e 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x0000153e __fp_round + .text.avr-libc.fplib + 0x00001560 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x00001560 __fp_zero + 0x00001562 __fp_szero + .text.avr-libc.fplib + 0x0000156e 0x4a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x0000156e __fp_powser + .text.avr-libc.fplib + 0x000015b8 0xc2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x000015cc __mulsf3x + 0x000015d0 __mulsf3_pse + 0x0000167a . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000167a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x0000167a exit + 0x0000167a _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000167a 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x0000167e _etext = . + +.data 0x00800100 0x22 load address 0x0000167e + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x13 obj/Debug/main.o + .data 0x00800113 0x6 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x00800113 vtable for HardwareSerial + .data 0x00800119 0x0 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .data 0x00800119 0x0 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .data 0x00800119 0x8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + 0x00800119 __thenan_sf + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800122 . = ALIGN (0x2) + *fill* 0x00800121 0x1 00 + 0x00800122 _edata = . + 0x00800122 PROVIDE (__data_end, .) + +.bss 0x00800122 0x28a + 0x00800122 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800122 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800122 0x204 obj/Debug/main.o + 0x00800122 dd + 0x00800322 loopCount + 0x00800324 sample + .bss 0x00800326 0x2 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x00800326 Serial + .bss 0x00800328 0x0 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .bss 0x00800328 0x4 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x00800328 rx_buffer_head + 0x0080032a rx_buffer_tail + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.bss*) + *(COMMON) + COMMON 0x0080032c 0x80 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x0080032c rx_buffer + 0x008003ac PROVIDE (__bss_end, .) + 0x0000167e __data_load_start = LOADADDR (.data) + 0x000016a0 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x008003ac 0x0 + 0x008003ac PROVIDE (__noinit_start, .) + *(.noinit*) + 0x008003ac PROVIDE (__noinit_end, .) + 0x008003ac _end = . + 0x008003ac PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x23d0 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x6fc obj/Debug/main.o + 0x708 (size before relaxing) + .stab 0x00000db0 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + 0x84 (size before relaxing) + .stab 0x00000e28 0x21c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x228 (size before relaxing) + .stab 0x00001044 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x108 (size before relaxing) + .stab 0x00001140 0x1d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x1e0 (size before relaxing) + .stab 0x00001314 0x4bc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x4c8 (size before relaxing) + .stab 0x000017d0 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x84 (size before relaxing) + .stab 0x00001848 0xe4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0xf0 (size before relaxing) + .stab 0x0000192c 0x54 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x60 (size before relaxing) + .stab 0x00001980 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x108 (size before relaxing) + .stab 0x00001a7c 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x90 (size before relaxing) + .stab 0x00001b00 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x90 (size before relaxing) + .stab 0x00001b84 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x108 (size before relaxing) + .stab 0x00001c80 0x90 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x9c (size before relaxing) + .stab 0x00001d10 0x1ec /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x1f8 (size before relaxing) + .stab 0x00001efc 0x4d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x4e0 (size before relaxing) + +.stabstr 0x00000000 0x1c16 + *(.stabstr) + .stabstr 0x00000000 0x1c16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x60 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_aranges + 0x00000040 0x20 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_pubnames + 0x00000000 0x2a7 + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0xa2 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_pubnames + 0x000000a2 0x15c ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_pubnames + 0x000001fe 0xa9 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_info 0x00000000 0xd0b + *(.debug_info) + .debug_info 0x00000000 0x2f0 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_info 0x000002f0 0x890 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_info 0x00000b80 0x18b ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x3f7 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x18e ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_abbrev 0x0000018e 0x183 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_abbrev 0x00000311 0xe6 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_line 0x00000000 0x689 + *(.debug_line) + .debug_line 0x00000000 0x1b5 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_line 0x000001b5 0x364 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_line 0x00000519 0x170 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_frame 0x00000000 0x210 + *(.debug_frame) + .debug_frame 0x00000000 0x70 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_frame 0x00000070 0x130 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_frame 0x000001a0 0x70 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_str 0x00000000 0x420 + *(.debug_str) + .debug_str 0x00000000 0x1a7 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + 0x203 (size before relaxing) + .debug_str 0x000001a7 0x1b9 ../arduino_libs/core0022_328p.a(Print.cpp.o) + 0x246 (size before relaxing) + .debug_str 0x00000360 0xc0 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + 0x12c (size before relaxing) + +.debug_loc 0x00000000 0x75a + *(.debug_loc) + .debug_loc 0x00000000 0xa9 ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + .debug_loc 0x000000a9 0x621 ../arduino_libs/core0022_328p.a(Print.cpp.o) + .debug_loc 0x000006ca 0x90 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/electic_streaming.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +HardwareSerial::available() ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::begin(long) ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::flush() ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +HardwareSerial::read() ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +HardwareSerial::write(unsigned char) ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +Print::print(char const*) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(long, int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(unsigned char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(unsigned int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::print(unsigned long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::printNumber(unsigned long, unsigned char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println() ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(char const*) ../arduino_libs/core0022_328p.a(Print.cpp.o) + obj/Debug/main.o +Print::println(char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(long, int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(unsigned char) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(unsigned int) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Print::println(unsigned long) ../arduino_libs/core0022_328p.a(Print.cpp.o) +Serial ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__addsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Debug/main.o +__addsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__ctors_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__divmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + obj/Debug/main.o +__divmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +__divsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + obj/Debug/main.o +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) + obj/Debug/main.o +__do_global_ctors /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +__epilogue_restores__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Debug/main.o +__fp_inf /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_mpack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) +__fp_mpack_finite /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_nan /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_powser /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) +__fp_powsodd /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_pscA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_pscB /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_rempio2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) +__fp_round /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_sinus /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) +__fp_split3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_splitA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_szero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__fp_zero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__mulsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + obj/Debug/main.o +__mulsf3_pse /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__mulsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) +__pack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__tablejump2__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) +__udivmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core0022_328p.a(Print.cpp.o) +__unpack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_div /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +beginSerial ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +dd obj/Debug/main.o +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +fill_sinewave() obj/Debug/main.o +loopCount obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +rx_buffer ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +rx_buffer_head ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +rx_buffer_tail ../arduino_libs/core0022_328p.a(wiring_serial.c.o) +sample obj/Debug/main.o +serialAvailable ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +serialFlush ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +serialRead ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +serialWrite ../arduino_libs/core0022_328p.a(wiring_serial.c.o) + ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) +sin /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + obj/Debug/main.o +vtable for HardwareSerial ../arduino_libs/core0022_328p.a(HardwareSerial.cpp.o) diff --git a/electic_streaming328p/bin/Release/electic_streaming.elf b/electic_streaming328p/bin/Release/electic_streaming.elf Binary files differnew file mode 100755 index 0000000..be0b7e9 --- /dev/null +++ b/electic_streaming328p/bin/Release/electic_streaming.elf diff --git a/electic_streaming328p/bin/Release/electic_streaming.elf.eep.hex b/electic_streaming328p/bin/Release/electic_streaming.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/electic_streaming328p/bin/Release/electic_streaming.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF
diff --git a/electic_streaming328p/bin/Release/electic_streaming.elf.hex b/electic_streaming328p/bin/Release/electic_streaming.elf.hex new file mode 100644 index 0000000..d3fe242 --- /dev/null +++ b/electic_streaming328p/bin/Release/electic_streaming.elf.hex @@ -0,0 +1,328 @@ +:100000000C9444000C946C000C946C000C946C00E8
+:100010000C946C000C946C000C946C000C946C00B0
+:100020000C946C000C946C000C946C000C946E009E
+:100030000C946C000C946C000C946C000C946C0090
+:100040000C946C000C946C000C9460030C946C0089
+:100050000C946C000C946C000C946C000C946C0070
+:100060000C946C000C946C0005A84CCDB2D44EB925
+:100070003836A9020C50B9918688083CA6AAAA2A4B
+:10008000BE000000803F3E0111241FBECFEFD8E02C
+:10009000DEBFCDBF11E0A0E0B1E0E4E3F4E102C0D7
+:1000A00005900D92A232B107D9F713E0A2E2B1E0B8
+:1000B00001C01D92AC3AB107E1F710E0C8E8D0E00A
+:1000C00004C02297FE010E947F08C638D107C9F7F5
+:1000D0000E9402010C94180A0C9400001F920F92C7
+:1000E0000FB60F9211242F933F934F935F936F930B
+:1000F0007F938F939F93AF93BF93CF93DF93EF93B0
+:10010000FF9385B190E2892785B9C0E0D0E0E09106
+:100110002403F0912503EE5DFE4F86E293E06081BB
+:100120000E9445018091240390912503019660E08F
+:1001300072E00E94E20790932503809324032196A6
+:1001400081E0C034D80719F786E293E060E00E94AE
+:100150004501FF91EF91DF91CF91BF91AF919F91B9
+:100160008F917F916F915F914F913F912F910F9060
+:100170000FBE0F901F901895AF92BF92CF92DF9253
+:10018000EF92FF920F931F93CF93DF93C2E2D1E0E0
+:100190000F2EF0E0AF2EF0E0BF2EF0E0CF2EF0E01B
+:1001A000DF2EF02DC601B5010E9483087B018C0172
+:1001B000C601B50128ED3FE049E45CE30E941A0561
+:1001C0005B016C01C801B70120E030E04EEF52E462
+:1001D0000E94470520E030E040E053E40E941A0509
+:1001E0000E944106699383E0C232D807D9F6DF91B5
+:1001F000CF911F910F91FF90EF90DF90CF90BF9024
+:10020000AF9008951F930E94BC0086E293E040E007
+:1002100052EC61E070E00E945201259A80E285B9BB
+:100220008091810088608093810080916F0082605E
+:1002300080936F0086E891E0909389008093880016
+:10024000789410E286E293E00E944F011816190696
+:10025000CCF785B1812785B986E293E00E944C01F5
+:10026000813681F786E293E060E071E00E94A601AA
+:1002700080918100856080938100E4CF87E191E0E7
+:1002800090932703809326030895862F0E941F03CF
+:1002900008950E94570308950E94380308950E940C
+:1002A00027030895CB01BA010E94E6020895DC01FC
+:1002B000ED91FC910190F081E02D09950895DC010C
+:1002C000ED91FC910190F081E02D099508950F9337
+:1002D0001F93CF93DF938C01EB0109C02196D801C6
+:1002E000ED91FC910190F081E02DC80109956881A4
+:1002F0006623A1F7DF91CF911F910F9108950F937E
+:100300001F938C01DC01ED91FC910190F081E02DB7
+:100310006DE00995D801ED91FC910190F081E02DFF
+:100320006AE0C80109951F910F9108950F931F93DB
+:100330008C01DC01ED91FC910190F081E02D09959B
+:10034000C8010E947F011F910F9108950F931F9381
+:100350008C010E946701C8010E947F011F910F91CB
+:1003600008950F931F938C01DC01ED91FC91019096
+:10037000F081E02D0995C8010E947F011F910F9126
+:1003800008952F923F924F925F926F927F928F9239
+:100390009F92AF92BF92CF92DF92EF92FF920F9314
+:1003A0001F93DF93CF93CDB7DEB7A0970FB6F89426
+:1003B000DEBF0FBECDBF1C016A017B014115510597
+:1003C0006105710549F4DC01ED91FC910190F0812A
+:1003D000E02D60E3099554C0882499245401422EED
+:1003E00055246624772401E010E00C0F1D1F080D32
+:1003F000191DC701B601A30192010E94F507F8017A
+:1004000060830894811C911CA11CB11CC701B6011A
+:10041000A30192010E94F507C901DA016C017D0177
+:10042000C114D104E104F104F1F681E0E82EF12CCD
+:10043000EC0EFD1EE80CF91C3E010894611C711CB9
+:10044000D501C4010197A109B1096C01C818D908E7
+:1004500014C0F601EE0DFF1D60816A3010F4605D7E
+:1004600001C0695CD101ED91FC910190F081E02D1A
+:10047000C10109950894E108F1086E147F0449F759
+:10048000A0960FB6F894DEBF0FBECDBFCF91DF911F
+:100490001F910F91FF90EF90DF90CF90BF90AF90A2
+:1004A0009F908F907F906F905F904F903F902F9094
+:1004B00008952AE00E94C10108950F931F938C01B3
+:1004C0000E945902C8010E947F011F910F91089557
+:1004D000AB0160E070E00E94590208950F931F93F2
+:1004E0008C01AB0160E070E00E945902C8010E94DB
+:1004F0007F011F910F910895EF92FF920F931F9329
+:10050000CF93DF93EC017A018B0177FF0FC0E88175
+:10051000F9810190F081E02D6DE20995109500952B
+:10052000F094E094E11CF11C011D111D2AE0B801BA
+:10053000A701CE010E94C101DF91CF911F910F91C0
+:10054000FF90EF9008950F931F938C010E947C02FF
+:10055000C8010E947F011F910F910895AB0166278A
+:1005600057FD6095762F0E947C0208950F931F938C
+:100570008C01AB01662757FD6095762F0E947C02A7
+:10058000C8010E947F011F910F910895DC01211580
+:10059000310541F4ED91FC910190F081E02D642F43
+:1005A000099508952A30310519F40E947C020895B6
+:1005B0000E94C10108950F931F938C010E94C602EF
+:1005C000C8010E947F011F910F910895EF92FF9241
+:1005D0000F931F937B018C0122E030E040E050E05C
+:1005E0000E941708205C3D4B404F5F4FCA01B90184
+:1005F000A80197010E941708C901DA010197A10912
+:10060000B109292F3A2F4B2F552747FD5A950196AF
+:10061000A11DB11D2093C50081508093C400E1EC61
+:10062000F0E0808180618083808188608083808128
+:10063000806880831F910F91FF90EF900895982F0D
+:100640008091C00085FFFCCF9093C60008958091F3
+:1006500028039091290380589F4F20912A033091BD
+:100660002B03821B930B60E870E00E94E207089561
+:1006700040912A0350912B038091280390912903E4
+:100680008417950719F42FEF3FEF0FC0FA01E45DCF
+:10069000FC4F2081CA01019660E870E00E94E207E9
+:1006A00090932B0380932A0330E0C9010895809131
+:1006B0002A0390912B039093290380932803089594
+:1006C0001F920F920FB60F9211242F933F934F93C7
+:1006D0005F936F937F938F939F93AF93BF93EF93AA
+:1006E000FF934091C600E0912803F0912903CF01C8
+:1006F000019660E870E00E94E2079C0180912A0365
+:1007000090912B032817390739F0E45DFC4F4083A3
+:100710003093290320932803FF91EF91BF91AF916C
+:100720009F918F917F916F915F914F913F912F9109
+:100730000F900FBE0F901F901895A0E0B0E0E3EA75
+:10074000F3E00C944608DC012B01FA019C919230F5
+:1007500008F439C1EB018881823008F433C1943048
+:1007600069F4843009F02FC111969C911197898109
+:10077000981709F428C1A9E1B1E025C1843009F432
+:1007800021C18230A9F4923009F01DC19A01AD0156
+:1007900088E0EA010990AE01E90109929E018150C9
+:1007A000C1F7E201898111969C918923818308C157
+:1007B000923009F407C112962D903C901397EB01EB
+:1007C0008A819B811496AD90BD90CD90DC90179757
+:1007D000EC80FD800E811F819101281B390BB9012E
+:1007E00037FF04C066277727621B730B60327105E1
+:1007F0000CF061C0121613066CF537014801062E85
+:1008000004C096948794779467940A94D2F721E071
+:1008100030E040E050E004C0220F331F441F551F5A
+:100820006A95D2F721503040404050402E213F2160
+:1008300040235123211531054105510521F021E0C7
+:1008400030E040E050E079018A01E628F7280829E5
+:1008500019293CC0232BD1F1260E371E3501460144
+:10086000062E04C096948794779467940A94D2F7DE
+:1008700021E030E040E050E004C0220F331F441F6D
+:10088000551F6A95D2F721503040404050402A21F0
+:100890003B214C215D21211531054105510521F0F8
+:1008A00021E030E040E050E059016A01A628B72875
+:1008B000C828D9280BC0821593052CF01C01AA2446
+:1008C000BB24650103C0EE24FF24870111969C918F
+:1008D000D20111968C91981709F445C0992339F0EB
+:1008E000A80197012A193B094C095D0906C0A60118
+:1008F00095012E193F09400B510B57FD08C011827D
+:100900003382228224833583468357831DC081E04E
+:1009100081833382228288279927DC01821B930BF3
+:10092000A40BB50B84839583A683B7830DC0220FD8
+:10093000331F441F551F2483358346835783828189
+:1009400093810197938382832481358146815781E6
+:10095000DA01C9010197A109B1098F5F9F4FAF4F1C
+:10096000BF4328F30BC0918333822282EA0CFB1C25
+:100970000C1D1D1DE482F5820683178383E08083AE
+:10098000248135814681578157FF1AC0C901AA27A2
+:1009900097FDA095BA2F81709070A070B070569599
+:1009A000479537952795822B932BA42BB52B8483C2
+:1009B0009583A683B78382819381019693838283F3
+:1009C000DF0101C0D201CD01CDB7DEB7E2E10C9469
+:1009D0006208A0E2B0E0EFEEF4E00C945208698304
+:1009E0007A838B839C832D833E834F835887E9E0F2
+:1009F000EE2EF12CEC0EFD1ECE010196B7010E94E9
+:100A00006A078E010F5E1F4FCE010596B8010E9446
+:100A10006A078A8991E089278A8BC701B801AE01EC
+:100A2000475E5F4F0E949D030E949506A096E6E0F8
+:100A30000C946E08A0E2B0E0E0E2F5E00C945208FD
+:100A400069837A838B839C832D833E834F8358876E
+:100A5000F9E0EF2EF12CEC0EFD1ECE010196B70150
+:100A60000E946A078E010F5E1F4FCE010596B801E6
+:100A70000E946A07C701B801AE01475E5F4F0E943E
+:100A80009D030E949506A096E6E00C946E08A0E2F5
+:100A9000B0E0EDE4F5E00C94460869837A838B833B
+:100AA0009C832D833E834F835887CE010196BE01E0
+:100AB000675F7F4F0E946A07CE010596BE016F5E99
+:100AC0007F4F0E946A079985923088F08989823029
+:100AD000C8F0943019F4823051F404C0843029F401
+:100AE000923081F489E191E0C6C0923049F420E06F
+:100AF0009A858A89981321E02A87CE010996BBC07E
+:100B0000823049F420E09A858A89981321E02A8B63
+:100B1000CE014196B0C02D843E844F8458886D88A4
+:100B20007E888F88988CEE24FF248701AA24BB241A
+:100B3000650140E050E060E070E0E0E0F0E0C1011D
+:100B400081709070892BE9F0E60CF71C081D191DC7
+:100B50009A01AB012A0D3B1D4C1D5D1D80E090E00C
+:100B6000A0E0B0E0E614F7040805190520F481E0E0
+:100B700090E0A0E0B0E0BA01A901480F591F6A1F38
+:100B80007B1FAA0CBB1CCC1CDD1C97FE08C081E09F
+:100B900090E0A0E0B0E0A82AB92ACA2ADB2A319660
+:100BA000E032F10549F0660C771C881C991C5694BC
+:100BB000479437942794C3CFFA85EA892B893C89D7
+:100BC0008B859C85280F391F2E5F3F4F17C0CA01A8
+:100BD00081709070892B61F016950795F794E794D2
+:100BE00080E090E0A0E0B0E8E82AF92A0A2B1B2B6D
+:100BF00076956795579547952F5F3F4F77FDE7CFE0
+:100C00000CC0440F551F661F771F17FD4160EE0C87
+:100C1000FF1C001F111F21503040403090E0590749
+:100C200090E0690790E4790760F32B8F3C8FDB013C
+:100C3000CA018F779070A070B07080349105A105C3
+:100C4000B10561F447FD0AC0E114F1040105110585
+:100C500029F0405C5F4F6F4F7F4F40781A8EFE1730
+:100C600011F081E08A8F4D8F5E8F6F8F78A383E0C4
+:100C7000898FCE0149960E949506A096E2E10C94D8
+:100C80006208ACE0B0E0E7E4F6E00C945608698353
+:100C90007A838B839C83CE010196BE016B5F7F4F6D
+:100CA0000E946A078D81823061F1823050F1843078
+:100CB00021F48E81882351F12EC02F81388537FD94
+:100CC00020C06E812F3131051CF06623F9F023C05E
+:100CD0008EE190E0821B930B29853A854B855C85DC
+:100CE00004C056954795379527958A95D2F7662380
+:100CF000B1F050954095309521953F4F4F4F5F4F44
+:100D00000EC020E030E040E050E009C02FEF3FEFA0
+:100D10004FEF5FE704C020E030E040E050E8B90169
+:100D2000CA012C96E2E00C947208DF92EF92FF92D7
+:100D30000F931F93FC01E480F58006811781D18019
+:100D40008081823048F480E090E0A0E1B0E0E82AC1
+:100D5000F92A0A2B1B2BA5C0843009F49FC08230CE
+:100D600021F4EE24FF24870105C0E114F1040105FC
+:100D7000110519F4E0E0F0E096C0628173819FEF05
+:100D8000623879070CF05BC022E83FEF261B370B77
+:100D90002A3131052CF020E030E040E050E02AC05C
+:100DA000B801A701022E04C076956795579547951F
+:100DB0000A94D2F781E090E0A0E0B0E004C0880F90
+:100DC000991FAA1FBB1F2A95D2F70197A109B10944
+:100DD0008E219F21A023B1230097A105B10521F009
+:100DE00081E090E0A0E0B0E09A01AB01282B392B24
+:100DF0004A2B5B2BDA01C9018F779070A070B0701D
+:100E000080349105A105B10539F427FF09C0205CA4
+:100E10003F4F4F4F5F4F04C0215C3F4F4F4F5F4FDD
+:100E2000E0E0F0E02030A0E03A07A0E04A07A0E4CC
+:100E30005A0710F0E1E0F0E079018A0127C060383C
+:100E4000710564F5FB01E158FF4FD801C7018F77A9
+:100E50009070A070B07080349105A105B10539F48F
+:100E6000E7FE0DC080E490E0A0E0B0E004C08FE3B6
+:100E700090E0A0E0B0E0E80EF91E0A1F1B1F17FF6C
+:100E800005C016950795F794E794319687E0169577
+:100E90000795F794E7948A95D1F705C0EE24FF24CF
+:100EA0008701EFEFF0E06E2F679566276795902F2B
+:100EB0009F77D794DD24D7948E2F8695492F462B84
+:100EC000582F5D29B701CA011F910F91FF90EF9034
+:100ED000DF900895FC01DB01408151812281622F66
+:100EE0006F7770E0221F2227221F9381892F880F9E
+:100EF000822B282F30E0991F9927991F11969C93D8
+:100F0000119721153105A9F54115510561057105A7
+:100F100011F482E037C082E89FEF13969C938E9382
+:100F200012979A01AB0167E0220F331F441F551F30
+:100F30006A95D1F783E08C930DC0220F331F441FB5
+:100F4000551F12968D919C911397019713969C9320
+:100F50008E931297203080E0380780E0480780E4C5
+:100F6000580758F314962D933D934D935C93179720
+:100F700008952F3F310579F441155105610571053B
+:100F800019F484E08C93089564FF03C081E08C938E
+:100F900012C01C9210C02F57304013963C932E93D2
+:100FA000129783E08C9387E0440F551F661F771FCD
+:100FB0008A95D1F7706414964D935D936D937C93ED
+:100FC0001797089597FB092E07260AD077FD04D0BE
+:100FD00049D006D000201AF4709561957F4F08958E
+:100FE000F6F7909581959F4F0895A1E21A2EAA1BBE
+:100FF000BB1BFD010DC0AA1FBB1FEE1FFF1FA217C9
+:10100000B307E407F50720F0A21BB30BE40BF50BC5
+:10101000661F771F881F991F1A9469F7609570954E
+:10102000809590959B01AC01BD01CF01089597FB80
+:10103000092E05260ED057FD04D0D7DF0AD0001C9C
+:1010400038F450954095309521953F4F4F4F5F4F65
+:101050000895F6F790958095709561957F4F8F4F25
+:101060009F4F0895AA1BBB1B51E107C0AA1FBB1FBE
+:10107000A617B70710F0A61BB70B881F991F5A9524
+:10108000A9F780959095BC01CD0108952F923F92CC
+:101090004F925F926F927F928F929F92AF92BF9288
+:1010A000CF92DF92EF92FF920F931F93CF93DF9334
+:1010B000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE91
+:1010C000CDBF09942A88398848885F846E847D84DE
+:1010D0008C849B84AA84B984C884DF80EE80FD80E0
+:1010E0000C811B81AA81B981CE0FD11D0FB6F89456
+:1010F000DEBF0FBECDBFED010895EE0FFF1F0590BF
+:10110000F491E02D09949F9305D00F9007FCEE5FBA
+:1011100028C0CEC03FD0E8F3E894E0E0BB279F575B
+:10112000F0F02AED3FE049EC06C0EE0FBB0F661F62
+:10113000771F881F28F0B23A62077307840728F0E8
+:10114000B25A620B730B840BE3959A9572F7803851
+:1011500030F49A95BB0F661F771F881FD2F790480F
+:101160009BC0EF93E0FF06C0A2EA2AED3FE049EC06
+:101170005FEB37D0BFD00F90039401FC9058E8E6A6
+:10118000F0E099C057FD9058440F551F59F05F3F4C
+:1011900071F04795880F97FB991F61F09F3F79F099
+:1011A00087950895121613061406551FF2CF46951B
+:1011B000F1DF08C0161617061806991FF1CF86959D
+:1011C000710561050894089587D030F08CD020F027
+:1011D00031F49F3F11F41EF46BC00EF4E095E7FB71
+:1011E00053C0E92FCFDF80F3BA1762077307840774
+:1011F000950718F071F49EF58EC00EF4E0950B2E55
+:10120000BA2FA02D0B01B90190010C01CA01A00158
+:101210001124FF27591B99F0593F50F4503E68F1B3
+:101220001A16F040A22F232F342F4427585FF3CFF4
+:10123000469537952795A795F0405395C9F77EF4C5
+:101240001F16BA0B620B730B840BBAF09150A1F00E
+:10125000FF0FBB1F661F771F881FC2F70EC0BA0F94
+:10126000621F731F841F48F4879577956795B7951C
+:10127000F7959E3F08F0B3CF9395880F08F0992714
+:10128000EE0F97958795089597F99F6780E870E02E
+:1012900060E008959F3F31F0915020F48795779555
+:1012A0006795B795880F911D9695879597F908953D
+:1012B0009FEF80EC08959F938F937F936F93FF939D
+:1012C000EF939B01AC01E3DBEF91FF912BD02F91CA
+:1012D0003F914F915F91DBCB00240A9416161706BD
+:1012E00018060906089500240A9412161306140617
+:1012F00005060895092E0394000C11F4882352F07A
+:10130000BB0F40F4BF2B11F460FF04C06F5F7F4F31
+:101310008F4F9F4F0895E894BB2766277727CB010F
+:1013200097F90895DF93CF931F930F93FF92EF9256
+:10133000DF927B018C01689405C0DA2EEF0121D089
+:10134000FE01E894A5912591359145915591AEF313
+:10135000EF0147DFFE019701A801DA9479F7DF90EA
+:10136000EF90FF900F911F91CF91DF910895B4DF1F
+:1013700028F0B9DF18F0952309F086CF99CF112412
+:10138000CBCF00DFA0F3959FD1F3950F50E0551F11
+:10139000629FF001729FBB27F00DB11D639FAA27CA
+:1013A000F00DB11DAA1F649F6627B00DA11D661F19
+:1013B000829F2227B00DA11D621F739FB00DA11D3A
+:1013C000621F839FA00D611D221F749F3327A00DF4
+:1013D000611D231F849F600D211D822F762F6A2F90
+:1013E00011249F5750408AF0E1F088234AF0EE0F15
+:1013F000FF1FBB1F661F771F881F91505040A9F722
+:101400009E3F510570F040CF87CF5F3FECF3983E91
+:10141000DCF3869577956795B795F795E7959F5F88
+:10142000C1F7FE2B880F911D9695879597F9089522
+:04143000F894FFCF5E
+:1014340057656C636F6D6520746F20656C656374AC
+:101444006963000000000045010000000000000086
+:02145400000096
+:00000001FF
diff --git a/electic_streaming328p/bin/Release/electic_streaming.elf.lss b/electic_streaming328p/bin/Release/electic_streaming.elf.lss new file mode 100644 index 0000000..06e1adb --- /dev/null +++ b/electic_streaming328p/bin/Release/electic_streaming.elf.lss @@ -0,0 +1,2665 @@ + +bin/Release/electic_streaming.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000022 00800100 00001434 000014c8 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00001434 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 0000028a 00800122 00800122 000014ea 2**0 + ALLOC + 3 .stab 00001cd4 00000000 00000000 000014ec 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 0000030d 00000000 00000000 000031c0 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_aranges 00000060 00000000 00000000 000034cd 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_pubnames 000002a7 00000000 00000000 0000352d 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_info 00000d0b 00000000 00000000 000037d4 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_abbrev 000003f7 00000000 00000000 000044df 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_line 00000689 00000000 00000000 000048d6 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_frame 00000210 00000000 00000000 00004f60 2**2 + CONTENTS, READONLY, DEBUGGING + 11 .debug_str 00000420 00000000 00000000 00005170 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_loc 0000075a 00000000 00000000 00005590 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 44 00 jmp 0x88 ; 0x88 <__ctors_end> + 4: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 8: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 10: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 14: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 18: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 1c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 20: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 24: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 28: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 2c: 0c 94 6e 00 jmp 0xdc ; 0xdc <__vector_11> + 30: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 34: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 38: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 3c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 40: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 44: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 48: 0c 94 60 03 jmp 0x6c0 ; 0x6c0 <__vector_18> + 4c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 50: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 54: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 58: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 5c: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 60: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 64: 0c 94 6c 00 jmp 0xd8 ; 0xd8 <__bad_interrupt> + 68: 05 a8 ldd r0, Z+53 ; 0x35 + 6a: 4c cd rjmp .-1384 ; 0xfffffb04 <__eeprom_end+0xff7efb04> + 6c: b2 d4 rcall .+2404 ; 0x9d2 <__subsf3> + 6e: 4e b9 out 0x0e, r20 ; 14 + 70: 38 36 cpi r19, 0x68 ; 104 + 72: a9 02 muls r26, r25 + 74: 0c 50 subi r16, 0x0C ; 12 + 76: b9 91 ld r27, Y+ + 78: 86 88 ldd r8, Z+22 ; 0x16 + 7a: 08 3c cpi r16, 0xC8 ; 200 + 7c: a6 aa std Z+54, r10 ; 0x36 + 7e: aa 2a or r10, r26 + 80: be 00 .word 0x00be ; ???? + 82: 00 00 nop + 84: 80 3f cpi r24, 0xF0 ; 240 + +00000086 <__ctors_start>: + 86: 3e 01 movw r6, r28 + +00000088 <__ctors_end>: + 88: 11 24 eor r1, r1 + 8a: 1f be out 0x3f, r1 ; 63 + 8c: cf ef ldi r28, 0xFF ; 255 + 8e: d8 e0 ldi r29, 0x08 ; 8 + 90: de bf out 0x3e, r29 ; 62 + 92: cd bf out 0x3d, r28 ; 61 + +00000094 <__do_copy_data>: + 94: 11 e0 ldi r17, 0x01 ; 1 + 96: a0 e0 ldi r26, 0x00 ; 0 + 98: b1 e0 ldi r27, 0x01 ; 1 + 9a: e4 e3 ldi r30, 0x34 ; 52 + 9c: f4 e1 ldi r31, 0x14 ; 20 + 9e: 02 c0 rjmp .+4 ; 0xa4 <.do_copy_data_start> + +000000a0 <.do_copy_data_loop>: + a0: 05 90 lpm r0, Z+ + a2: 0d 92 st X+, r0 + +000000a4 <.do_copy_data_start>: + a4: a2 32 cpi r26, 0x22 ; 34 + a6: b1 07 cpc r27, r17 + a8: d9 f7 brne .-10 ; 0xa0 <.do_copy_data_loop> + +000000aa <__do_clear_bss>: + aa: 13 e0 ldi r17, 0x03 ; 3 + ac: a2 e2 ldi r26, 0x22 ; 34 + ae: b1 e0 ldi r27, 0x01 ; 1 + b0: 01 c0 rjmp .+2 ; 0xb4 <.do_clear_bss_start> + +000000b2 <.do_clear_bss_loop>: + b2: 1d 92 st X+, r1 + +000000b4 <.do_clear_bss_start>: + b4: ac 3a cpi r26, 0xAC ; 172 + b6: b1 07 cpc r27, r17 + b8: e1 f7 brne .-8 ; 0xb2 <.do_clear_bss_loop> + +000000ba <__do_global_ctors>: + ba: 10 e0 ldi r17, 0x00 ; 0 + bc: c8 e8 ldi r28, 0x88 ; 136 + be: d0 e0 ldi r29, 0x00 ; 0 + c0: 04 c0 rjmp .+8 ; 0xca <.do_global_ctors_start> + +000000c2 <.do_global_ctors_loop>: + c2: 22 97 sbiw r28, 0x02 ; 2 + c4: fe 01 movw r30, r28 + c6: 0e 94 7f 08 call 0x10fe ; 0x10fe <__tablejump__> + +000000ca <.do_global_ctors_start>: + ca: c6 38 cpi r28, 0x86 ; 134 + cc: d1 07 cpc r29, r17 + ce: c9 f7 brne .-14 ; 0xc2 <.do_global_ctors_loop> + d0: 0e 94 02 01 call 0x204 ; 0x204 <main> + d4: 0c 94 18 0a jmp 0x1430 ; 0x1430 <_exit> + +000000d8 <__bad_interrupt>: + d8: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000dc <__vector_11>: + dc: 1f 92 push r1 + de: 0f 92 push r0 + e0: 0f b6 in r0, 0x3f ; 63 + e2: 0f 92 push r0 + e4: 11 24 eor r1, r1 + e6: 2f 93 push r18 + e8: 3f 93 push r19 + ea: 4f 93 push r20 + ec: 5f 93 push r21 + ee: 6f 93 push r22 + f0: 7f 93 push r23 + f2: 8f 93 push r24 + f4: 9f 93 push r25 + f6: af 93 push r26 + f8: bf 93 push r27 + fa: cf 93 push r28 + fc: df 93 push r29 + fe: ef 93 push r30 + 100: ff 93 push r31 + 102: 85 b1 in r24, 0x05 ; 5 + 104: 90 e2 ldi r25, 0x20 ; 32 + 106: 89 27 eor r24, r25 + 108: 85 b9 out 0x05, r24 ; 5 + 10a: c0 e0 ldi r28, 0x00 ; 0 + 10c: d0 e0 ldi r29, 0x00 ; 0 + 10e: e0 91 24 03 lds r30, 0x0324 + 112: f0 91 25 03 lds r31, 0x0325 + 116: ee 5d subi r30, 0xDE ; 222 + 118: fe 4f sbci r31, 0xFE ; 254 + 11a: 86 e2 ldi r24, 0x26 ; 38 + 11c: 93 e0 ldi r25, 0x03 ; 3 + 11e: 60 81 ld r22, Z + 120: 0e 94 45 01 call 0x28a ; 0x28a <_ZN14HardwareSerial5writeEh> + 124: 80 91 24 03 lds r24, 0x0324 + 128: 90 91 25 03 lds r25, 0x0325 + 12c: 01 96 adiw r24, 0x01 ; 1 + 12e: 60 e0 ldi r22, 0x00 ; 0 + 130: 72 e0 ldi r23, 0x02 ; 2 + 132: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 136: 90 93 25 03 sts 0x0325, r25 + 13a: 80 93 24 03 sts 0x0324, r24 + 13e: 21 96 adiw r28, 0x01 ; 1 + 140: 81 e0 ldi r24, 0x01 ; 1 + 142: c0 34 cpi r28, 0x40 ; 64 + 144: d8 07 cpc r29, r24 + 146: 19 f7 brne .-58 ; 0x10e <__vector_11+0x32> + 148: 86 e2 ldi r24, 0x26 ; 38 + 14a: 93 e0 ldi r25, 0x03 ; 3 + 14c: 60 e0 ldi r22, 0x00 ; 0 + 14e: 0e 94 45 01 call 0x28a ; 0x28a <_ZN14HardwareSerial5writeEh> + 152: ff 91 pop r31 + 154: ef 91 pop r30 + 156: df 91 pop r29 + 158: cf 91 pop r28 + 15a: bf 91 pop r27 + 15c: af 91 pop r26 + 15e: 9f 91 pop r25 + 160: 8f 91 pop r24 + 162: 7f 91 pop r23 + 164: 6f 91 pop r22 + 166: 5f 91 pop r21 + 168: 4f 91 pop r20 + 16a: 3f 91 pop r19 + 16c: 2f 91 pop r18 + 16e: 0f 90 pop r0 + 170: 0f be out 0x3f, r0 ; 63 + 172: 0f 90 pop r0 + 174: 1f 90 pop r1 + 176: 18 95 reti + +00000178 <_Z13fill_sinewavev>: + 178: af 92 push r10 + 17a: bf 92 push r11 + 17c: cf 92 push r12 + 17e: df 92 push r13 + 180: ef 92 push r14 + 182: ff 92 push r15 + 184: 0f 93 push r16 + 186: 1f 93 push r17 + 188: cf 93 push r28 + 18a: df 93 push r29 + 18c: c2 e2 ldi r28, 0x22 ; 34 + 18e: d1 e0 ldi r29, 0x01 ; 1 + 190: 0f 2e mov r0, r31 + 192: f0 e0 ldi r31, 0x00 ; 0 + 194: af 2e mov r10, r31 + 196: f0 e0 ldi r31, 0x00 ; 0 + 198: bf 2e mov r11, r31 + 19a: f0 e0 ldi r31, 0x00 ; 0 + 19c: cf 2e mov r12, r31 + 19e: f0 e0 ldi r31, 0x00 ; 0 + 1a0: df 2e mov r13, r31 + 1a2: f0 2d mov r31, r0 + 1a4: c6 01 movw r24, r12 + 1a6: b5 01 movw r22, r10 + 1a8: 0e 94 83 08 call 0x1106 ; 0x1106 <sin> + 1ac: 7b 01 movw r14, r22 + 1ae: 8c 01 movw r16, r24 + 1b0: c6 01 movw r24, r12 + 1b2: b5 01 movw r22, r10 + 1b4: 28 ed ldi r18, 0xD8 ; 216 + 1b6: 3f e0 ldi r19, 0x0F ; 15 + 1b8: 49 e4 ldi r20, 0x49 ; 73 + 1ba: 5c e3 ldi r21, 0x3C ; 60 + 1bc: 0e 94 1a 05 call 0xa34 ; 0xa34 <__addsf3> + 1c0: 5b 01 movw r10, r22 + 1c2: 6c 01 movw r12, r24 + 1c4: c8 01 movw r24, r16 + 1c6: b7 01 movw r22, r14 + 1c8: 20 e0 ldi r18, 0x00 ; 0 + 1ca: 30 e0 ldi r19, 0x00 ; 0 + 1cc: 4e ef ldi r20, 0xFE ; 254 + 1ce: 52 e4 ldi r21, 0x42 ; 66 + 1d0: 0e 94 47 05 call 0xa8e ; 0xa8e <__mulsf3> + 1d4: 20 e0 ldi r18, 0x00 ; 0 + 1d6: 30 e0 ldi r19, 0x00 ; 0 + 1d8: 40 e0 ldi r20, 0x00 ; 0 + 1da: 53 e4 ldi r21, 0x43 ; 67 + 1dc: 0e 94 1a 05 call 0xa34 ; 0xa34 <__addsf3> + 1e0: 0e 94 41 06 call 0xc82 ; 0xc82 <__fixsfsi> + 1e4: 69 93 st Y+, r22 + 1e6: 83 e0 ldi r24, 0x03 ; 3 + 1e8: c2 32 cpi r28, 0x22 ; 34 + 1ea: d8 07 cpc r29, r24 + 1ec: d9 f6 brne .-74 ; 0x1a4 <_Z13fill_sinewavev+0x2c> + 1ee: df 91 pop r29 + 1f0: cf 91 pop r28 + 1f2: 1f 91 pop r17 + 1f4: 0f 91 pop r16 + 1f6: ff 90 pop r15 + 1f8: ef 90 pop r14 + 1fa: df 90 pop r13 + 1fc: cf 90 pop r12 + 1fe: bf 90 pop r11 + 200: af 90 pop r10 + 202: 08 95 ret + +00000204 <main>: + 204: 1f 93 push r17 + 206: 0e 94 bc 00 call 0x178 ; 0x178 <_Z13fill_sinewavev> + 20a: 86 e2 ldi r24, 0x26 ; 38 + 20c: 93 e0 ldi r25, 0x03 ; 3 + 20e: 40 e0 ldi r20, 0x00 ; 0 + 210: 52 ec ldi r21, 0xC2 ; 194 + 212: 61 e0 ldi r22, 0x01 ; 1 + 214: 70 e0 ldi r23, 0x00 ; 0 + 216: 0e 94 52 01 call 0x2a4 ; 0x2a4 <_ZN14HardwareSerial5beginEl> + 21a: 25 9a sbi 0x04, 5 ; 4 + 21c: 80 e2 ldi r24, 0x20 ; 32 + 21e: 85 b9 out 0x05, r24 ; 5 + 220: 80 91 81 00 lds r24, 0x0081 + 224: 88 60 ori r24, 0x08 ; 8 + 226: 80 93 81 00 sts 0x0081, r24 + 22a: 80 91 6f 00 lds r24, 0x006F + 22e: 82 60 ori r24, 0x02 ; 2 + 230: 80 93 6f 00 sts 0x006F, r24 + 234: 86 e8 ldi r24, 0x86 ; 134 + 236: 91 e0 ldi r25, 0x01 ; 1 + 238: 90 93 89 00 sts 0x0089, r25 + 23c: 80 93 88 00 sts 0x0088, r24 + 240: 78 94 sei + 242: 10 e2 ldi r17, 0x20 ; 32 + 244: 86 e2 ldi r24, 0x26 ; 38 + 246: 93 e0 ldi r25, 0x03 ; 3 + 248: 0e 94 4f 01 call 0x29e ; 0x29e <_ZN14HardwareSerial9availableEv> + 24c: 18 16 cp r1, r24 + 24e: 19 06 cpc r1, r25 + 250: cc f7 brge .-14 ; 0x244 <main+0x40> + 252: 85 b1 in r24, 0x05 ; 5 + 254: 81 27 eor r24, r17 + 256: 85 b9 out 0x05, r24 ; 5 + 258: 86 e2 ldi r24, 0x26 ; 38 + 25a: 93 e0 ldi r25, 0x03 ; 3 + 25c: 0e 94 4c 01 call 0x298 ; 0x298 <_ZN14HardwareSerial4readEv> + 260: 81 36 cpi r24, 0x61 ; 97 + 262: 81 f7 brne .-32 ; 0x244 <main+0x40> + 264: 86 e2 ldi r24, 0x26 ; 38 + 266: 93 e0 ldi r25, 0x03 ; 3 + 268: 60 e0 ldi r22, 0x00 ; 0 + 26a: 71 e0 ldi r23, 0x01 ; 1 + 26c: 0e 94 a6 01 call 0x34c ; 0x34c <_ZN5Print7printlnEPKc> + 270: 80 91 81 00 lds r24, 0x0081 + 274: 85 60 ori r24, 0x05 ; 5 + 276: 80 93 81 00 sts 0x0081, r24 + 27a: e4 cf rjmp .-56 ; 0x244 <main+0x40> + +0000027c <_GLOBAL__I__ZN14HardwareSerial5beginEl>: + 27c: 87 e1 ldi r24, 0x17 ; 23 + 27e: 91 e0 ldi r25, 0x01 ; 1 + 280: 90 93 27 03 sts 0x0327, r25 + 284: 80 93 26 03 sts 0x0326, r24 + 288: 08 95 ret + +0000028a <_ZN14HardwareSerial5writeEh>: + 28a: 86 2f mov r24, r22 + 28c: 0e 94 1f 03 call 0x63e ; 0x63e <serialWrite> + 290: 08 95 ret + +00000292 <_ZN14HardwareSerial5flushEv>: + 292: 0e 94 57 03 call 0x6ae ; 0x6ae <serialFlush> + 296: 08 95 ret + +00000298 <_ZN14HardwareSerial4readEv>: + 298: 0e 94 38 03 call 0x670 ; 0x670 <serialRead> + 29c: 08 95 ret + +0000029e <_ZN14HardwareSerial9availableEv>: + 29e: 0e 94 27 03 call 0x64e ; 0x64e <serialAvailable> + 2a2: 08 95 ret + +000002a4 <_ZN14HardwareSerial5beginEl>: + 2a4: cb 01 movw r24, r22 + 2a6: ba 01 movw r22, r20 + 2a8: 0e 94 e6 02 call 0x5cc ; 0x5cc <beginSerial> + 2ac: 08 95 ret + +000002ae <_ZN5Print5printEh>: + 2ae: dc 01 movw r26, r24 + 2b0: ed 91 ld r30, X+ + 2b2: fc 91 ld r31, X + 2b4: 01 90 ld r0, Z+ + 2b6: f0 81 ld r31, Z + 2b8: e0 2d mov r30, r0 + 2ba: 09 95 icall + 2bc: 08 95 ret + +000002be <_ZN5Print5printEc>: + 2be: dc 01 movw r26, r24 + 2c0: ed 91 ld r30, X+ + 2c2: fc 91 ld r31, X + 2c4: 01 90 ld r0, Z+ + 2c6: f0 81 ld r31, Z + 2c8: e0 2d mov r30, r0 + 2ca: 09 95 icall + 2cc: 08 95 ret + +000002ce <_ZN5Print5printEPKc>: + 2ce: 0f 93 push r16 + 2d0: 1f 93 push r17 + 2d2: cf 93 push r28 + 2d4: df 93 push r29 + 2d6: 8c 01 movw r16, r24 + 2d8: eb 01 movw r28, r22 + 2da: 09 c0 rjmp .+18 ; 0x2ee <_ZN5Print5printEPKc+0x20> + 2dc: 21 96 adiw r28, 0x01 ; 1 + 2de: d8 01 movw r26, r16 + 2e0: ed 91 ld r30, X+ + 2e2: fc 91 ld r31, X + 2e4: 01 90 ld r0, Z+ + 2e6: f0 81 ld r31, Z + 2e8: e0 2d mov r30, r0 + 2ea: c8 01 movw r24, r16 + 2ec: 09 95 icall + 2ee: 68 81 ld r22, Y + 2f0: 66 23 and r22, r22 + 2f2: a1 f7 brne .-24 ; 0x2dc <_ZN5Print5printEPKc+0xe> + 2f4: df 91 pop r29 + 2f6: cf 91 pop r28 + 2f8: 1f 91 pop r17 + 2fa: 0f 91 pop r16 + 2fc: 08 95 ret + +000002fe <_ZN5Print7printlnEv>: + 2fe: 0f 93 push r16 + 300: 1f 93 push r17 + 302: 8c 01 movw r16, r24 + 304: dc 01 movw r26, r24 + 306: ed 91 ld r30, X+ + 308: fc 91 ld r31, X + 30a: 01 90 ld r0, Z+ + 30c: f0 81 ld r31, Z + 30e: e0 2d mov r30, r0 + 310: 6d e0 ldi r22, 0x0D ; 13 + 312: 09 95 icall + 314: d8 01 movw r26, r16 + 316: ed 91 ld r30, X+ + 318: fc 91 ld r31, X + 31a: 01 90 ld r0, Z+ + 31c: f0 81 ld r31, Z + 31e: e0 2d mov r30, r0 + 320: 6a e0 ldi r22, 0x0A ; 10 + 322: c8 01 movw r24, r16 + 324: 09 95 icall + 326: 1f 91 pop r17 + 328: 0f 91 pop r16 + 32a: 08 95 ret + +0000032c <_ZN5Print7printlnEc>: + 32c: 0f 93 push r16 + 32e: 1f 93 push r17 + 330: 8c 01 movw r16, r24 + 332: dc 01 movw r26, r24 + 334: ed 91 ld r30, X+ + 336: fc 91 ld r31, X + 338: 01 90 ld r0, Z+ + 33a: f0 81 ld r31, Z + 33c: e0 2d mov r30, r0 + 33e: 09 95 icall + 340: c8 01 movw r24, r16 + 342: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 346: 1f 91 pop r17 + 348: 0f 91 pop r16 + 34a: 08 95 ret + +0000034c <_ZN5Print7printlnEPKc>: + 34c: 0f 93 push r16 + 34e: 1f 93 push r17 + 350: 8c 01 movw r16, r24 + 352: 0e 94 67 01 call 0x2ce ; 0x2ce <_ZN5Print5printEPKc> + 356: c8 01 movw r24, r16 + 358: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 35c: 1f 91 pop r17 + 35e: 0f 91 pop r16 + 360: 08 95 ret + +00000362 <_ZN5Print7printlnEh>: + 362: 0f 93 push r16 + 364: 1f 93 push r17 + 366: 8c 01 movw r16, r24 + 368: dc 01 movw r26, r24 + 36a: ed 91 ld r30, X+ + 36c: fc 91 ld r31, X + 36e: 01 90 ld r0, Z+ + 370: f0 81 ld r31, Z + 372: e0 2d mov r30, r0 + 374: 09 95 icall + 376: c8 01 movw r24, r16 + 378: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 37c: 1f 91 pop r17 + 37e: 0f 91 pop r16 + 380: 08 95 ret + +00000382 <_ZN5Print11printNumberEmh>: + 382: 2f 92 push r2 + 384: 3f 92 push r3 + 386: 4f 92 push r4 + 388: 5f 92 push r5 + 38a: 6f 92 push r6 + 38c: 7f 92 push r7 + 38e: 8f 92 push r8 + 390: 9f 92 push r9 + 392: af 92 push r10 + 394: bf 92 push r11 + 396: cf 92 push r12 + 398: df 92 push r13 + 39a: ef 92 push r14 + 39c: ff 92 push r15 + 39e: 0f 93 push r16 + 3a0: 1f 93 push r17 + 3a2: df 93 push r29 + 3a4: cf 93 push r28 + 3a6: cd b7 in r28, 0x3d ; 61 + 3a8: de b7 in r29, 0x3e ; 62 + 3aa: a0 97 sbiw r28, 0x20 ; 32 + 3ac: 0f b6 in r0, 0x3f ; 63 + 3ae: f8 94 cli + 3b0: de bf out 0x3e, r29 ; 62 + 3b2: 0f be out 0x3f, r0 ; 63 + 3b4: cd bf out 0x3d, r28 ; 61 + 3b6: 1c 01 movw r2, r24 + 3b8: 6a 01 movw r12, r20 + 3ba: 7b 01 movw r14, r22 + 3bc: 41 15 cp r20, r1 + 3be: 51 05 cpc r21, r1 + 3c0: 61 05 cpc r22, r1 + 3c2: 71 05 cpc r23, r1 + 3c4: 49 f4 brne .+18 ; 0x3d8 <_ZN5Print11printNumberEmh+0x56> + 3c6: dc 01 movw r26, r24 + 3c8: ed 91 ld r30, X+ + 3ca: fc 91 ld r31, X + 3cc: 01 90 ld r0, Z+ + 3ce: f0 81 ld r31, Z + 3d0: e0 2d mov r30, r0 + 3d2: 60 e3 ldi r22, 0x30 ; 48 + 3d4: 09 95 icall + 3d6: 54 c0 rjmp .+168 ; 0x480 <_ZN5Print11printNumberEmh+0xfe> + 3d8: 88 24 eor r8, r8 + 3da: 99 24 eor r9, r9 + 3dc: 54 01 movw r10, r8 + 3de: 42 2e mov r4, r18 + 3e0: 55 24 eor r5, r5 + 3e2: 66 24 eor r6, r6 + 3e4: 77 24 eor r7, r7 + 3e6: 01 e0 ldi r16, 0x01 ; 1 + 3e8: 10 e0 ldi r17, 0x00 ; 0 + 3ea: 0c 0f add r16, r28 + 3ec: 1d 1f adc r17, r29 + 3ee: 08 0d add r16, r8 + 3f0: 19 1d adc r17, r9 + 3f2: c7 01 movw r24, r14 + 3f4: b6 01 movw r22, r12 + 3f6: a3 01 movw r20, r6 + 3f8: 92 01 movw r18, r4 + 3fa: 0e 94 f5 07 call 0xfea ; 0xfea <__udivmodsi4> + 3fe: f8 01 movw r30, r16 + 400: 60 83 st Z, r22 + 402: 08 94 sec + 404: 81 1c adc r8, r1 + 406: 91 1c adc r9, r1 + 408: a1 1c adc r10, r1 + 40a: b1 1c adc r11, r1 + 40c: c7 01 movw r24, r14 + 40e: b6 01 movw r22, r12 + 410: a3 01 movw r20, r6 + 412: 92 01 movw r18, r4 + 414: 0e 94 f5 07 call 0xfea ; 0xfea <__udivmodsi4> + 418: c9 01 movw r24, r18 + 41a: da 01 movw r26, r20 + 41c: 6c 01 movw r12, r24 + 41e: 7d 01 movw r14, r26 + 420: c1 14 cp r12, r1 + 422: d1 04 cpc r13, r1 + 424: e1 04 cpc r14, r1 + 426: f1 04 cpc r15, r1 + 428: f1 f6 brne .-68 ; 0x3e6 <_ZN5Print11printNumberEmh+0x64> + 42a: 81 e0 ldi r24, 0x01 ; 1 + 42c: e8 2e mov r14, r24 + 42e: f1 2c mov r15, r1 + 430: ec 0e add r14, r28 + 432: fd 1e adc r15, r29 + 434: e8 0c add r14, r8 + 436: f9 1c adc r15, r9 + 438: 3e 01 movw r6, r28 + 43a: 08 94 sec + 43c: 61 1c adc r6, r1 + 43e: 71 1c adc r7, r1 + 440: d5 01 movw r26, r10 + 442: c4 01 movw r24, r8 + 444: 01 97 sbiw r24, 0x01 ; 1 + 446: a1 09 sbc r26, r1 + 448: b1 09 sbc r27, r1 + 44a: 6c 01 movw r12, r24 + 44c: c8 18 sub r12, r8 + 44e: d9 08 sbc r13, r9 + 450: 14 c0 rjmp .+40 ; 0x47a <_ZN5Print11printNumberEmh+0xf8> + 452: f6 01 movw r30, r12 + 454: ee 0d add r30, r14 + 456: ff 1d adc r31, r15 + 458: 60 81 ld r22, Z + 45a: 6a 30 cpi r22, 0x0A ; 10 + 45c: 10 f4 brcc .+4 ; 0x462 <_ZN5Print11printNumberEmh+0xe0> + 45e: 60 5d subi r22, 0xD0 ; 208 + 460: 01 c0 rjmp .+2 ; 0x464 <_ZN5Print11printNumberEmh+0xe2> + 462: 69 5c subi r22, 0xC9 ; 201 + 464: d1 01 movw r26, r2 + 466: ed 91 ld r30, X+ + 468: fc 91 ld r31, X + 46a: 01 90 ld r0, Z+ + 46c: f0 81 ld r31, Z + 46e: e0 2d mov r30, r0 + 470: c1 01 movw r24, r2 + 472: 09 95 icall + 474: 08 94 sec + 476: e1 08 sbc r14, r1 + 478: f1 08 sbc r15, r1 + 47a: 6e 14 cp r6, r14 + 47c: 7f 04 cpc r7, r15 + 47e: 49 f7 brne .-46 ; 0x452 <_ZN5Print11printNumberEmh+0xd0> + 480: a0 96 adiw r28, 0x20 ; 32 + 482: 0f b6 in r0, 0x3f ; 63 + 484: f8 94 cli + 486: de bf out 0x3e, r29 ; 62 + 488: 0f be out 0x3f, r0 ; 63 + 48a: cd bf out 0x3d, r28 ; 61 + 48c: cf 91 pop r28 + 48e: df 91 pop r29 + 490: 1f 91 pop r17 + 492: 0f 91 pop r16 + 494: ff 90 pop r15 + 496: ef 90 pop r14 + 498: df 90 pop r13 + 49a: cf 90 pop r12 + 49c: bf 90 pop r11 + 49e: af 90 pop r10 + 4a0: 9f 90 pop r9 + 4a2: 8f 90 pop r8 + 4a4: 7f 90 pop r7 + 4a6: 6f 90 pop r6 + 4a8: 5f 90 pop r5 + 4aa: 4f 90 pop r4 + 4ac: 3f 90 pop r3 + 4ae: 2f 90 pop r2 + 4b0: 08 95 ret + +000004b2 <_ZN5Print5printEm>: + 4b2: 2a e0 ldi r18, 0x0A ; 10 + 4b4: 0e 94 c1 01 call 0x382 ; 0x382 <_ZN5Print11printNumberEmh> + 4b8: 08 95 ret + +000004ba <_ZN5Print7printlnEm>: + 4ba: 0f 93 push r16 + 4bc: 1f 93 push r17 + 4be: 8c 01 movw r16, r24 + 4c0: 0e 94 59 02 call 0x4b2 ; 0x4b2 <_ZN5Print5printEm> + 4c4: c8 01 movw r24, r16 + 4c6: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 4ca: 1f 91 pop r17 + 4cc: 0f 91 pop r16 + 4ce: 08 95 ret + +000004d0 <_ZN5Print5printEj>: + 4d0: ab 01 movw r20, r22 + 4d2: 60 e0 ldi r22, 0x00 ; 0 + 4d4: 70 e0 ldi r23, 0x00 ; 0 + 4d6: 0e 94 59 02 call 0x4b2 ; 0x4b2 <_ZN5Print5printEm> + 4da: 08 95 ret + +000004dc <_ZN5Print7printlnEj>: + 4dc: 0f 93 push r16 + 4de: 1f 93 push r17 + 4e0: 8c 01 movw r16, r24 + 4e2: ab 01 movw r20, r22 + 4e4: 60 e0 ldi r22, 0x00 ; 0 + 4e6: 70 e0 ldi r23, 0x00 ; 0 + 4e8: 0e 94 59 02 call 0x4b2 ; 0x4b2 <_ZN5Print5printEm> + 4ec: c8 01 movw r24, r16 + 4ee: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 4f2: 1f 91 pop r17 + 4f4: 0f 91 pop r16 + 4f6: 08 95 ret + +000004f8 <_ZN5Print5printEl>: + 4f8: ef 92 push r14 + 4fa: ff 92 push r15 + 4fc: 0f 93 push r16 + 4fe: 1f 93 push r17 + 500: cf 93 push r28 + 502: df 93 push r29 + 504: ec 01 movw r28, r24 + 506: 7a 01 movw r14, r20 + 508: 8b 01 movw r16, r22 + 50a: 77 ff sbrs r23, 7 + 50c: 0f c0 rjmp .+30 ; 0x52c <_ZN5Print5printEl+0x34> + 50e: e8 81 ld r30, Y + 510: f9 81 ldd r31, Y+1 ; 0x01 + 512: 01 90 ld r0, Z+ + 514: f0 81 ld r31, Z + 516: e0 2d mov r30, r0 + 518: 6d e2 ldi r22, 0x2D ; 45 + 51a: 09 95 icall + 51c: 10 95 com r17 + 51e: 00 95 com r16 + 520: f0 94 com r15 + 522: e0 94 com r14 + 524: e1 1c adc r14, r1 + 526: f1 1c adc r15, r1 + 528: 01 1d adc r16, r1 + 52a: 11 1d adc r17, r1 + 52c: 2a e0 ldi r18, 0x0A ; 10 + 52e: b8 01 movw r22, r16 + 530: a7 01 movw r20, r14 + 532: ce 01 movw r24, r28 + 534: 0e 94 c1 01 call 0x382 ; 0x382 <_ZN5Print11printNumberEmh> + 538: df 91 pop r29 + 53a: cf 91 pop r28 + 53c: 1f 91 pop r17 + 53e: 0f 91 pop r16 + 540: ff 90 pop r15 + 542: ef 90 pop r14 + 544: 08 95 ret + +00000546 <_ZN5Print7printlnEl>: + 546: 0f 93 push r16 + 548: 1f 93 push r17 + 54a: 8c 01 movw r16, r24 + 54c: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 550: c8 01 movw r24, r16 + 552: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 556: 1f 91 pop r17 + 558: 0f 91 pop r16 + 55a: 08 95 ret + +0000055c <_ZN5Print5printEi>: + 55c: ab 01 movw r20, r22 + 55e: 66 27 eor r22, r22 + 560: 57 fd sbrc r21, 7 + 562: 60 95 com r22 + 564: 76 2f mov r23, r22 + 566: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 56a: 08 95 ret + +0000056c <_ZN5Print7printlnEi>: + 56c: 0f 93 push r16 + 56e: 1f 93 push r17 + 570: 8c 01 movw r16, r24 + 572: ab 01 movw r20, r22 + 574: 66 27 eor r22, r22 + 576: 57 fd sbrc r21, 7 + 578: 60 95 com r22 + 57a: 76 2f mov r23, r22 + 57c: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 580: c8 01 movw r24, r16 + 582: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 586: 1f 91 pop r17 + 588: 0f 91 pop r16 + 58a: 08 95 ret + +0000058c <_ZN5Print5printEli>: + 58c: dc 01 movw r26, r24 + 58e: 21 15 cp r18, r1 + 590: 31 05 cpc r19, r1 + 592: 41 f4 brne .+16 ; 0x5a4 <_ZN5Print5printEli+0x18> + 594: ed 91 ld r30, X+ + 596: fc 91 ld r31, X + 598: 01 90 ld r0, Z+ + 59a: f0 81 ld r31, Z + 59c: e0 2d mov r30, r0 + 59e: 64 2f mov r22, r20 + 5a0: 09 95 icall + 5a2: 08 95 ret + 5a4: 2a 30 cpi r18, 0x0A ; 10 + 5a6: 31 05 cpc r19, r1 + 5a8: 19 f4 brne .+6 ; 0x5b0 <_ZN5Print5printEli+0x24> + 5aa: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <_ZN5Print5printEl> + 5ae: 08 95 ret + 5b0: 0e 94 c1 01 call 0x382 ; 0x382 <_ZN5Print11printNumberEmh> + 5b4: 08 95 ret + +000005b6 <_ZN5Print7printlnEli>: + 5b6: 0f 93 push r16 + 5b8: 1f 93 push r17 + 5ba: 8c 01 movw r16, r24 + 5bc: 0e 94 c6 02 call 0x58c ; 0x58c <_ZN5Print5printEli> + 5c0: c8 01 movw r24, r16 + 5c2: 0e 94 7f 01 call 0x2fe ; 0x2fe <_ZN5Print7printlnEv> + 5c6: 1f 91 pop r17 + 5c8: 0f 91 pop r16 + 5ca: 08 95 ret + +000005cc <beginSerial>: + 5cc: ef 92 push r14 + 5ce: ff 92 push r15 + 5d0: 0f 93 push r16 + 5d2: 1f 93 push r17 + 5d4: 7b 01 movw r14, r22 + 5d6: 8c 01 movw r16, r24 + 5d8: 22 e0 ldi r18, 0x02 ; 2 + 5da: 30 e0 ldi r19, 0x00 ; 0 + 5dc: 40 e0 ldi r20, 0x00 ; 0 + 5de: 50 e0 ldi r21, 0x00 ; 0 + 5e0: 0e 94 17 08 call 0x102e ; 0x102e <__divmodsi4> + 5e4: 20 5c subi r18, 0xC0 ; 192 + 5e6: 3d 4b sbci r19, 0xBD ; 189 + 5e8: 40 4f sbci r20, 0xF0 ; 240 + 5ea: 5f 4f sbci r21, 0xFF ; 255 + 5ec: ca 01 movw r24, r20 + 5ee: b9 01 movw r22, r18 + 5f0: a8 01 movw r20, r16 + 5f2: 97 01 movw r18, r14 + 5f4: 0e 94 17 08 call 0x102e ; 0x102e <__divmodsi4> + 5f8: c9 01 movw r24, r18 + 5fa: da 01 movw r26, r20 + 5fc: 01 97 sbiw r24, 0x01 ; 1 + 5fe: a1 09 sbc r26, r1 + 600: b1 09 sbc r27, r1 + 602: 29 2f mov r18, r25 + 604: 3a 2f mov r19, r26 + 606: 4b 2f mov r20, r27 + 608: 55 27 eor r21, r21 + 60a: 47 fd sbrc r20, 7 + 60c: 5a 95 dec r21 + 60e: 01 96 adiw r24, 0x01 ; 1 + 610: a1 1d adc r26, r1 + 612: b1 1d adc r27, r1 + 614: 20 93 c5 00 sts 0x00C5, r18 + 618: 81 50 subi r24, 0x01 ; 1 + 61a: 80 93 c4 00 sts 0x00C4, r24 + 61e: e1 ec ldi r30, 0xC1 ; 193 + 620: f0 e0 ldi r31, 0x00 ; 0 + 622: 80 81 ld r24, Z + 624: 80 61 ori r24, 0x10 ; 16 + 626: 80 83 st Z, r24 + 628: 80 81 ld r24, Z + 62a: 88 60 ori r24, 0x08 ; 8 + 62c: 80 83 st Z, r24 + 62e: 80 81 ld r24, Z + 630: 80 68 ori r24, 0x80 ; 128 + 632: 80 83 st Z, r24 + 634: 1f 91 pop r17 + 636: 0f 91 pop r16 + 638: ff 90 pop r15 + 63a: ef 90 pop r14 + 63c: 08 95 ret + +0000063e <serialWrite>: + 63e: 98 2f mov r25, r24 + 640: 80 91 c0 00 lds r24, 0x00C0 + 644: 85 ff sbrs r24, 5 + 646: fc cf rjmp .-8 ; 0x640 <serialWrite+0x2> + 648: 90 93 c6 00 sts 0x00C6, r25 + 64c: 08 95 ret + +0000064e <serialAvailable>: + 64e: 80 91 28 03 lds r24, 0x0328 + 652: 90 91 29 03 lds r25, 0x0329 + 656: 80 58 subi r24, 0x80 ; 128 + 658: 9f 4f sbci r25, 0xFF ; 255 + 65a: 20 91 2a 03 lds r18, 0x032A + 65e: 30 91 2b 03 lds r19, 0x032B + 662: 82 1b sub r24, r18 + 664: 93 0b sbc r25, r19 + 666: 60 e8 ldi r22, 0x80 ; 128 + 668: 70 e0 ldi r23, 0x00 ; 0 + 66a: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 66e: 08 95 ret + +00000670 <serialRead>: + 670: 40 91 2a 03 lds r20, 0x032A + 674: 50 91 2b 03 lds r21, 0x032B + 678: 80 91 28 03 lds r24, 0x0328 + 67c: 90 91 29 03 lds r25, 0x0329 + 680: 84 17 cp r24, r20 + 682: 95 07 cpc r25, r21 + 684: 19 f4 brne .+6 ; 0x68c <serialRead+0x1c> + 686: 2f ef ldi r18, 0xFF ; 255 + 688: 3f ef ldi r19, 0xFF ; 255 + 68a: 0f c0 rjmp .+30 ; 0x6aa <serialRead+0x3a> + 68c: fa 01 movw r30, r20 + 68e: e4 5d subi r30, 0xD4 ; 212 + 690: fc 4f sbci r31, 0xFC ; 252 + 692: 20 81 ld r18, Z + 694: ca 01 movw r24, r20 + 696: 01 96 adiw r24, 0x01 ; 1 + 698: 60 e8 ldi r22, 0x80 ; 128 + 69a: 70 e0 ldi r23, 0x00 ; 0 + 69c: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 6a0: 90 93 2b 03 sts 0x032B, r25 + 6a4: 80 93 2a 03 sts 0x032A, r24 + 6a8: 30 e0 ldi r19, 0x00 ; 0 + 6aa: c9 01 movw r24, r18 + 6ac: 08 95 ret + +000006ae <serialFlush>: + 6ae: 80 91 2a 03 lds r24, 0x032A + 6b2: 90 91 2b 03 lds r25, 0x032B + 6b6: 90 93 29 03 sts 0x0329, r25 + 6ba: 80 93 28 03 sts 0x0328, r24 + 6be: 08 95 ret + +000006c0 <__vector_18>: + 6c0: 1f 92 push r1 + 6c2: 0f 92 push r0 + 6c4: 0f b6 in r0, 0x3f ; 63 + 6c6: 0f 92 push r0 + 6c8: 11 24 eor r1, r1 + 6ca: 2f 93 push r18 + 6cc: 3f 93 push r19 + 6ce: 4f 93 push r20 + 6d0: 5f 93 push r21 + 6d2: 6f 93 push r22 + 6d4: 7f 93 push r23 + 6d6: 8f 93 push r24 + 6d8: 9f 93 push r25 + 6da: af 93 push r26 + 6dc: bf 93 push r27 + 6de: ef 93 push r30 + 6e0: ff 93 push r31 + 6e2: 40 91 c6 00 lds r20, 0x00C6 + 6e6: e0 91 28 03 lds r30, 0x0328 + 6ea: f0 91 29 03 lds r31, 0x0329 + 6ee: cf 01 movw r24, r30 + 6f0: 01 96 adiw r24, 0x01 ; 1 + 6f2: 60 e8 ldi r22, 0x80 ; 128 + 6f4: 70 e0 ldi r23, 0x00 ; 0 + 6f6: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__divmodhi4> + 6fa: 9c 01 movw r18, r24 + 6fc: 80 91 2a 03 lds r24, 0x032A + 700: 90 91 2b 03 lds r25, 0x032B + 704: 28 17 cp r18, r24 + 706: 39 07 cpc r19, r25 + 708: 39 f0 breq .+14 ; 0x718 <__vector_18+0x58> + 70a: e4 5d subi r30, 0xD4 ; 212 + 70c: fc 4f sbci r31, 0xFC ; 252 + 70e: 40 83 st Z, r20 + 710: 30 93 29 03 sts 0x0329, r19 + 714: 20 93 28 03 sts 0x0328, r18 + 718: ff 91 pop r31 + 71a: ef 91 pop r30 + 71c: bf 91 pop r27 + 71e: af 91 pop r26 + 720: 9f 91 pop r25 + 722: 8f 91 pop r24 + 724: 7f 91 pop r23 + 726: 6f 91 pop r22 + 728: 5f 91 pop r21 + 72a: 4f 91 pop r20 + 72c: 3f 91 pop r19 + 72e: 2f 91 pop r18 + 730: 0f 90 pop r0 + 732: 0f be out 0x3f, r0 ; 63 + 734: 0f 90 pop r0 + 736: 1f 90 pop r1 + 738: 18 95 reti + +0000073a <_fpadd_parts>: + 73a: a0 e0 ldi r26, 0x00 ; 0 + 73c: b0 e0 ldi r27, 0x00 ; 0 + 73e: e3 ea ldi r30, 0xA3 ; 163 + 740: f3 e0 ldi r31, 0x03 ; 3 + 742: 0c 94 46 08 jmp 0x108c ; 0x108c <__prologue_saves__> + 746: dc 01 movw r26, r24 + 748: 2b 01 movw r4, r22 + 74a: fa 01 movw r30, r20 + 74c: 9c 91 ld r25, X + 74e: 92 30 cpi r25, 0x02 ; 2 + 750: 08 f4 brcc .+2 ; 0x754 <_fpadd_parts+0x1a> + 752: 39 c1 rjmp .+626 ; 0x9c6 <__stack+0xc7> + 754: eb 01 movw r28, r22 + 756: 88 81 ld r24, Y + 758: 82 30 cpi r24, 0x02 ; 2 + 75a: 08 f4 brcc .+2 ; 0x75e <_fpadd_parts+0x24> + 75c: 33 c1 rjmp .+614 ; 0x9c4 <__stack+0xc5> + 75e: 94 30 cpi r25, 0x04 ; 4 + 760: 69 f4 brne .+26 ; 0x77c <_fpadd_parts+0x42> + 762: 84 30 cpi r24, 0x04 ; 4 + 764: 09 f0 breq .+2 ; 0x768 <_fpadd_parts+0x2e> + 766: 2f c1 rjmp .+606 ; 0x9c6 <__stack+0xc7> + 768: 11 96 adiw r26, 0x01 ; 1 + 76a: 9c 91 ld r25, X + 76c: 11 97 sbiw r26, 0x01 ; 1 + 76e: 89 81 ldd r24, Y+1 ; 0x01 + 770: 98 17 cp r25, r24 + 772: 09 f4 brne .+2 ; 0x776 <_fpadd_parts+0x3c> + 774: 28 c1 rjmp .+592 ; 0x9c6 <__stack+0xc7> + 776: a9 e1 ldi r26, 0x19 ; 25 + 778: b1 e0 ldi r27, 0x01 ; 1 + 77a: 25 c1 rjmp .+586 ; 0x9c6 <__stack+0xc7> + 77c: 84 30 cpi r24, 0x04 ; 4 + 77e: 09 f4 brne .+2 ; 0x782 <_fpadd_parts+0x48> + 780: 21 c1 rjmp .+578 ; 0x9c4 <__stack+0xc5> + 782: 82 30 cpi r24, 0x02 ; 2 + 784: a9 f4 brne .+42 ; 0x7b0 <_fpadd_parts+0x76> + 786: 92 30 cpi r25, 0x02 ; 2 + 788: 09 f0 breq .+2 ; 0x78c <_fpadd_parts+0x52> + 78a: 1d c1 rjmp .+570 ; 0x9c6 <__stack+0xc7> + 78c: 9a 01 movw r18, r20 + 78e: ad 01 movw r20, r26 + 790: 88 e0 ldi r24, 0x08 ; 8 + 792: ea 01 movw r28, r20 + 794: 09 90 ld r0, Y+ + 796: ae 01 movw r20, r28 + 798: e9 01 movw r28, r18 + 79a: 09 92 st Y+, r0 + 79c: 9e 01 movw r18, r28 + 79e: 81 50 subi r24, 0x01 ; 1 + 7a0: c1 f7 brne .-16 ; 0x792 <_fpadd_parts+0x58> + 7a2: e2 01 movw r28, r4 + 7a4: 89 81 ldd r24, Y+1 ; 0x01 + 7a6: 11 96 adiw r26, 0x01 ; 1 + 7a8: 9c 91 ld r25, X + 7aa: 89 23 and r24, r25 + 7ac: 81 83 std Z+1, r24 ; 0x01 + 7ae: 08 c1 rjmp .+528 ; 0x9c0 <__stack+0xc1> + 7b0: 92 30 cpi r25, 0x02 ; 2 + 7b2: 09 f4 brne .+2 ; 0x7b6 <_fpadd_parts+0x7c> + 7b4: 07 c1 rjmp .+526 ; 0x9c4 <__stack+0xc5> + 7b6: 12 96 adiw r26, 0x02 ; 2 + 7b8: 2d 90 ld r2, X+ + 7ba: 3c 90 ld r3, X + 7bc: 13 97 sbiw r26, 0x03 ; 3 + 7be: eb 01 movw r28, r22 + 7c0: 8a 81 ldd r24, Y+2 ; 0x02 + 7c2: 9b 81 ldd r25, Y+3 ; 0x03 + 7c4: 14 96 adiw r26, 0x04 ; 4 + 7c6: ad 90 ld r10, X+ + 7c8: bd 90 ld r11, X+ + 7ca: cd 90 ld r12, X+ + 7cc: dc 90 ld r13, X + 7ce: 17 97 sbiw r26, 0x07 ; 7 + 7d0: ec 80 ldd r14, Y+4 ; 0x04 + 7d2: fd 80 ldd r15, Y+5 ; 0x05 + 7d4: 0e 81 ldd r16, Y+6 ; 0x06 + 7d6: 1f 81 ldd r17, Y+7 ; 0x07 + 7d8: 91 01 movw r18, r2 + 7da: 28 1b sub r18, r24 + 7dc: 39 0b sbc r19, r25 + 7de: b9 01 movw r22, r18 + 7e0: 37 ff sbrs r19, 7 + 7e2: 04 c0 rjmp .+8 ; 0x7ec <_fpadd_parts+0xb2> + 7e4: 66 27 eor r22, r22 + 7e6: 77 27 eor r23, r23 + 7e8: 62 1b sub r22, r18 + 7ea: 73 0b sbc r23, r19 + 7ec: 60 32 cpi r22, 0x20 ; 32 + 7ee: 71 05 cpc r23, r1 + 7f0: 0c f0 brlt .+2 ; 0x7f4 <_fpadd_parts+0xba> + 7f2: 61 c0 rjmp .+194 ; 0x8b6 <_fpadd_parts+0x17c> + 7f4: 12 16 cp r1, r18 + 7f6: 13 06 cpc r1, r19 + 7f8: 6c f5 brge .+90 ; 0x854 <_fpadd_parts+0x11a> + 7fa: 37 01 movw r6, r14 + 7fc: 48 01 movw r8, r16 + 7fe: 06 2e mov r0, r22 + 800: 04 c0 rjmp .+8 ; 0x80a <_fpadd_parts+0xd0> + 802: 96 94 lsr r9 + 804: 87 94 ror r8 + 806: 77 94 ror r7 + 808: 67 94 ror r6 + 80a: 0a 94 dec r0 + 80c: d2 f7 brpl .-12 ; 0x802 <_fpadd_parts+0xc8> + 80e: 21 e0 ldi r18, 0x01 ; 1 + 810: 30 e0 ldi r19, 0x00 ; 0 + 812: 40 e0 ldi r20, 0x00 ; 0 + 814: 50 e0 ldi r21, 0x00 ; 0 + 816: 04 c0 rjmp .+8 ; 0x820 <_fpadd_parts+0xe6> + 818: 22 0f add r18, r18 + 81a: 33 1f adc r19, r19 + 81c: 44 1f adc r20, r20 + 81e: 55 1f adc r21, r21 + 820: 6a 95 dec r22 + 822: d2 f7 brpl .-12 ; 0x818 <_fpadd_parts+0xde> + 824: 21 50 subi r18, 0x01 ; 1 + 826: 30 40 sbci r19, 0x00 ; 0 + 828: 40 40 sbci r20, 0x00 ; 0 + 82a: 50 40 sbci r21, 0x00 ; 0 + 82c: 2e 21 and r18, r14 + 82e: 3f 21 and r19, r15 + 830: 40 23 and r20, r16 + 832: 51 23 and r21, r17 + 834: 21 15 cp r18, r1 + 836: 31 05 cpc r19, r1 + 838: 41 05 cpc r20, r1 + 83a: 51 05 cpc r21, r1 + 83c: 21 f0 breq .+8 ; 0x846 <_fpadd_parts+0x10c> + 83e: 21 e0 ldi r18, 0x01 ; 1 + 840: 30 e0 ldi r19, 0x00 ; 0 + 842: 40 e0 ldi r20, 0x00 ; 0 + 844: 50 e0 ldi r21, 0x00 ; 0 + 846: 79 01 movw r14, r18 + 848: 8a 01 movw r16, r20 + 84a: e6 28 or r14, r6 + 84c: f7 28 or r15, r7 + 84e: 08 29 or r16, r8 + 850: 19 29 or r17, r9 + 852: 3c c0 rjmp .+120 ; 0x8cc <_fpadd_parts+0x192> + 854: 23 2b or r18, r19 + 856: d1 f1 breq .+116 ; 0x8cc <_fpadd_parts+0x192> + 858: 26 0e add r2, r22 + 85a: 37 1e adc r3, r23 + 85c: 35 01 movw r6, r10 + 85e: 46 01 movw r8, r12 + 860: 06 2e mov r0, r22 + 862: 04 c0 rjmp .+8 ; 0x86c <_fpadd_parts+0x132> + 864: 96 94 lsr r9 + 866: 87 94 ror r8 + 868: 77 94 ror r7 + 86a: 67 94 ror r6 + 86c: 0a 94 dec r0 + 86e: d2 f7 brpl .-12 ; 0x864 <_fpadd_parts+0x12a> + 870: 21 e0 ldi r18, 0x01 ; 1 + 872: 30 e0 ldi r19, 0x00 ; 0 + 874: 40 e0 ldi r20, 0x00 ; 0 + 876: 50 e0 ldi r21, 0x00 ; 0 + 878: 04 c0 rjmp .+8 ; 0x882 <_fpadd_parts+0x148> + 87a: 22 0f add r18, r18 + 87c: 33 1f adc r19, r19 + 87e: 44 1f adc r20, r20 + 880: 55 1f adc r21, r21 + 882: 6a 95 dec r22 + 884: d2 f7 brpl .-12 ; 0x87a <_fpadd_parts+0x140> + 886: 21 50 subi r18, 0x01 ; 1 + 888: 30 40 sbci r19, 0x00 ; 0 + 88a: 40 40 sbci r20, 0x00 ; 0 + 88c: 50 40 sbci r21, 0x00 ; 0 + 88e: 2a 21 and r18, r10 + 890: 3b 21 and r19, r11 + 892: 4c 21 and r20, r12 + 894: 5d 21 and r21, r13 + 896: 21 15 cp r18, r1 + 898: 31 05 cpc r19, r1 + 89a: 41 05 cpc r20, r1 + 89c: 51 05 cpc r21, r1 + 89e: 21 f0 breq .+8 ; 0x8a8 <_fpadd_parts+0x16e> + 8a0: 21 e0 ldi r18, 0x01 ; 1 + 8a2: 30 e0 ldi r19, 0x00 ; 0 + 8a4: 40 e0 ldi r20, 0x00 ; 0 + 8a6: 50 e0 ldi r21, 0x00 ; 0 + 8a8: 59 01 movw r10, r18 + 8aa: 6a 01 movw r12, r20 + 8ac: a6 28 or r10, r6 + 8ae: b7 28 or r11, r7 + 8b0: c8 28 or r12, r8 + 8b2: d9 28 or r13, r9 + 8b4: 0b c0 rjmp .+22 ; 0x8cc <_fpadd_parts+0x192> + 8b6: 82 15 cp r24, r2 + 8b8: 93 05 cpc r25, r3 + 8ba: 2c f0 brlt .+10 ; 0x8c6 <_fpadd_parts+0x18c> + 8bc: 1c 01 movw r2, r24 + 8be: aa 24 eor r10, r10 + 8c0: bb 24 eor r11, r11 + 8c2: 65 01 movw r12, r10 + 8c4: 03 c0 rjmp .+6 ; 0x8cc <_fpadd_parts+0x192> + 8c6: ee 24 eor r14, r14 + 8c8: ff 24 eor r15, r15 + 8ca: 87 01 movw r16, r14 + 8cc: 11 96 adiw r26, 0x01 ; 1 + 8ce: 9c 91 ld r25, X + 8d0: d2 01 movw r26, r4 + 8d2: 11 96 adiw r26, 0x01 ; 1 + 8d4: 8c 91 ld r24, X + 8d6: 98 17 cp r25, r24 + 8d8: 09 f4 brne .+2 ; 0x8dc <_fpadd_parts+0x1a2> + 8da: 45 c0 rjmp .+138 ; 0x966 <__stack+0x67> + 8dc: 99 23 and r25, r25 + 8de: 39 f0 breq .+14 ; 0x8ee <_fpadd_parts+0x1b4> + 8e0: a8 01 movw r20, r16 + 8e2: 97 01 movw r18, r14 + 8e4: 2a 19 sub r18, r10 + 8e6: 3b 09 sbc r19, r11 + 8e8: 4c 09 sbc r20, r12 + 8ea: 5d 09 sbc r21, r13 + 8ec: 06 c0 rjmp .+12 ; 0x8fa <_fpadd_parts+0x1c0> + 8ee: a6 01 movw r20, r12 + 8f0: 95 01 movw r18, r10 + 8f2: 2e 19 sub r18, r14 + 8f4: 3f 09 sbc r19, r15 + 8f6: 40 0b sbc r20, r16 + 8f8: 51 0b sbc r21, r17 + 8fa: 57 fd sbrc r21, 7 + 8fc: 08 c0 rjmp .+16 ; 0x90e <__stack+0xf> + 8fe: 11 82 std Z+1, r1 ; 0x01 + 900: 33 82 std Z+3, r3 ; 0x03 + 902: 22 82 std Z+2, r2 ; 0x02 + 904: 24 83 std Z+4, r18 ; 0x04 + 906: 35 83 std Z+5, r19 ; 0x05 + 908: 46 83 std Z+6, r20 ; 0x06 + 90a: 57 83 std Z+7, r21 ; 0x07 + 90c: 1d c0 rjmp .+58 ; 0x948 <__stack+0x49> + 90e: 81 e0 ldi r24, 0x01 ; 1 + 910: 81 83 std Z+1, r24 ; 0x01 + 912: 33 82 std Z+3, r3 ; 0x03 + 914: 22 82 std Z+2, r2 ; 0x02 + 916: 88 27 eor r24, r24 + 918: 99 27 eor r25, r25 + 91a: dc 01 movw r26, r24 + 91c: 82 1b sub r24, r18 + 91e: 93 0b sbc r25, r19 + 920: a4 0b sbc r26, r20 + 922: b5 0b sbc r27, r21 + 924: 84 83 std Z+4, r24 ; 0x04 + 926: 95 83 std Z+5, r25 ; 0x05 + 928: a6 83 std Z+6, r26 ; 0x06 + 92a: b7 83 std Z+7, r27 ; 0x07 + 92c: 0d c0 rjmp .+26 ; 0x948 <__stack+0x49> + 92e: 22 0f add r18, r18 + 930: 33 1f adc r19, r19 + 932: 44 1f adc r20, r20 + 934: 55 1f adc r21, r21 + 936: 24 83 std Z+4, r18 ; 0x04 + 938: 35 83 std Z+5, r19 ; 0x05 + 93a: 46 83 std Z+6, r20 ; 0x06 + 93c: 57 83 std Z+7, r21 ; 0x07 + 93e: 82 81 ldd r24, Z+2 ; 0x02 + 940: 93 81 ldd r25, Z+3 ; 0x03 + 942: 01 97 sbiw r24, 0x01 ; 1 + 944: 93 83 std Z+3, r25 ; 0x03 + 946: 82 83 std Z+2, r24 ; 0x02 + 948: 24 81 ldd r18, Z+4 ; 0x04 + 94a: 35 81 ldd r19, Z+5 ; 0x05 + 94c: 46 81 ldd r20, Z+6 ; 0x06 + 94e: 57 81 ldd r21, Z+7 ; 0x07 + 950: da 01 movw r26, r20 + 952: c9 01 movw r24, r18 + 954: 01 97 sbiw r24, 0x01 ; 1 + 956: a1 09 sbc r26, r1 + 958: b1 09 sbc r27, r1 + 95a: 8f 5f subi r24, 0xFF ; 255 + 95c: 9f 4f sbci r25, 0xFF ; 255 + 95e: af 4f sbci r26, 0xFF ; 255 + 960: bf 43 sbci r27, 0x3F ; 63 + 962: 28 f3 brcs .-54 ; 0x92e <__stack+0x2f> + 964: 0b c0 rjmp .+22 ; 0x97c <__stack+0x7d> + 966: 91 83 std Z+1, r25 ; 0x01 + 968: 33 82 std Z+3, r3 ; 0x03 + 96a: 22 82 std Z+2, r2 ; 0x02 + 96c: ea 0c add r14, r10 + 96e: fb 1c adc r15, r11 + 970: 0c 1d adc r16, r12 + 972: 1d 1d adc r17, r13 + 974: e4 82 std Z+4, r14 ; 0x04 + 976: f5 82 std Z+5, r15 ; 0x05 + 978: 06 83 std Z+6, r16 ; 0x06 + 97a: 17 83 std Z+7, r17 ; 0x07 + 97c: 83 e0 ldi r24, 0x03 ; 3 + 97e: 80 83 st Z, r24 + 980: 24 81 ldd r18, Z+4 ; 0x04 + 982: 35 81 ldd r19, Z+5 ; 0x05 + 984: 46 81 ldd r20, Z+6 ; 0x06 + 986: 57 81 ldd r21, Z+7 ; 0x07 + 988: 57 ff sbrs r21, 7 + 98a: 1a c0 rjmp .+52 ; 0x9c0 <__stack+0xc1> + 98c: c9 01 movw r24, r18 + 98e: aa 27 eor r26, r26 + 990: 97 fd sbrc r25, 7 + 992: a0 95 com r26 + 994: ba 2f mov r27, r26 + 996: 81 70 andi r24, 0x01 ; 1 + 998: 90 70 andi r25, 0x00 ; 0 + 99a: a0 70 andi r26, 0x00 ; 0 + 99c: b0 70 andi r27, 0x00 ; 0 + 99e: 56 95 lsr r21 + 9a0: 47 95 ror r20 + 9a2: 37 95 ror r19 + 9a4: 27 95 ror r18 + 9a6: 82 2b or r24, r18 + 9a8: 93 2b or r25, r19 + 9aa: a4 2b or r26, r20 + 9ac: b5 2b or r27, r21 + 9ae: 84 83 std Z+4, r24 ; 0x04 + 9b0: 95 83 std Z+5, r25 ; 0x05 + 9b2: a6 83 std Z+6, r26 ; 0x06 + 9b4: b7 83 std Z+7, r27 ; 0x07 + 9b6: 82 81 ldd r24, Z+2 ; 0x02 + 9b8: 93 81 ldd r25, Z+3 ; 0x03 + 9ba: 01 96 adiw r24, 0x01 ; 1 + 9bc: 93 83 std Z+3, r25 ; 0x03 + 9be: 82 83 std Z+2, r24 ; 0x02 + 9c0: df 01 movw r26, r30 + 9c2: 01 c0 rjmp .+2 ; 0x9c6 <__stack+0xc7> + 9c4: d2 01 movw r26, r4 + 9c6: cd 01 movw r24, r26 + 9c8: cd b7 in r28, 0x3d ; 61 + 9ca: de b7 in r29, 0x3e ; 62 + 9cc: e2 e1 ldi r30, 0x12 ; 18 + 9ce: 0c 94 62 08 jmp 0x10c4 ; 0x10c4 <__epilogue_restores__> + +000009d2 <__subsf3>: + 9d2: a0 e2 ldi r26, 0x20 ; 32 + 9d4: b0 e0 ldi r27, 0x00 ; 0 + 9d6: ef ee ldi r30, 0xEF ; 239 + 9d8: f4 e0 ldi r31, 0x04 ; 4 + 9da: 0c 94 52 08 jmp 0x10a4 ; 0x10a4 <__prologue_saves__+0x18> + 9de: 69 83 std Y+1, r22 ; 0x01 + 9e0: 7a 83 std Y+2, r23 ; 0x02 + 9e2: 8b 83 std Y+3, r24 ; 0x03 + 9e4: 9c 83 std Y+4, r25 ; 0x04 + 9e6: 2d 83 std Y+5, r18 ; 0x05 + 9e8: 3e 83 std Y+6, r19 ; 0x06 + 9ea: 4f 83 std Y+7, r20 ; 0x07 + 9ec: 58 87 std Y+8, r21 ; 0x08 + 9ee: e9 e0 ldi r30, 0x09 ; 9 + 9f0: ee 2e mov r14, r30 + 9f2: f1 2c mov r15, r1 + 9f4: ec 0e add r14, r28 + 9f6: fd 1e adc r15, r29 + 9f8: ce 01 movw r24, r28 + 9fa: 01 96 adiw r24, 0x01 ; 1 + 9fc: b7 01 movw r22, r14 + 9fe: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a02: 8e 01 movw r16, r28 + a04: 0f 5e subi r16, 0xEF ; 239 + a06: 1f 4f sbci r17, 0xFF ; 255 + a08: ce 01 movw r24, r28 + a0a: 05 96 adiw r24, 0x05 ; 5 + a0c: b8 01 movw r22, r16 + a0e: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a12: 8a 89 ldd r24, Y+18 ; 0x12 + a14: 91 e0 ldi r25, 0x01 ; 1 + a16: 89 27 eor r24, r25 + a18: 8a 8b std Y+18, r24 ; 0x12 + a1a: c7 01 movw r24, r14 + a1c: b8 01 movw r22, r16 + a1e: ae 01 movw r20, r28 + a20: 47 5e subi r20, 0xE7 ; 231 + a22: 5f 4f sbci r21, 0xFF ; 255 + a24: 0e 94 9d 03 call 0x73a ; 0x73a <_fpadd_parts> + a28: 0e 94 95 06 call 0xd2a ; 0xd2a <__pack_f> + a2c: a0 96 adiw r28, 0x20 ; 32 + a2e: e6 e0 ldi r30, 0x06 ; 6 + a30: 0c 94 6e 08 jmp 0x10dc ; 0x10dc <__epilogue_restores__+0x18> + +00000a34 <__addsf3>: + a34: a0 e2 ldi r26, 0x20 ; 32 + a36: b0 e0 ldi r27, 0x00 ; 0 + a38: e0 e2 ldi r30, 0x20 ; 32 + a3a: f5 e0 ldi r31, 0x05 ; 5 + a3c: 0c 94 52 08 jmp 0x10a4 ; 0x10a4 <__prologue_saves__+0x18> + a40: 69 83 std Y+1, r22 ; 0x01 + a42: 7a 83 std Y+2, r23 ; 0x02 + a44: 8b 83 std Y+3, r24 ; 0x03 + a46: 9c 83 std Y+4, r25 ; 0x04 + a48: 2d 83 std Y+5, r18 ; 0x05 + a4a: 3e 83 std Y+6, r19 ; 0x06 + a4c: 4f 83 std Y+7, r20 ; 0x07 + a4e: 58 87 std Y+8, r21 ; 0x08 + a50: f9 e0 ldi r31, 0x09 ; 9 + a52: ef 2e mov r14, r31 + a54: f1 2c mov r15, r1 + a56: ec 0e add r14, r28 + a58: fd 1e adc r15, r29 + a5a: ce 01 movw r24, r28 + a5c: 01 96 adiw r24, 0x01 ; 1 + a5e: b7 01 movw r22, r14 + a60: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a64: 8e 01 movw r16, r28 + a66: 0f 5e subi r16, 0xEF ; 239 + a68: 1f 4f sbci r17, 0xFF ; 255 + a6a: ce 01 movw r24, r28 + a6c: 05 96 adiw r24, 0x05 ; 5 + a6e: b8 01 movw r22, r16 + a70: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + a74: c7 01 movw r24, r14 + a76: b8 01 movw r22, r16 + a78: ae 01 movw r20, r28 + a7a: 47 5e subi r20, 0xE7 ; 231 + a7c: 5f 4f sbci r21, 0xFF ; 255 + a7e: 0e 94 9d 03 call 0x73a ; 0x73a <_fpadd_parts> + a82: 0e 94 95 06 call 0xd2a ; 0xd2a <__pack_f> + a86: a0 96 adiw r28, 0x20 ; 32 + a88: e6 e0 ldi r30, 0x06 ; 6 + a8a: 0c 94 6e 08 jmp 0x10dc ; 0x10dc <__epilogue_restores__+0x18> + +00000a8e <__mulsf3>: + a8e: a0 e2 ldi r26, 0x20 ; 32 + a90: b0 e0 ldi r27, 0x00 ; 0 + a92: ed e4 ldi r30, 0x4D ; 77 + a94: f5 e0 ldi r31, 0x05 ; 5 + a96: 0c 94 46 08 jmp 0x108c ; 0x108c <__prologue_saves__> + a9a: 69 83 std Y+1, r22 ; 0x01 + a9c: 7a 83 std Y+2, r23 ; 0x02 + a9e: 8b 83 std Y+3, r24 ; 0x03 + aa0: 9c 83 std Y+4, r25 ; 0x04 + aa2: 2d 83 std Y+5, r18 ; 0x05 + aa4: 3e 83 std Y+6, r19 ; 0x06 + aa6: 4f 83 std Y+7, r20 ; 0x07 + aa8: 58 87 std Y+8, r21 ; 0x08 + aaa: ce 01 movw r24, r28 + aac: 01 96 adiw r24, 0x01 ; 1 + aae: be 01 movw r22, r28 + ab0: 67 5f subi r22, 0xF7 ; 247 + ab2: 7f 4f sbci r23, 0xFF ; 255 + ab4: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + ab8: ce 01 movw r24, r28 + aba: 05 96 adiw r24, 0x05 ; 5 + abc: be 01 movw r22, r28 + abe: 6f 5e subi r22, 0xEF ; 239 + ac0: 7f 4f sbci r23, 0xFF ; 255 + ac2: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + ac6: 99 85 ldd r25, Y+9 ; 0x09 + ac8: 92 30 cpi r25, 0x02 ; 2 + aca: 88 f0 brcs .+34 ; 0xaee <__mulsf3+0x60> + acc: 89 89 ldd r24, Y+17 ; 0x11 + ace: 82 30 cpi r24, 0x02 ; 2 + ad0: c8 f0 brcs .+50 ; 0xb04 <__mulsf3+0x76> + ad2: 94 30 cpi r25, 0x04 ; 4 + ad4: 19 f4 brne .+6 ; 0xadc <__mulsf3+0x4e> + ad6: 82 30 cpi r24, 0x02 ; 2 + ad8: 51 f4 brne .+20 ; 0xaee <__mulsf3+0x60> + ada: 04 c0 rjmp .+8 ; 0xae4 <__mulsf3+0x56> + adc: 84 30 cpi r24, 0x04 ; 4 + ade: 29 f4 brne .+10 ; 0xaea <__mulsf3+0x5c> + ae0: 92 30 cpi r25, 0x02 ; 2 + ae2: 81 f4 brne .+32 ; 0xb04 <__mulsf3+0x76> + ae4: 89 e1 ldi r24, 0x19 ; 25 + ae6: 91 e0 ldi r25, 0x01 ; 1 + ae8: c6 c0 rjmp .+396 ; 0xc76 <__mulsf3+0x1e8> + aea: 92 30 cpi r25, 0x02 ; 2 + aec: 49 f4 brne .+18 ; 0xb00 <__mulsf3+0x72> + aee: 20 e0 ldi r18, 0x00 ; 0 + af0: 9a 85 ldd r25, Y+10 ; 0x0a + af2: 8a 89 ldd r24, Y+18 ; 0x12 + af4: 98 13 cpse r25, r24 + af6: 21 e0 ldi r18, 0x01 ; 1 + af8: 2a 87 std Y+10, r18 ; 0x0a + afa: ce 01 movw r24, r28 + afc: 09 96 adiw r24, 0x09 ; 9 + afe: bb c0 rjmp .+374 ; 0xc76 <__mulsf3+0x1e8> + b00: 82 30 cpi r24, 0x02 ; 2 + b02: 49 f4 brne .+18 ; 0xb16 <__mulsf3+0x88> + b04: 20 e0 ldi r18, 0x00 ; 0 + b06: 9a 85 ldd r25, Y+10 ; 0x0a + b08: 8a 89 ldd r24, Y+18 ; 0x12 + b0a: 98 13 cpse r25, r24 + b0c: 21 e0 ldi r18, 0x01 ; 1 + b0e: 2a 8b std Y+18, r18 ; 0x12 + b10: ce 01 movw r24, r28 + b12: 41 96 adiw r24, 0x11 ; 17 + b14: b0 c0 rjmp .+352 ; 0xc76 <__mulsf3+0x1e8> + b16: 2d 84 ldd r2, Y+13 ; 0x0d + b18: 3e 84 ldd r3, Y+14 ; 0x0e + b1a: 4f 84 ldd r4, Y+15 ; 0x0f + b1c: 58 88 ldd r5, Y+16 ; 0x10 + b1e: 6d 88 ldd r6, Y+21 ; 0x15 + b20: 7e 88 ldd r7, Y+22 ; 0x16 + b22: 8f 88 ldd r8, Y+23 ; 0x17 + b24: 98 8c ldd r9, Y+24 ; 0x18 + b26: ee 24 eor r14, r14 + b28: ff 24 eor r15, r15 + b2a: 87 01 movw r16, r14 + b2c: aa 24 eor r10, r10 + b2e: bb 24 eor r11, r11 + b30: 65 01 movw r12, r10 + b32: 40 e0 ldi r20, 0x00 ; 0 + b34: 50 e0 ldi r21, 0x00 ; 0 + b36: 60 e0 ldi r22, 0x00 ; 0 + b38: 70 e0 ldi r23, 0x00 ; 0 + b3a: e0 e0 ldi r30, 0x00 ; 0 + b3c: f0 e0 ldi r31, 0x00 ; 0 + b3e: c1 01 movw r24, r2 + b40: 81 70 andi r24, 0x01 ; 1 + b42: 90 70 andi r25, 0x00 ; 0 + b44: 89 2b or r24, r25 + b46: e9 f0 breq .+58 ; 0xb82 <__mulsf3+0xf4> + b48: e6 0c add r14, r6 + b4a: f7 1c adc r15, r7 + b4c: 08 1d adc r16, r8 + b4e: 19 1d adc r17, r9 + b50: 9a 01 movw r18, r20 + b52: ab 01 movw r20, r22 + b54: 2a 0d add r18, r10 + b56: 3b 1d adc r19, r11 + b58: 4c 1d adc r20, r12 + b5a: 5d 1d adc r21, r13 + b5c: 80 e0 ldi r24, 0x00 ; 0 + b5e: 90 e0 ldi r25, 0x00 ; 0 + b60: a0 e0 ldi r26, 0x00 ; 0 + b62: b0 e0 ldi r27, 0x00 ; 0 + b64: e6 14 cp r14, r6 + b66: f7 04 cpc r15, r7 + b68: 08 05 cpc r16, r8 + b6a: 19 05 cpc r17, r9 + b6c: 20 f4 brcc .+8 ; 0xb76 <__mulsf3+0xe8> + b6e: 81 e0 ldi r24, 0x01 ; 1 + b70: 90 e0 ldi r25, 0x00 ; 0 + b72: a0 e0 ldi r26, 0x00 ; 0 + b74: b0 e0 ldi r27, 0x00 ; 0 + b76: ba 01 movw r22, r20 + b78: a9 01 movw r20, r18 + b7a: 48 0f add r20, r24 + b7c: 59 1f adc r21, r25 + b7e: 6a 1f adc r22, r26 + b80: 7b 1f adc r23, r27 + b82: aa 0c add r10, r10 + b84: bb 1c adc r11, r11 + b86: cc 1c adc r12, r12 + b88: dd 1c adc r13, r13 + b8a: 97 fe sbrs r9, 7 + b8c: 08 c0 rjmp .+16 ; 0xb9e <__mulsf3+0x110> + b8e: 81 e0 ldi r24, 0x01 ; 1 + b90: 90 e0 ldi r25, 0x00 ; 0 + b92: a0 e0 ldi r26, 0x00 ; 0 + b94: b0 e0 ldi r27, 0x00 ; 0 + b96: a8 2a or r10, r24 + b98: b9 2a or r11, r25 + b9a: ca 2a or r12, r26 + b9c: db 2a or r13, r27 + b9e: 31 96 adiw r30, 0x01 ; 1 + ba0: e0 32 cpi r30, 0x20 ; 32 + ba2: f1 05 cpc r31, r1 + ba4: 49 f0 breq .+18 ; 0xbb8 <__mulsf3+0x12a> + ba6: 66 0c add r6, r6 + ba8: 77 1c adc r7, r7 + baa: 88 1c adc r8, r8 + bac: 99 1c adc r9, r9 + bae: 56 94 lsr r5 + bb0: 47 94 ror r4 + bb2: 37 94 ror r3 + bb4: 27 94 ror r2 + bb6: c3 cf rjmp .-122 ; 0xb3e <__mulsf3+0xb0> + bb8: fa 85 ldd r31, Y+10 ; 0x0a + bba: ea 89 ldd r30, Y+18 ; 0x12 + bbc: 2b 89 ldd r18, Y+19 ; 0x13 + bbe: 3c 89 ldd r19, Y+20 ; 0x14 + bc0: 8b 85 ldd r24, Y+11 ; 0x0b + bc2: 9c 85 ldd r25, Y+12 ; 0x0c + bc4: 28 0f add r18, r24 + bc6: 39 1f adc r19, r25 + bc8: 2e 5f subi r18, 0xFE ; 254 + bca: 3f 4f sbci r19, 0xFF ; 255 + bcc: 17 c0 rjmp .+46 ; 0xbfc <__mulsf3+0x16e> + bce: ca 01 movw r24, r20 + bd0: 81 70 andi r24, 0x01 ; 1 + bd2: 90 70 andi r25, 0x00 ; 0 + bd4: 89 2b or r24, r25 + bd6: 61 f0 breq .+24 ; 0xbf0 <__mulsf3+0x162> + bd8: 16 95 lsr r17 + bda: 07 95 ror r16 + bdc: f7 94 ror r15 + bde: e7 94 ror r14 + be0: 80 e0 ldi r24, 0x00 ; 0 + be2: 90 e0 ldi r25, 0x00 ; 0 + be4: a0 e0 ldi r26, 0x00 ; 0 + be6: b0 e8 ldi r27, 0x80 ; 128 + be8: e8 2a or r14, r24 + bea: f9 2a or r15, r25 + bec: 0a 2b or r16, r26 + bee: 1b 2b or r17, r27 + bf0: 76 95 lsr r23 + bf2: 67 95 ror r22 + bf4: 57 95 ror r21 + bf6: 47 95 ror r20 + bf8: 2f 5f subi r18, 0xFF ; 255 + bfa: 3f 4f sbci r19, 0xFF ; 255 + bfc: 77 fd sbrc r23, 7 + bfe: e7 cf rjmp .-50 ; 0xbce <__mulsf3+0x140> + c00: 0c c0 rjmp .+24 ; 0xc1a <__mulsf3+0x18c> + c02: 44 0f add r20, r20 + c04: 55 1f adc r21, r21 + c06: 66 1f adc r22, r22 + c08: 77 1f adc r23, r23 + c0a: 17 fd sbrc r17, 7 + c0c: 41 60 ori r20, 0x01 ; 1 + c0e: ee 0c add r14, r14 + c10: ff 1c adc r15, r15 + c12: 00 1f adc r16, r16 + c14: 11 1f adc r17, r17 + c16: 21 50 subi r18, 0x01 ; 1 + c18: 30 40 sbci r19, 0x00 ; 0 + c1a: 40 30 cpi r20, 0x00 ; 0 + c1c: 90 e0 ldi r25, 0x00 ; 0 + c1e: 59 07 cpc r21, r25 + c20: 90 e0 ldi r25, 0x00 ; 0 + c22: 69 07 cpc r22, r25 + c24: 90 e4 ldi r25, 0x40 ; 64 + c26: 79 07 cpc r23, r25 + c28: 60 f3 brcs .-40 ; 0xc02 <__mulsf3+0x174> + c2a: 2b 8f std Y+27, r18 ; 0x1b + c2c: 3c 8f std Y+28, r19 ; 0x1c + c2e: db 01 movw r26, r22 + c30: ca 01 movw r24, r20 + c32: 8f 77 andi r24, 0x7F ; 127 + c34: 90 70 andi r25, 0x00 ; 0 + c36: a0 70 andi r26, 0x00 ; 0 + c38: b0 70 andi r27, 0x00 ; 0 + c3a: 80 34 cpi r24, 0x40 ; 64 + c3c: 91 05 cpc r25, r1 + c3e: a1 05 cpc r26, r1 + c40: b1 05 cpc r27, r1 + c42: 61 f4 brne .+24 ; 0xc5c <__mulsf3+0x1ce> + c44: 47 fd sbrc r20, 7 + c46: 0a c0 rjmp .+20 ; 0xc5c <__mulsf3+0x1ce> + c48: e1 14 cp r14, r1 + c4a: f1 04 cpc r15, r1 + c4c: 01 05 cpc r16, r1 + c4e: 11 05 cpc r17, r1 + c50: 29 f0 breq .+10 ; 0xc5c <__mulsf3+0x1ce> + c52: 40 5c subi r20, 0xC0 ; 192 + c54: 5f 4f sbci r21, 0xFF ; 255 + c56: 6f 4f sbci r22, 0xFF ; 255 + c58: 7f 4f sbci r23, 0xFF ; 255 + c5a: 40 78 andi r20, 0x80 ; 128 + c5c: 1a 8e std Y+26, r1 ; 0x1a + c5e: fe 17 cp r31, r30 + c60: 11 f0 breq .+4 ; 0xc66 <__mulsf3+0x1d8> + c62: 81 e0 ldi r24, 0x01 ; 1 + c64: 8a 8f std Y+26, r24 ; 0x1a + c66: 4d 8f std Y+29, r20 ; 0x1d + c68: 5e 8f std Y+30, r21 ; 0x1e + c6a: 6f 8f std Y+31, r22 ; 0x1f + c6c: 78 a3 std Y+32, r23 ; 0x20 + c6e: 83 e0 ldi r24, 0x03 ; 3 + c70: 89 8f std Y+25, r24 ; 0x19 + c72: ce 01 movw r24, r28 + c74: 49 96 adiw r24, 0x19 ; 25 + c76: 0e 94 95 06 call 0xd2a ; 0xd2a <__pack_f> + c7a: a0 96 adiw r28, 0x20 ; 32 + c7c: e2 e1 ldi r30, 0x12 ; 18 + c7e: 0c 94 62 08 jmp 0x10c4 ; 0x10c4 <__epilogue_restores__> + +00000c82 <__fixsfsi>: + c82: ac e0 ldi r26, 0x0C ; 12 + c84: b0 e0 ldi r27, 0x00 ; 0 + c86: e7 e4 ldi r30, 0x47 ; 71 + c88: f6 e0 ldi r31, 0x06 ; 6 + c8a: 0c 94 56 08 jmp 0x10ac ; 0x10ac <__prologue_saves__+0x20> + c8e: 69 83 std Y+1, r22 ; 0x01 + c90: 7a 83 std Y+2, r23 ; 0x02 + c92: 8b 83 std Y+3, r24 ; 0x03 + c94: 9c 83 std Y+4, r25 ; 0x04 + c96: ce 01 movw r24, r28 + c98: 01 96 adiw r24, 0x01 ; 1 + c9a: be 01 movw r22, r28 + c9c: 6b 5f subi r22, 0xFB ; 251 + c9e: 7f 4f sbci r23, 0xFF ; 255 + ca0: 0e 94 6a 07 call 0xed4 ; 0xed4 <__unpack_f> + ca4: 8d 81 ldd r24, Y+5 ; 0x05 + ca6: 82 30 cpi r24, 0x02 ; 2 + ca8: 61 f1 breq .+88 ; 0xd02 <__fixsfsi+0x80> + caa: 82 30 cpi r24, 0x02 ; 2 + cac: 50 f1 brcs .+84 ; 0xd02 <__fixsfsi+0x80> + cae: 84 30 cpi r24, 0x04 ; 4 + cb0: 21 f4 brne .+8 ; 0xcba <__fixsfsi+0x38> + cb2: 8e 81 ldd r24, Y+6 ; 0x06 + cb4: 88 23 and r24, r24 + cb6: 51 f1 breq .+84 ; 0xd0c <__fixsfsi+0x8a> + cb8: 2e c0 rjmp .+92 ; 0xd16 <__fixsfsi+0x94> + cba: 2f 81 ldd r18, Y+7 ; 0x07 + cbc: 38 85 ldd r19, Y+8 ; 0x08 + cbe: 37 fd sbrc r19, 7 + cc0: 20 c0 rjmp .+64 ; 0xd02 <__fixsfsi+0x80> + cc2: 6e 81 ldd r22, Y+6 ; 0x06 + cc4: 2f 31 cpi r18, 0x1F ; 31 + cc6: 31 05 cpc r19, r1 + cc8: 1c f0 brlt .+6 ; 0xcd0 <__fixsfsi+0x4e> + cca: 66 23 and r22, r22 + ccc: f9 f0 breq .+62 ; 0xd0c <__fixsfsi+0x8a> + cce: 23 c0 rjmp .+70 ; 0xd16 <__fixsfsi+0x94> + cd0: 8e e1 ldi r24, 0x1E ; 30 + cd2: 90 e0 ldi r25, 0x00 ; 0 + cd4: 82 1b sub r24, r18 + cd6: 93 0b sbc r25, r19 + cd8: 29 85 ldd r18, Y+9 ; 0x09 + cda: 3a 85 ldd r19, Y+10 ; 0x0a + cdc: 4b 85 ldd r20, Y+11 ; 0x0b + cde: 5c 85 ldd r21, Y+12 ; 0x0c + ce0: 04 c0 rjmp .+8 ; 0xcea <__fixsfsi+0x68> + ce2: 56 95 lsr r21 + ce4: 47 95 ror r20 + ce6: 37 95 ror r19 + ce8: 27 95 ror r18 + cea: 8a 95 dec r24 + cec: d2 f7 brpl .-12 ; 0xce2 <__fixsfsi+0x60> + cee: 66 23 and r22, r22 + cf0: b1 f0 breq .+44 ; 0xd1e <__fixsfsi+0x9c> + cf2: 50 95 com r21 + cf4: 40 95 com r20 + cf6: 30 95 com r19 + cf8: 21 95 neg r18 + cfa: 3f 4f sbci r19, 0xFF ; 255 + cfc: 4f 4f sbci r20, 0xFF ; 255 + cfe: 5f 4f sbci r21, 0xFF ; 255 + d00: 0e c0 rjmp .+28 ; 0xd1e <__fixsfsi+0x9c> + d02: 20 e0 ldi r18, 0x00 ; 0 + d04: 30 e0 ldi r19, 0x00 ; 0 + d06: 40 e0 ldi r20, 0x00 ; 0 + d08: 50 e0 ldi r21, 0x00 ; 0 + d0a: 09 c0 rjmp .+18 ; 0xd1e <__fixsfsi+0x9c> + d0c: 2f ef ldi r18, 0xFF ; 255 + d0e: 3f ef ldi r19, 0xFF ; 255 + d10: 4f ef ldi r20, 0xFF ; 255 + d12: 5f e7 ldi r21, 0x7F ; 127 + d14: 04 c0 rjmp .+8 ; 0xd1e <__fixsfsi+0x9c> + d16: 20 e0 ldi r18, 0x00 ; 0 + d18: 30 e0 ldi r19, 0x00 ; 0 + d1a: 40 e0 ldi r20, 0x00 ; 0 + d1c: 50 e8 ldi r21, 0x80 ; 128 + d1e: b9 01 movw r22, r18 + d20: ca 01 movw r24, r20 + d22: 2c 96 adiw r28, 0x0c ; 12 + d24: e2 e0 ldi r30, 0x02 ; 2 + d26: 0c 94 72 08 jmp 0x10e4 ; 0x10e4 <__epilogue_restores__+0x20> + +00000d2a <__pack_f>: + d2a: df 92 push r13 + d2c: ef 92 push r14 + d2e: ff 92 push r15 + d30: 0f 93 push r16 + d32: 1f 93 push r17 + d34: fc 01 movw r30, r24 + d36: e4 80 ldd r14, Z+4 ; 0x04 + d38: f5 80 ldd r15, Z+5 ; 0x05 + d3a: 06 81 ldd r16, Z+6 ; 0x06 + d3c: 17 81 ldd r17, Z+7 ; 0x07 + d3e: d1 80 ldd r13, Z+1 ; 0x01 + d40: 80 81 ld r24, Z + d42: 82 30 cpi r24, 0x02 ; 2 + d44: 48 f4 brcc .+18 ; 0xd58 <__pack_f+0x2e> + d46: 80 e0 ldi r24, 0x00 ; 0 + d48: 90 e0 ldi r25, 0x00 ; 0 + d4a: a0 e1 ldi r26, 0x10 ; 16 + d4c: b0 e0 ldi r27, 0x00 ; 0 + d4e: e8 2a or r14, r24 + d50: f9 2a or r15, r25 + d52: 0a 2b or r16, r26 + d54: 1b 2b or r17, r27 + d56: a5 c0 rjmp .+330 ; 0xea2 <__pack_f+0x178> + d58: 84 30 cpi r24, 0x04 ; 4 + d5a: 09 f4 brne .+2 ; 0xd5e <__pack_f+0x34> + d5c: 9f c0 rjmp .+318 ; 0xe9c <__pack_f+0x172> + d5e: 82 30 cpi r24, 0x02 ; 2 + d60: 21 f4 brne .+8 ; 0xd6a <__pack_f+0x40> + d62: ee 24 eor r14, r14 + d64: ff 24 eor r15, r15 + d66: 87 01 movw r16, r14 + d68: 05 c0 rjmp .+10 ; 0xd74 <__pack_f+0x4a> + d6a: e1 14 cp r14, r1 + d6c: f1 04 cpc r15, r1 + d6e: 01 05 cpc r16, r1 + d70: 11 05 cpc r17, r1 + d72: 19 f4 brne .+6 ; 0xd7a <__pack_f+0x50> + d74: e0 e0 ldi r30, 0x00 ; 0 + d76: f0 e0 ldi r31, 0x00 ; 0 + d78: 96 c0 rjmp .+300 ; 0xea6 <__pack_f+0x17c> + d7a: 62 81 ldd r22, Z+2 ; 0x02 + d7c: 73 81 ldd r23, Z+3 ; 0x03 + d7e: 9f ef ldi r25, 0xFF ; 255 + d80: 62 38 cpi r22, 0x82 ; 130 + d82: 79 07 cpc r23, r25 + d84: 0c f0 brlt .+2 ; 0xd88 <__pack_f+0x5e> + d86: 5b c0 rjmp .+182 ; 0xe3e <__pack_f+0x114> + d88: 22 e8 ldi r18, 0x82 ; 130 + d8a: 3f ef ldi r19, 0xFF ; 255 + d8c: 26 1b sub r18, r22 + d8e: 37 0b sbc r19, r23 + d90: 2a 31 cpi r18, 0x1A ; 26 + d92: 31 05 cpc r19, r1 + d94: 2c f0 brlt .+10 ; 0xda0 <__pack_f+0x76> + d96: 20 e0 ldi r18, 0x00 ; 0 + d98: 30 e0 ldi r19, 0x00 ; 0 + d9a: 40 e0 ldi r20, 0x00 ; 0 + d9c: 50 e0 ldi r21, 0x00 ; 0 + d9e: 2a c0 rjmp .+84 ; 0xdf4 <__pack_f+0xca> + da0: b8 01 movw r22, r16 + da2: a7 01 movw r20, r14 + da4: 02 2e mov r0, r18 + da6: 04 c0 rjmp .+8 ; 0xdb0 <__pack_f+0x86> + da8: 76 95 lsr r23 + daa: 67 95 ror r22 + dac: 57 95 ror r21 + dae: 47 95 ror r20 + db0: 0a 94 dec r0 + db2: d2 f7 brpl .-12 ; 0xda8 <__pack_f+0x7e> + db4: 81 e0 ldi r24, 0x01 ; 1 + db6: 90 e0 ldi r25, 0x00 ; 0 + db8: a0 e0 ldi r26, 0x00 ; 0 + dba: b0 e0 ldi r27, 0x00 ; 0 + dbc: 04 c0 rjmp .+8 ; 0xdc6 <__pack_f+0x9c> + dbe: 88 0f add r24, r24 + dc0: 99 1f adc r25, r25 + dc2: aa 1f adc r26, r26 + dc4: bb 1f adc r27, r27 + dc6: 2a 95 dec r18 + dc8: d2 f7 brpl .-12 ; 0xdbe <__pack_f+0x94> + dca: 01 97 sbiw r24, 0x01 ; 1 + dcc: a1 09 sbc r26, r1 + dce: b1 09 sbc r27, r1 + dd0: 8e 21 and r24, r14 + dd2: 9f 21 and r25, r15 + dd4: a0 23 and r26, r16 + dd6: b1 23 and r27, r17 + dd8: 00 97 sbiw r24, 0x00 ; 0 + dda: a1 05 cpc r26, r1 + ddc: b1 05 cpc r27, r1 + dde: 21 f0 breq .+8 ; 0xde8 <__pack_f+0xbe> + de0: 81 e0 ldi r24, 0x01 ; 1 + de2: 90 e0 ldi r25, 0x00 ; 0 + de4: a0 e0 ldi r26, 0x00 ; 0 + de6: b0 e0 ldi r27, 0x00 ; 0 + de8: 9a 01 movw r18, r20 + dea: ab 01 movw r20, r22 + dec: 28 2b or r18, r24 + dee: 39 2b or r19, r25 + df0: 4a 2b or r20, r26 + df2: 5b 2b or r21, r27 + df4: da 01 movw r26, r20 + df6: c9 01 movw r24, r18 + df8: 8f 77 andi r24, 0x7F ; 127 + dfa: 90 70 andi r25, 0x00 ; 0 + dfc: a0 70 andi r26, 0x00 ; 0 + dfe: b0 70 andi r27, 0x00 ; 0 + e00: 80 34 cpi r24, 0x40 ; 64 + e02: 91 05 cpc r25, r1 + e04: a1 05 cpc r26, r1 + e06: b1 05 cpc r27, r1 + e08: 39 f4 brne .+14 ; 0xe18 <__pack_f+0xee> + e0a: 27 ff sbrs r18, 7 + e0c: 09 c0 rjmp .+18 ; 0xe20 <__pack_f+0xf6> + e0e: 20 5c subi r18, 0xC0 ; 192 + e10: 3f 4f sbci r19, 0xFF ; 255 + e12: 4f 4f sbci r20, 0xFF ; 255 + e14: 5f 4f sbci r21, 0xFF ; 255 + e16: 04 c0 rjmp .+8 ; 0xe20 <__pack_f+0xf6> + e18: 21 5c subi r18, 0xC1 ; 193 + e1a: 3f 4f sbci r19, 0xFF ; 255 + e1c: 4f 4f sbci r20, 0xFF ; 255 + e1e: 5f 4f sbci r21, 0xFF ; 255 + e20: e0 e0 ldi r30, 0x00 ; 0 + e22: f0 e0 ldi r31, 0x00 ; 0 + e24: 20 30 cpi r18, 0x00 ; 0 + e26: a0 e0 ldi r26, 0x00 ; 0 + e28: 3a 07 cpc r19, r26 + e2a: a0 e0 ldi r26, 0x00 ; 0 + e2c: 4a 07 cpc r20, r26 + e2e: a0 e4 ldi r26, 0x40 ; 64 + e30: 5a 07 cpc r21, r26 + e32: 10 f0 brcs .+4 ; 0xe38 <__pack_f+0x10e> + e34: e1 e0 ldi r30, 0x01 ; 1 + e36: f0 e0 ldi r31, 0x00 ; 0 + e38: 79 01 movw r14, r18 + e3a: 8a 01 movw r16, r20 + e3c: 27 c0 rjmp .+78 ; 0xe8c <__pack_f+0x162> + e3e: 60 38 cpi r22, 0x80 ; 128 + e40: 71 05 cpc r23, r1 + e42: 64 f5 brge .+88 ; 0xe9c <__pack_f+0x172> + e44: fb 01 movw r30, r22 + e46: e1 58 subi r30, 0x81 ; 129 + e48: ff 4f sbci r31, 0xFF ; 255 + e4a: d8 01 movw r26, r16 + e4c: c7 01 movw r24, r14 + e4e: 8f 77 andi r24, 0x7F ; 127 + e50: 90 70 andi r25, 0x00 ; 0 + e52: a0 70 andi r26, 0x00 ; 0 + e54: b0 70 andi r27, 0x00 ; 0 + e56: 80 34 cpi r24, 0x40 ; 64 + e58: 91 05 cpc r25, r1 + e5a: a1 05 cpc r26, r1 + e5c: b1 05 cpc r27, r1 + e5e: 39 f4 brne .+14 ; 0xe6e <__pack_f+0x144> + e60: e7 fe sbrs r14, 7 + e62: 0d c0 rjmp .+26 ; 0xe7e <__pack_f+0x154> + e64: 80 e4 ldi r24, 0x40 ; 64 + e66: 90 e0 ldi r25, 0x00 ; 0 + e68: a0 e0 ldi r26, 0x00 ; 0 + e6a: b0 e0 ldi r27, 0x00 ; 0 + e6c: 04 c0 rjmp .+8 ; 0xe76 <__pack_f+0x14c> + e6e: 8f e3 ldi r24, 0x3F ; 63 + e70: 90 e0 ldi r25, 0x00 ; 0 + e72: a0 e0 ldi r26, 0x00 ; 0 + e74: b0 e0 ldi r27, 0x00 ; 0 + e76: e8 0e add r14, r24 + e78: f9 1e adc r15, r25 + e7a: 0a 1f adc r16, r26 + e7c: 1b 1f adc r17, r27 + e7e: 17 ff sbrs r17, 7 + e80: 05 c0 rjmp .+10 ; 0xe8c <__pack_f+0x162> + e82: 16 95 lsr r17 + e84: 07 95 ror r16 + e86: f7 94 ror r15 + e88: e7 94 ror r14 + e8a: 31 96 adiw r30, 0x01 ; 1 + e8c: 87 e0 ldi r24, 0x07 ; 7 + e8e: 16 95 lsr r17 + e90: 07 95 ror r16 + e92: f7 94 ror r15 + e94: e7 94 ror r14 + e96: 8a 95 dec r24 + e98: d1 f7 brne .-12 ; 0xe8e <__pack_f+0x164> + e9a: 05 c0 rjmp .+10 ; 0xea6 <__pack_f+0x17c> + e9c: ee 24 eor r14, r14 + e9e: ff 24 eor r15, r15 + ea0: 87 01 movw r16, r14 + ea2: ef ef ldi r30, 0xFF ; 255 + ea4: f0 e0 ldi r31, 0x00 ; 0 + ea6: 6e 2f mov r22, r30 + ea8: 67 95 ror r22 + eaa: 66 27 eor r22, r22 + eac: 67 95 ror r22 + eae: 90 2f mov r25, r16 + eb0: 9f 77 andi r25, 0x7F ; 127 + eb2: d7 94 ror r13 + eb4: dd 24 eor r13, r13 + eb6: d7 94 ror r13 + eb8: 8e 2f mov r24, r30 + eba: 86 95 lsr r24 + ebc: 49 2f mov r20, r25 + ebe: 46 2b or r20, r22 + ec0: 58 2f mov r21, r24 + ec2: 5d 29 or r21, r13 + ec4: b7 01 movw r22, r14 + ec6: ca 01 movw r24, r20 + ec8: 1f 91 pop r17 + eca: 0f 91 pop r16 + ecc: ff 90 pop r15 + ece: ef 90 pop r14 + ed0: df 90 pop r13 + ed2: 08 95 ret + +00000ed4 <__unpack_f>: + ed4: fc 01 movw r30, r24 + ed6: db 01 movw r26, r22 + ed8: 40 81 ld r20, Z + eda: 51 81 ldd r21, Z+1 ; 0x01 + edc: 22 81 ldd r18, Z+2 ; 0x02 + ede: 62 2f mov r22, r18 + ee0: 6f 77 andi r22, 0x7F ; 127 + ee2: 70 e0 ldi r23, 0x00 ; 0 + ee4: 22 1f adc r18, r18 + ee6: 22 27 eor r18, r18 + ee8: 22 1f adc r18, r18 + eea: 93 81 ldd r25, Z+3 ; 0x03 + eec: 89 2f mov r24, r25 + eee: 88 0f add r24, r24 + ef0: 82 2b or r24, r18 + ef2: 28 2f mov r18, r24 + ef4: 30 e0 ldi r19, 0x00 ; 0 + ef6: 99 1f adc r25, r25 + ef8: 99 27 eor r25, r25 + efa: 99 1f adc r25, r25 + efc: 11 96 adiw r26, 0x01 ; 1 + efe: 9c 93 st X, r25 + f00: 11 97 sbiw r26, 0x01 ; 1 + f02: 21 15 cp r18, r1 + f04: 31 05 cpc r19, r1 + f06: a9 f5 brne .+106 ; 0xf72 <__unpack_f+0x9e> + f08: 41 15 cp r20, r1 + f0a: 51 05 cpc r21, r1 + f0c: 61 05 cpc r22, r1 + f0e: 71 05 cpc r23, r1 + f10: 11 f4 brne .+4 ; 0xf16 <__unpack_f+0x42> + f12: 82 e0 ldi r24, 0x02 ; 2 + f14: 37 c0 rjmp .+110 ; 0xf84 <__unpack_f+0xb0> + f16: 82 e8 ldi r24, 0x82 ; 130 + f18: 9f ef ldi r25, 0xFF ; 255 + f1a: 13 96 adiw r26, 0x03 ; 3 + f1c: 9c 93 st X, r25 + f1e: 8e 93 st -X, r24 + f20: 12 97 sbiw r26, 0x02 ; 2 + f22: 9a 01 movw r18, r20 + f24: ab 01 movw r20, r22 + f26: 67 e0 ldi r22, 0x07 ; 7 + f28: 22 0f add r18, r18 + f2a: 33 1f adc r19, r19 + f2c: 44 1f adc r20, r20 + f2e: 55 1f adc r21, r21 + f30: 6a 95 dec r22 + f32: d1 f7 brne .-12 ; 0xf28 <__unpack_f+0x54> + f34: 83 e0 ldi r24, 0x03 ; 3 + f36: 8c 93 st X, r24 + f38: 0d c0 rjmp .+26 ; 0xf54 <__unpack_f+0x80> + f3a: 22 0f add r18, r18 + f3c: 33 1f adc r19, r19 + f3e: 44 1f adc r20, r20 + f40: 55 1f adc r21, r21 + f42: 12 96 adiw r26, 0x02 ; 2 + f44: 8d 91 ld r24, X+ + f46: 9c 91 ld r25, X + f48: 13 97 sbiw r26, 0x03 ; 3 + f4a: 01 97 sbiw r24, 0x01 ; 1 + f4c: 13 96 adiw r26, 0x03 ; 3 + f4e: 9c 93 st X, r25 + f50: 8e 93 st -X, r24 + f52: 12 97 sbiw r26, 0x02 ; 2 + f54: 20 30 cpi r18, 0x00 ; 0 + f56: 80 e0 ldi r24, 0x00 ; 0 + f58: 38 07 cpc r19, r24 + f5a: 80 e0 ldi r24, 0x00 ; 0 + f5c: 48 07 cpc r20, r24 + f5e: 80 e4 ldi r24, 0x40 ; 64 + f60: 58 07 cpc r21, r24 + f62: 58 f3 brcs .-42 ; 0xf3a <__unpack_f+0x66> + f64: 14 96 adiw r26, 0x04 ; 4 + f66: 2d 93 st X+, r18 + f68: 3d 93 st X+, r19 + f6a: 4d 93 st X+, r20 + f6c: 5c 93 st X, r21 + f6e: 17 97 sbiw r26, 0x07 ; 7 + f70: 08 95 ret + f72: 2f 3f cpi r18, 0xFF ; 255 + f74: 31 05 cpc r19, r1 + f76: 79 f4 brne .+30 ; 0xf96 <__unpack_f+0xc2> + f78: 41 15 cp r20, r1 + f7a: 51 05 cpc r21, r1 + f7c: 61 05 cpc r22, r1 + f7e: 71 05 cpc r23, r1 + f80: 19 f4 brne .+6 ; 0xf88 <__unpack_f+0xb4> + f82: 84 e0 ldi r24, 0x04 ; 4 + f84: 8c 93 st X, r24 + f86: 08 95 ret + f88: 64 ff sbrs r22, 4 + f8a: 03 c0 rjmp .+6 ; 0xf92 <__unpack_f+0xbe> + f8c: 81 e0 ldi r24, 0x01 ; 1 + f8e: 8c 93 st X, r24 + f90: 12 c0 rjmp .+36 ; 0xfb6 <__unpack_f+0xe2> + f92: 1c 92 st X, r1 + f94: 10 c0 rjmp .+32 ; 0xfb6 <__unpack_f+0xe2> + f96: 2f 57 subi r18, 0x7F ; 127 + f98: 30 40 sbci r19, 0x00 ; 0 + f9a: 13 96 adiw r26, 0x03 ; 3 + f9c: 3c 93 st X, r19 + f9e: 2e 93 st -X, r18 + fa0: 12 97 sbiw r26, 0x02 ; 2 + fa2: 83 e0 ldi r24, 0x03 ; 3 + fa4: 8c 93 st X, r24 + fa6: 87 e0 ldi r24, 0x07 ; 7 + fa8: 44 0f add r20, r20 + faa: 55 1f adc r21, r21 + fac: 66 1f adc r22, r22 + fae: 77 1f adc r23, r23 + fb0: 8a 95 dec r24 + fb2: d1 f7 brne .-12 ; 0xfa8 <__unpack_f+0xd4> + fb4: 70 64 ori r23, 0x40 ; 64 + fb6: 14 96 adiw r26, 0x04 ; 4 + fb8: 4d 93 st X+, r20 + fba: 5d 93 st X+, r21 + fbc: 6d 93 st X+, r22 + fbe: 7c 93 st X, r23 + fc0: 17 97 sbiw r26, 0x07 ; 7 + fc2: 08 95 ret + +00000fc4 <__divmodhi4>: + fc4: 97 fb bst r25, 7 + fc6: 09 2e mov r0, r25 + fc8: 07 26 eor r0, r23 + fca: 0a d0 rcall .+20 ; 0xfe0 <__divmodhi4_neg1> + fcc: 77 fd sbrc r23, 7 + fce: 04 d0 rcall .+8 ; 0xfd8 <__divmodhi4_neg2> + fd0: 49 d0 rcall .+146 ; 0x1064 <__udivmodhi4> + fd2: 06 d0 rcall .+12 ; 0xfe0 <__divmodhi4_neg1> + fd4: 00 20 and r0, r0 + fd6: 1a f4 brpl .+6 ; 0xfde <__divmodhi4_exit> + +00000fd8 <__divmodhi4_neg2>: + fd8: 70 95 com r23 + fda: 61 95 neg r22 + fdc: 7f 4f sbci r23, 0xFF ; 255 + +00000fde <__divmodhi4_exit>: + fde: 08 95 ret + +00000fe0 <__divmodhi4_neg1>: + fe0: f6 f7 brtc .-4 ; 0xfde <__divmodhi4_exit> + fe2: 90 95 com r25 + fe4: 81 95 neg r24 + fe6: 9f 4f sbci r25, 0xFF ; 255 + fe8: 08 95 ret + +00000fea <__udivmodsi4>: + fea: a1 e2 ldi r26, 0x21 ; 33 + fec: 1a 2e mov r1, r26 + fee: aa 1b sub r26, r26 + ff0: bb 1b sub r27, r27 + ff2: fd 01 movw r30, r26 + ff4: 0d c0 rjmp .+26 ; 0x1010 <__udivmodsi4_ep> + +00000ff6 <__udivmodsi4_loop>: + ff6: aa 1f adc r26, r26 + ff8: bb 1f adc r27, r27 + ffa: ee 1f adc r30, r30 + ffc: ff 1f adc r31, r31 + ffe: a2 17 cp r26, r18 + 1000: b3 07 cpc r27, r19 + 1002: e4 07 cpc r30, r20 + 1004: f5 07 cpc r31, r21 + 1006: 20 f0 brcs .+8 ; 0x1010 <__udivmodsi4_ep> + 1008: a2 1b sub r26, r18 + 100a: b3 0b sbc r27, r19 + 100c: e4 0b sbc r30, r20 + 100e: f5 0b sbc r31, r21 + +00001010 <__udivmodsi4_ep>: + 1010: 66 1f adc r22, r22 + 1012: 77 1f adc r23, r23 + 1014: 88 1f adc r24, r24 + 1016: 99 1f adc r25, r25 + 1018: 1a 94 dec r1 + 101a: 69 f7 brne .-38 ; 0xff6 <__udivmodsi4_loop> + 101c: 60 95 com r22 + 101e: 70 95 com r23 + 1020: 80 95 com r24 + 1022: 90 95 com r25 + 1024: 9b 01 movw r18, r22 + 1026: ac 01 movw r20, r24 + 1028: bd 01 movw r22, r26 + 102a: cf 01 movw r24, r30 + 102c: 08 95 ret + +0000102e <__divmodsi4>: + 102e: 97 fb bst r25, 7 + 1030: 09 2e mov r0, r25 + 1032: 05 26 eor r0, r21 + 1034: 0e d0 rcall .+28 ; 0x1052 <__divmodsi4_neg1> + 1036: 57 fd sbrc r21, 7 + 1038: 04 d0 rcall .+8 ; 0x1042 <__divmodsi4_neg2> + 103a: d7 df rcall .-82 ; 0xfea <__udivmodsi4> + 103c: 0a d0 rcall .+20 ; 0x1052 <__divmodsi4_neg1> + 103e: 00 1c adc r0, r0 + 1040: 38 f4 brcc .+14 ; 0x1050 <__divmodsi4_exit> + +00001042 <__divmodsi4_neg2>: + 1042: 50 95 com r21 + 1044: 40 95 com r20 + 1046: 30 95 com r19 + 1048: 21 95 neg r18 + 104a: 3f 4f sbci r19, 0xFF ; 255 + 104c: 4f 4f sbci r20, 0xFF ; 255 + 104e: 5f 4f sbci r21, 0xFF ; 255 + +00001050 <__divmodsi4_exit>: + 1050: 08 95 ret + +00001052 <__divmodsi4_neg1>: + 1052: f6 f7 brtc .-4 ; 0x1050 <__divmodsi4_exit> + 1054: 90 95 com r25 + 1056: 80 95 com r24 + 1058: 70 95 com r23 + 105a: 61 95 neg r22 + 105c: 7f 4f sbci r23, 0xFF ; 255 + 105e: 8f 4f sbci r24, 0xFF ; 255 + 1060: 9f 4f sbci r25, 0xFF ; 255 + 1062: 08 95 ret + +00001064 <__udivmodhi4>: + 1064: aa 1b sub r26, r26 + 1066: bb 1b sub r27, r27 + 1068: 51 e1 ldi r21, 0x11 ; 17 + 106a: 07 c0 rjmp .+14 ; 0x107a <__udivmodhi4_ep> + +0000106c <__udivmodhi4_loop>: + 106c: aa 1f adc r26, r26 + 106e: bb 1f adc r27, r27 + 1070: a6 17 cp r26, r22 + 1072: b7 07 cpc r27, r23 + 1074: 10 f0 brcs .+4 ; 0x107a <__udivmodhi4_ep> + 1076: a6 1b sub r26, r22 + 1078: b7 0b sbc r27, r23 + +0000107a <__udivmodhi4_ep>: + 107a: 88 1f adc r24, r24 + 107c: 99 1f adc r25, r25 + 107e: 5a 95 dec r21 + 1080: a9 f7 brne .-22 ; 0x106c <__udivmodhi4_loop> + 1082: 80 95 com r24 + 1084: 90 95 com r25 + 1086: bc 01 movw r22, r24 + 1088: cd 01 movw r24, r26 + 108a: 08 95 ret + +0000108c <__prologue_saves__>: + 108c: 2f 92 push r2 + 108e: 3f 92 push r3 + 1090: 4f 92 push r4 + 1092: 5f 92 push r5 + 1094: 6f 92 push r6 + 1096: 7f 92 push r7 + 1098: 8f 92 push r8 + 109a: 9f 92 push r9 + 109c: af 92 push r10 + 109e: bf 92 push r11 + 10a0: cf 92 push r12 + 10a2: df 92 push r13 + 10a4: ef 92 push r14 + 10a6: ff 92 push r15 + 10a8: 0f 93 push r16 + 10aa: 1f 93 push r17 + 10ac: cf 93 push r28 + 10ae: df 93 push r29 + 10b0: cd b7 in r28, 0x3d ; 61 + 10b2: de b7 in r29, 0x3e ; 62 + 10b4: ca 1b sub r28, r26 + 10b6: db 0b sbc r29, r27 + 10b8: 0f b6 in r0, 0x3f ; 63 + 10ba: f8 94 cli + 10bc: de bf out 0x3e, r29 ; 62 + 10be: 0f be out 0x3f, r0 ; 63 + 10c0: cd bf out 0x3d, r28 ; 61 + 10c2: 09 94 ijmp + +000010c4 <__epilogue_restores__>: + 10c4: 2a 88 ldd r2, Y+18 ; 0x12 + 10c6: 39 88 ldd r3, Y+17 ; 0x11 + 10c8: 48 88 ldd r4, Y+16 ; 0x10 + 10ca: 5f 84 ldd r5, Y+15 ; 0x0f + 10cc: 6e 84 ldd r6, Y+14 ; 0x0e + 10ce: 7d 84 ldd r7, Y+13 ; 0x0d + 10d0: 8c 84 ldd r8, Y+12 ; 0x0c + 10d2: 9b 84 ldd r9, Y+11 ; 0x0b + 10d4: aa 84 ldd r10, Y+10 ; 0x0a + 10d6: b9 84 ldd r11, Y+9 ; 0x09 + 10d8: c8 84 ldd r12, Y+8 ; 0x08 + 10da: df 80 ldd r13, Y+7 ; 0x07 + 10dc: ee 80 ldd r14, Y+6 ; 0x06 + 10de: fd 80 ldd r15, Y+5 ; 0x05 + 10e0: 0c 81 ldd r16, Y+4 ; 0x04 + 10e2: 1b 81 ldd r17, Y+3 ; 0x03 + 10e4: aa 81 ldd r26, Y+2 ; 0x02 + 10e6: b9 81 ldd r27, Y+1 ; 0x01 + 10e8: ce 0f add r28, r30 + 10ea: d1 1d adc r29, r1 + 10ec: 0f b6 in r0, 0x3f ; 63 + 10ee: f8 94 cli + 10f0: de bf out 0x3e, r29 ; 62 + 10f2: 0f be out 0x3f, r0 ; 63 + 10f4: cd bf out 0x3d, r28 ; 61 + 10f6: ed 01 movw r28, r26 + 10f8: 08 95 ret + +000010fa <__tablejump2__>: + 10fa: ee 0f add r30, r30 + 10fc: ff 1f adc r31, r31 + +000010fe <__tablejump__>: + 10fe: 05 90 lpm r0, Z+ + 1100: f4 91 lpm r31, Z+ + 1102: e0 2d mov r30, r0 + 1104: 09 94 ijmp + +00001106 <sin>: + 1106: 9f 93 push r25 + 1108: 05 d0 rcall .+10 ; 0x1114 <__fp_rempio2> + 110a: 0f 90 pop r0 + 110c: 07 fc sbrc r0, 7 + 110e: ee 5f subi r30, 0xFE ; 254 + 1110: 28 c0 rjmp .+80 ; 0x1162 <__fp_sinus> + 1112: ce c0 rjmp .+412 ; 0x12b0 <__fp_nan> + +00001114 <__fp_rempio2>: + 1114: 3f d0 rcall .+126 ; 0x1194 <__fp_splitA> + 1116: e8 f3 brcs .-6 ; 0x1112 <sin+0xc> + 1118: e8 94 clt + 111a: e0 e0 ldi r30, 0x00 ; 0 + 111c: bb 27 eor r27, r27 + 111e: 9f 57 subi r25, 0x7F ; 127 + 1120: f0 f0 brcs .+60 ; 0x115e <__fp_rempio2+0x4a> + 1122: 2a ed ldi r18, 0xDA ; 218 + 1124: 3f e0 ldi r19, 0x0F ; 15 + 1126: 49 ec ldi r20, 0xC9 ; 201 + 1128: 06 c0 rjmp .+12 ; 0x1136 <__fp_rempio2+0x22> + 112a: ee 0f add r30, r30 + 112c: bb 0f add r27, r27 + 112e: 66 1f adc r22, r22 + 1130: 77 1f adc r23, r23 + 1132: 88 1f adc r24, r24 + 1134: 28 f0 brcs .+10 ; 0x1140 <__fp_rempio2+0x2c> + 1136: b2 3a cpi r27, 0xA2 ; 162 + 1138: 62 07 cpc r22, r18 + 113a: 73 07 cpc r23, r19 + 113c: 84 07 cpc r24, r20 + 113e: 28 f0 brcs .+10 ; 0x114a <__fp_rempio2+0x36> + 1140: b2 5a subi r27, 0xA2 ; 162 + 1142: 62 0b sbc r22, r18 + 1144: 73 0b sbc r23, r19 + 1146: 84 0b sbc r24, r20 + 1148: e3 95 inc r30 + 114a: 9a 95 dec r25 + 114c: 72 f7 brpl .-36 ; 0x112a <__fp_rempio2+0x16> + 114e: 80 38 cpi r24, 0x80 ; 128 + 1150: 30 f4 brcc .+12 ; 0x115e <__fp_rempio2+0x4a> + 1152: 9a 95 dec r25 + 1154: bb 0f add r27, r27 + 1156: 66 1f adc r22, r22 + 1158: 77 1f adc r23, r23 + 115a: 88 1f adc r24, r24 + 115c: d2 f7 brpl .-12 ; 0x1152 <__fp_rempio2+0x3e> + 115e: 90 48 sbci r25, 0x80 ; 128 + 1160: 9b c0 rjmp .+310 ; 0x1298 <__fp_mpack_finite> + +00001162 <__fp_sinus>: + 1162: ef 93 push r30 + 1164: e0 ff sbrs r30, 0 + 1166: 06 c0 rjmp .+12 ; 0x1174 <__fp_sinus+0x12> + 1168: a2 ea ldi r26, 0xA2 ; 162 + 116a: 2a ed ldi r18, 0xDA ; 218 + 116c: 3f e0 ldi r19, 0x0F ; 15 + 116e: 49 ec ldi r20, 0xC9 ; 201 + 1170: 5f eb ldi r21, 0xBF ; 191 + 1172: 37 d0 rcall .+110 ; 0x11e2 <__addsf3x> + 1174: bf d0 rcall .+382 ; 0x12f4 <__fp_round> + 1176: 0f 90 pop r0 + 1178: 03 94 inc r0 + 117a: 01 fc sbrc r0, 1 + 117c: 90 58 subi r25, 0x80 ; 128 + 117e: e8 e6 ldi r30, 0x68 ; 104 + 1180: f0 e0 ldi r31, 0x00 ; 0 + 1182: 99 c0 rjmp .+306 ; 0x12b6 <__fp_powsodd> + +00001184 <__fp_split3>: + 1184: 57 fd sbrc r21, 7 + 1186: 90 58 subi r25, 0x80 ; 128 + 1188: 44 0f add r20, r20 + 118a: 55 1f adc r21, r21 + 118c: 59 f0 breq .+22 ; 0x11a4 <__fp_splitA+0x10> + 118e: 5f 3f cpi r21, 0xFF ; 255 + 1190: 71 f0 breq .+28 ; 0x11ae <__fp_splitA+0x1a> + 1192: 47 95 ror r20 + +00001194 <__fp_splitA>: + 1194: 88 0f add r24, r24 + 1196: 97 fb bst r25, 7 + 1198: 99 1f adc r25, r25 + 119a: 61 f0 breq .+24 ; 0x11b4 <__fp_splitA+0x20> + 119c: 9f 3f cpi r25, 0xFF ; 255 + 119e: 79 f0 breq .+30 ; 0x11be <__fp_splitA+0x2a> + 11a0: 87 95 ror r24 + 11a2: 08 95 ret + 11a4: 12 16 cp r1, r18 + 11a6: 13 06 cpc r1, r19 + 11a8: 14 06 cpc r1, r20 + 11aa: 55 1f adc r21, r21 + 11ac: f2 cf rjmp .-28 ; 0x1192 <__fp_split3+0xe> + 11ae: 46 95 lsr r20 + 11b0: f1 df rcall .-30 ; 0x1194 <__fp_splitA> + 11b2: 08 c0 rjmp .+16 ; 0x11c4 <__fp_splitA+0x30> + 11b4: 16 16 cp r1, r22 + 11b6: 17 06 cpc r1, r23 + 11b8: 18 06 cpc r1, r24 + 11ba: 99 1f adc r25, r25 + 11bc: f1 cf rjmp .-30 ; 0x11a0 <__fp_splitA+0xc> + 11be: 86 95 lsr r24 + 11c0: 71 05 cpc r23, r1 + 11c2: 61 05 cpc r22, r1 + 11c4: 08 94 sec + 11c6: 08 95 ret + 11c8: 87 d0 rcall .+270 ; 0x12d8 <__fp_pscA> + 11ca: 30 f0 brcs .+12 ; 0x11d8 <__fp_splitA+0x44> + 11cc: 8c d0 rcall .+280 ; 0x12e6 <__fp_pscB> + 11ce: 20 f0 brcs .+8 ; 0x11d8 <__fp_splitA+0x44> + 11d0: 31 f4 brne .+12 ; 0x11de <__fp_splitA+0x4a> + 11d2: 9f 3f cpi r25, 0xFF ; 255 + 11d4: 11 f4 brne .+4 ; 0x11da <__fp_splitA+0x46> + 11d6: 1e f4 brtc .+6 ; 0x11de <__fp_splitA+0x4a> + 11d8: 6b c0 rjmp .+214 ; 0x12b0 <__fp_nan> + 11da: 0e f4 brtc .+2 ; 0x11de <__fp_splitA+0x4a> + 11dc: e0 95 com r30 + 11de: e7 fb bst r30, 7 + 11e0: 53 c0 rjmp .+166 ; 0x1288 <__fp_inf> + +000011e2 <__addsf3x>: + 11e2: e9 2f mov r30, r25 + 11e4: cf df rcall .-98 ; 0x1184 <__fp_split3> + 11e6: 80 f3 brcs .-32 ; 0x11c8 <__fp_splitA+0x34> + 11e8: ba 17 cp r27, r26 + 11ea: 62 07 cpc r22, r18 + 11ec: 73 07 cpc r23, r19 + 11ee: 84 07 cpc r24, r20 + 11f0: 95 07 cpc r25, r21 + 11f2: 18 f0 brcs .+6 ; 0x11fa <__addsf3x+0x18> + 11f4: 71 f4 brne .+28 ; 0x1212 <__addsf3x+0x30> + 11f6: 9e f5 brtc .+102 ; 0x125e <__addsf3x+0x7c> + 11f8: 8e c0 rjmp .+284 ; 0x1316 <__fp_zero> + 11fa: 0e f4 brtc .+2 ; 0x11fe <__addsf3x+0x1c> + 11fc: e0 95 com r30 + 11fe: 0b 2e mov r0, r27 + 1200: ba 2f mov r27, r26 + 1202: a0 2d mov r26, r0 + 1204: 0b 01 movw r0, r22 + 1206: b9 01 movw r22, r18 + 1208: 90 01 movw r18, r0 + 120a: 0c 01 movw r0, r24 + 120c: ca 01 movw r24, r20 + 120e: a0 01 movw r20, r0 + 1210: 11 24 eor r1, r1 + 1212: ff 27 eor r31, r31 + 1214: 59 1b sub r21, r25 + 1216: 99 f0 breq .+38 ; 0x123e <__addsf3x+0x5c> + 1218: 59 3f cpi r21, 0xF9 ; 249 + 121a: 50 f4 brcc .+20 ; 0x1230 <__addsf3x+0x4e> + 121c: 50 3e cpi r21, 0xE0 ; 224 + 121e: 68 f1 brcs .+90 ; 0x127a <__addsf3x+0x98> + 1220: 1a 16 cp r1, r26 + 1222: f0 40 sbci r31, 0x00 ; 0 + 1224: a2 2f mov r26, r18 + 1226: 23 2f mov r18, r19 + 1228: 34 2f mov r19, r20 + 122a: 44 27 eor r20, r20 + 122c: 58 5f subi r21, 0xF8 ; 248 + 122e: f3 cf rjmp .-26 ; 0x1216 <__addsf3x+0x34> + 1230: 46 95 lsr r20 + 1232: 37 95 ror r19 + 1234: 27 95 ror r18 + 1236: a7 95 ror r26 + 1238: f0 40 sbci r31, 0x00 ; 0 + 123a: 53 95 inc r21 + 123c: c9 f7 brne .-14 ; 0x1230 <__addsf3x+0x4e> + 123e: 7e f4 brtc .+30 ; 0x125e <__addsf3x+0x7c> + 1240: 1f 16 cp r1, r31 + 1242: ba 0b sbc r27, r26 + 1244: 62 0b sbc r22, r18 + 1246: 73 0b sbc r23, r19 + 1248: 84 0b sbc r24, r20 + 124a: ba f0 brmi .+46 ; 0x127a <__addsf3x+0x98> + 124c: 91 50 subi r25, 0x01 ; 1 + 124e: a1 f0 breq .+40 ; 0x1278 <__addsf3x+0x96> + 1250: ff 0f add r31, r31 + 1252: bb 1f adc r27, r27 + 1254: 66 1f adc r22, r22 + 1256: 77 1f adc r23, r23 + 1258: 88 1f adc r24, r24 + 125a: c2 f7 brpl .-16 ; 0x124c <__addsf3x+0x6a> + 125c: 0e c0 rjmp .+28 ; 0x127a <__addsf3x+0x98> + 125e: ba 0f add r27, r26 + 1260: 62 1f adc r22, r18 + 1262: 73 1f adc r23, r19 + 1264: 84 1f adc r24, r20 + 1266: 48 f4 brcc .+18 ; 0x127a <__addsf3x+0x98> + 1268: 87 95 ror r24 + 126a: 77 95 ror r23 + 126c: 67 95 ror r22 + 126e: b7 95 ror r27 + 1270: f7 95 ror r31 + 1272: 9e 3f cpi r25, 0xFE ; 254 + 1274: 08 f0 brcs .+2 ; 0x1278 <__addsf3x+0x96> + 1276: b3 cf rjmp .-154 ; 0x11de <__fp_splitA+0x4a> + 1278: 93 95 inc r25 + 127a: 88 0f add r24, r24 + 127c: 08 f0 brcs .+2 ; 0x1280 <__addsf3x+0x9e> + 127e: 99 27 eor r25, r25 + 1280: ee 0f add r30, r30 + 1282: 97 95 ror r25 + 1284: 87 95 ror r24 + 1286: 08 95 ret + +00001288 <__fp_inf>: + 1288: 97 f9 bld r25, 7 + 128a: 9f 67 ori r25, 0x7F ; 127 + 128c: 80 e8 ldi r24, 0x80 ; 128 + 128e: 70 e0 ldi r23, 0x00 ; 0 + 1290: 60 e0 ldi r22, 0x00 ; 0 + 1292: 08 95 ret + +00001294 <__fp_mpack>: + 1294: 9f 3f cpi r25, 0xFF ; 255 + 1296: 31 f0 breq .+12 ; 0x12a4 <__fp_mpack_finite+0xc> + +00001298 <__fp_mpack_finite>: + 1298: 91 50 subi r25, 0x01 ; 1 + 129a: 20 f4 brcc .+8 ; 0x12a4 <__fp_mpack_finite+0xc> + 129c: 87 95 ror r24 + 129e: 77 95 ror r23 + 12a0: 67 95 ror r22 + 12a2: b7 95 ror r27 + 12a4: 88 0f add r24, r24 + 12a6: 91 1d adc r25, r1 + 12a8: 96 95 lsr r25 + 12aa: 87 95 ror r24 + 12ac: 97 f9 bld r25, 7 + 12ae: 08 95 ret + +000012b0 <__fp_nan>: + 12b0: 9f ef ldi r25, 0xFF ; 255 + 12b2: 80 ec ldi r24, 0xC0 ; 192 + 12b4: 08 95 ret + +000012b6 <__fp_powsodd>: + 12b6: 9f 93 push r25 + 12b8: 8f 93 push r24 + 12ba: 7f 93 push r23 + 12bc: 6f 93 push r22 + 12be: ff 93 push r31 + 12c0: ef 93 push r30 + 12c2: 9b 01 movw r18, r22 + 12c4: ac 01 movw r20, r24 + 12c6: e3 db rcall .-2106 ; 0xa8e <__mulsf3> + 12c8: ef 91 pop r30 + 12ca: ff 91 pop r31 + 12cc: 2b d0 rcall .+86 ; 0x1324 <__fp_powser> + 12ce: 2f 91 pop r18 + 12d0: 3f 91 pop r19 + 12d2: 4f 91 pop r20 + 12d4: 5f 91 pop r21 + 12d6: db cb rjmp .-2122 ; 0xa8e <__mulsf3> + +000012d8 <__fp_pscA>: + 12d8: 00 24 eor r0, r0 + 12da: 0a 94 dec r0 + 12dc: 16 16 cp r1, r22 + 12de: 17 06 cpc r1, r23 + 12e0: 18 06 cpc r1, r24 + 12e2: 09 06 cpc r0, r25 + 12e4: 08 95 ret + +000012e6 <__fp_pscB>: + 12e6: 00 24 eor r0, r0 + 12e8: 0a 94 dec r0 + 12ea: 12 16 cp r1, r18 + 12ec: 13 06 cpc r1, r19 + 12ee: 14 06 cpc r1, r20 + 12f0: 05 06 cpc r0, r21 + 12f2: 08 95 ret + +000012f4 <__fp_round>: + 12f4: 09 2e mov r0, r25 + 12f6: 03 94 inc r0 + 12f8: 00 0c add r0, r0 + 12fa: 11 f4 brne .+4 ; 0x1300 <__fp_round+0xc> + 12fc: 88 23 and r24, r24 + 12fe: 52 f0 brmi .+20 ; 0x1314 <__fp_round+0x20> + 1300: bb 0f add r27, r27 + 1302: 40 f4 brcc .+16 ; 0x1314 <__fp_round+0x20> + 1304: bf 2b or r27, r31 + 1306: 11 f4 brne .+4 ; 0x130c <__fp_round+0x18> + 1308: 60 ff sbrs r22, 0 + 130a: 04 c0 rjmp .+8 ; 0x1314 <__fp_round+0x20> + 130c: 6f 5f subi r22, 0xFF ; 255 + 130e: 7f 4f sbci r23, 0xFF ; 255 + 1310: 8f 4f sbci r24, 0xFF ; 255 + 1312: 9f 4f sbci r25, 0xFF ; 255 + 1314: 08 95 ret + +00001316 <__fp_zero>: + 1316: e8 94 clt + +00001318 <__fp_szero>: + 1318: bb 27 eor r27, r27 + 131a: 66 27 eor r22, r22 + 131c: 77 27 eor r23, r23 + 131e: cb 01 movw r24, r22 + 1320: 97 f9 bld r25, 7 + 1322: 08 95 ret + +00001324 <__fp_powser>: + 1324: df 93 push r29 + 1326: cf 93 push r28 + 1328: 1f 93 push r17 + 132a: 0f 93 push r16 + 132c: ff 92 push r15 + 132e: ef 92 push r14 + 1330: df 92 push r13 + 1332: 7b 01 movw r14, r22 + 1334: 8c 01 movw r16, r24 + 1336: 68 94 set + 1338: 05 c0 rjmp .+10 ; 0x1344 <__fp_powser+0x20> + 133a: da 2e mov r13, r26 + 133c: ef 01 movw r28, r30 + 133e: 21 d0 rcall .+66 ; 0x1382 <__mulsf3x> + 1340: fe 01 movw r30, r28 + 1342: e8 94 clt + 1344: a5 91 lpm r26, Z+ + 1346: 25 91 lpm r18, Z+ + 1348: 35 91 lpm r19, Z+ + 134a: 45 91 lpm r20, Z+ + 134c: 55 91 lpm r21, Z+ + 134e: ae f3 brts .-22 ; 0x133a <__fp_powser+0x16> + 1350: ef 01 movw r28, r30 + 1352: 47 df rcall .-370 ; 0x11e2 <__addsf3x> + 1354: fe 01 movw r30, r28 + 1356: 97 01 movw r18, r14 + 1358: a8 01 movw r20, r16 + 135a: da 94 dec r13 + 135c: 79 f7 brne .-34 ; 0x133c <__fp_powser+0x18> + 135e: df 90 pop r13 + 1360: ef 90 pop r14 + 1362: ff 90 pop r15 + 1364: 0f 91 pop r16 + 1366: 1f 91 pop r17 + 1368: cf 91 pop r28 + 136a: df 91 pop r29 + 136c: 08 95 ret + 136e: b4 df rcall .-152 ; 0x12d8 <__fp_pscA> + 1370: 28 f0 brcs .+10 ; 0x137c <__fp_powser+0x58> + 1372: b9 df rcall .-142 ; 0x12e6 <__fp_pscB> + 1374: 18 f0 brcs .+6 ; 0x137c <__fp_powser+0x58> + 1376: 95 23 and r25, r21 + 1378: 09 f0 breq .+2 ; 0x137c <__fp_powser+0x58> + 137a: 86 cf rjmp .-244 ; 0x1288 <__fp_inf> + 137c: 99 cf rjmp .-206 ; 0x12b0 <__fp_nan> + 137e: 11 24 eor r1, r1 + 1380: cb cf rjmp .-106 ; 0x1318 <__fp_szero> + +00001382 <__mulsf3x>: + 1382: 00 df rcall .-512 ; 0x1184 <__fp_split3> + 1384: a0 f3 brcs .-24 ; 0x136e <__fp_powser+0x4a> + +00001386 <__mulsf3_pse>: + 1386: 95 9f mul r25, r21 + 1388: d1 f3 breq .-12 ; 0x137e <__fp_powser+0x5a> + 138a: 95 0f add r25, r21 + 138c: 50 e0 ldi r21, 0x00 ; 0 + 138e: 55 1f adc r21, r21 + 1390: 62 9f mul r22, r18 + 1392: f0 01 movw r30, r0 + 1394: 72 9f mul r23, r18 + 1396: bb 27 eor r27, r27 + 1398: f0 0d add r31, r0 + 139a: b1 1d adc r27, r1 + 139c: 63 9f mul r22, r19 + 139e: aa 27 eor r26, r26 + 13a0: f0 0d add r31, r0 + 13a2: b1 1d adc r27, r1 + 13a4: aa 1f adc r26, r26 + 13a6: 64 9f mul r22, r20 + 13a8: 66 27 eor r22, r22 + 13aa: b0 0d add r27, r0 + 13ac: a1 1d adc r26, r1 + 13ae: 66 1f adc r22, r22 + 13b0: 82 9f mul r24, r18 + 13b2: 22 27 eor r18, r18 + 13b4: b0 0d add r27, r0 + 13b6: a1 1d adc r26, r1 + 13b8: 62 1f adc r22, r18 + 13ba: 73 9f mul r23, r19 + 13bc: b0 0d add r27, r0 + 13be: a1 1d adc r26, r1 + 13c0: 62 1f adc r22, r18 + 13c2: 83 9f mul r24, r19 + 13c4: a0 0d add r26, r0 + 13c6: 61 1d adc r22, r1 + 13c8: 22 1f adc r18, r18 + 13ca: 74 9f mul r23, r20 + 13cc: 33 27 eor r19, r19 + 13ce: a0 0d add r26, r0 + 13d0: 61 1d adc r22, r1 + 13d2: 23 1f adc r18, r19 + 13d4: 84 9f mul r24, r20 + 13d6: 60 0d add r22, r0 + 13d8: 21 1d adc r18, r1 + 13da: 82 2f mov r24, r18 + 13dc: 76 2f mov r23, r22 + 13de: 6a 2f mov r22, r26 + 13e0: 11 24 eor r1, r1 + 13e2: 9f 57 subi r25, 0x7F ; 127 + 13e4: 50 40 sbci r21, 0x00 ; 0 + 13e6: 8a f0 brmi .+34 ; 0x140a <__mulsf3_pse+0x84> + 13e8: e1 f0 breq .+56 ; 0x1422 <__mulsf3_pse+0x9c> + 13ea: 88 23 and r24, r24 + 13ec: 4a f0 brmi .+18 ; 0x1400 <__mulsf3_pse+0x7a> + 13ee: ee 0f add r30, r30 + 13f0: ff 1f adc r31, r31 + 13f2: bb 1f adc r27, r27 + 13f4: 66 1f adc r22, r22 + 13f6: 77 1f adc r23, r23 + 13f8: 88 1f adc r24, r24 + 13fa: 91 50 subi r25, 0x01 ; 1 + 13fc: 50 40 sbci r21, 0x00 ; 0 + 13fe: a9 f7 brne .-22 ; 0x13ea <__mulsf3_pse+0x64> + 1400: 9e 3f cpi r25, 0xFE ; 254 + 1402: 51 05 cpc r21, r1 + 1404: 70 f0 brcs .+28 ; 0x1422 <__mulsf3_pse+0x9c> + 1406: 40 cf rjmp .-384 ; 0x1288 <__fp_inf> + 1408: 87 cf rjmp .-242 ; 0x1318 <__fp_szero> + 140a: 5f 3f cpi r21, 0xFF ; 255 + 140c: ec f3 brlt .-6 ; 0x1408 <__mulsf3_pse+0x82> + 140e: 98 3e cpi r25, 0xE8 ; 232 + 1410: dc f3 brlt .-10 ; 0x1408 <__mulsf3_pse+0x82> + 1412: 86 95 lsr r24 + 1414: 77 95 ror r23 + 1416: 67 95 ror r22 + 1418: b7 95 ror r27 + 141a: f7 95 ror r31 + 141c: e7 95 ror r30 + 141e: 9f 5f subi r25, 0xFF ; 255 + 1420: c1 f7 brne .-16 ; 0x1412 <__mulsf3_pse+0x8c> + 1422: fe 2b or r31, r30 + 1424: 88 0f add r24, r24 + 1426: 91 1d adc r25, r1 + 1428: 96 95 lsr r25 + 142a: 87 95 ror r24 + 142c: 97 f9 bld r25, 7 + 142e: 08 95 ret + +00001430 <_exit>: + 1430: f8 94 cli + +00001432 <__stop_program>: + 1432: ff cf rjmp .-2 ; 0x1432 <__stop_program> diff --git a/electic_streaming328p/bin/Release/electic_streaming.elf.map b/electic_streaming328p/bin/Release/electic_streaming.elf.map new file mode 100644 index 0000000..c007630 --- /dev/null +++ b/electic_streaming328p/bin/Release/electic_streaming.elf.map @@ -0,0 +1,897 @@ +Archive member included because of file (symbol) + +../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o (Serial) +../arduino_libs/core328p.a(Print.cpp.o) + obj/Release/main.o (Print::println(char const*)) +../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) (beginSerial) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + obj/Release/main.o (__divmodhi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + ../arduino_libs/core328p.a(Print.cpp.o) (__udivmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) (__divmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + obj/Release/main.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + obj/Release/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) (__do_global_ctors) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/main.o (__addsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + obj/Release/main.o (__mulsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Release/main.o (__fixsfsi) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + obj/Release/main.o (sin) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) (__fp_rempio2) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) (__fp_sinus) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_splitA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__addsf3x) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_inf) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_mpack_finite) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) (__fp_nan) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_powsodd) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscA) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscB) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) (__fp_round) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_zero) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) (__fp_powser) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) (__mulsf3x) + +Allocating common symbols +Common symbol size file + +rx_buffer 0x80 ../arduino_libs/core328p.a(wiring_serial.c.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/main.o +LOAD ../arduino_libs/core328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x1434 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + .progmem.gcc_fplib + 0x00000068 0x1e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + *(.progmem*) + 0x00000086 . = ALIGN (0x2) + 0x00000086 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000086 0x0 linker stubs + *(.trampolines*) + 0x00000086 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000086 __ctors_start = . + *(.ctors) + .ctors 0x00000086 0x2 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x00000088 __ctors_end = . + 0x00000088 __dtors_start = . + *(.dtors) + 0x00000088 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000088 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000088 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000088 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000094 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x00000094 __do_copy_data + .init4 0x000000aa 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000aa __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000ba 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + 0x000000ba __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000d0 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000d8 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000d8 __vector_22 + 0x000000d8 __vector_1 + 0x000000d8 __vector_24 + 0x000000d8 __vector_12 + 0x000000d8 __bad_interrupt + 0x000000d8 __vector_6 + 0x000000d8 __vector_3 + 0x000000d8 __vector_23 + 0x000000d8 __vector_25 + 0x000000d8 __vector_13 + 0x000000d8 __vector_17 + 0x000000d8 __vector_19 + 0x000000d8 __vector_7 + 0x000000d8 __vector_5 + 0x000000d8 __vector_4 + 0x000000d8 __vector_9 + 0x000000d8 __vector_2 + 0x000000d8 __vector_21 + 0x000000d8 __vector_15 + 0x000000d8 __vector_8 + 0x000000d8 __vector_14 + 0x000000d8 __vector_10 + 0x000000d8 __vector_16 + 0x000000d8 __vector_20 + .text 0x000000dc 0x1a0 obj/Release/main.o + 0x000000dc __vector_11 + 0x00000178 fill_sinewave() + 0x00000204 main + .text 0x0000027c 0x32 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x0000028a HardwareSerial::write(unsigned char) + 0x00000292 HardwareSerial::flush() + 0x00000298 HardwareSerial::read() + 0x0000029e HardwareSerial::available() + 0x000002a4 HardwareSerial::begin(long) + .text 0x000002ae 0x31e ../arduino_libs/core328p.a(Print.cpp.o) + 0x000002ae Print::print(unsigned char) + 0x000002be Print::print(char) + 0x000002ce Print::print(char const*) + 0x000002fe Print::println() + 0x0000032c Print::println(char) + 0x0000034c Print::println(char const*) + 0x00000362 Print::println(unsigned char) + 0x00000382 Print::printNumber(unsigned long, unsigned char) + 0x000004b2 Print::print(unsigned long) + 0x000004ba Print::println(unsigned long) + 0x000004d0 Print::print(unsigned int) + 0x000004dc Print::println(unsigned int) + 0x000004f8 Print::print(long) + 0x00000546 Print::println(long) + 0x0000055c Print::print(int) + 0x0000056c Print::println(int) + 0x0000058c Print::print(long, int) + 0x000005b6 Print::println(long, int) + .text 0x000005cc 0x16e ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x000005cc beginSerial + 0x0000063e serialWrite + 0x0000064e serialAvailable + 0x00000670 serialRead + 0x000006ae serialFlush + 0x000006c0 __vector_18 + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text 0x0000073a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text 0x0000073a 0x354 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + 0x000009d2 __subsf3 + 0x00000a34 __addsf3 + .text 0x00000a8e 0x1f4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + 0x00000a8e __mulsf3 + .text 0x00000c82 0xa8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + 0x00000c82 __fixsfsi + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .text 0x00000d2a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .text 0x00000d2a 0x1aa /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + 0x00000d2a __pack_f + .text 0x00000ed4 0xf0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + 0x00000ed4 __unpack_f + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .text 0x00000fc4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x00000fc4 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000fc4 0x26 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + 0x00000fc4 __divmodhi4 + 0x00000fc4 _div + .text.libgcc 0x00000fea 0x44 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + 0x00000fea __udivmodsi4 + .text.libgcc 0x0000102e 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + 0x0000102e __divmodsi4 + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00001064 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x00001064 0x28 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + 0x00001064 __udivmodhi4 + .text.libgcc 0x0000108c 0x38 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + 0x0000108c __prologue_saves__ + .text.libgcc 0x000010c4 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + 0x000010c4 __epilogue_restores__ + .text.libgcc 0x000010fa 0xc /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + 0x000010fa __tablejump2__ + 0x000010fe __tablejump__ + .text.avr-libc.fplib + 0x00001106 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + 0x00001106 sin + .text.avr-libc.fplib + 0x00001112 0x50 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x00001114 __fp_rempio2 + .text.avr-libc.fplib + 0x00001162 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x00001162 __fp_sinus + .text.avr-libc.fplib + 0x00001184 0x44 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x00001184 __fp_split3 + 0x00001194 __fp_splitA + .text.avr-libc.fplib + 0x000011c8 0xc0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x000011e2 __addsf3x + .text.avr-libc.fplib + 0x00001288 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x00001288 __fp_inf + .text.avr-libc.fplib + 0x00001294 0x1c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0x00001294 __fp_mpack + 0x00001298 __fp_mpack_finite + .text.avr-libc.fplib + 0x000012b0 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x000012b0 __fp_nan + .text.avr-libc.fplib + 0x000012b6 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x000012b6 __fp_powsodd + .text.avr-libc.fplib + 0x000012d8 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x000012d8 __fp_pscA + .text.avr-libc.fplib + 0x000012e6 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x000012e6 __fp_pscB + .text.avr-libc.fplib + 0x000012f4 0x22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x000012f4 __fp_round + .text.avr-libc.fplib + 0x00001316 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x00001316 __fp_zero + 0x00001318 __fp_szero + .text.avr-libc.fplib + 0x00001324 0x4a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x00001324 __fp_powser + .text.avr-libc.fplib + 0x0000136e 0xc2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x00001382 __mulsf3x + 0x00001386 __mulsf3_pse + 0x00001430 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00001430 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00001430 exit + 0x00001430 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00001430 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00001434 _etext = . + +.data 0x00800100 0x22 load address 0x00001434 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x13 obj/Release/main.o + .data 0x00800113 0x6 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x00800113 vtable for HardwareSerial + .data 0x00800119 0x0 ../arduino_libs/core328p.a(Print.cpp.o) + .data 0x00800119 0x0 ../arduino_libs/core328p.a(wiring_serial.c.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .data 0x00800119 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .data 0x00800119 0x8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + 0x00800119 __thenan_sf + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .data 0x00800121 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800122 . = ALIGN (0x2) + *fill* 0x00800121 0x1 00 + 0x00800122 _edata = . + 0x00800122 PROVIDE (__data_end, .) + +.bss 0x00800122 0x28a + 0x00800122 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800122 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800122 0x204 obj/Release/main.o + 0x00800122 dd + 0x00800322 loopCount + 0x00800324 sample + .bss 0x00800326 0x2 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x00800326 Serial + .bss 0x00800328 0x0 ../arduino_libs/core328p.a(Print.cpp.o) + .bss 0x00800328 0x4 ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x00800328 rx_buffer_head + 0x0080032a rx_buffer_tail + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + .bss 0x0080032c 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + *(.bss*) + *(COMMON) + COMMON 0x0080032c 0x80 ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x0080032c rx_buffer + 0x008003ac PROVIDE (__bss_end, .) + 0x00001434 __data_load_start = LOADADDR (.data) + 0x00001456 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x008003ac 0x0 + 0x008003ac PROVIDE (__noinit_start, .) + *(.noinit*) + 0x008003ac PROVIDE (__noinit_end, .) + 0x008003ac _end = . + 0x008003ac PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x1cd4 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + 0x84 (size before relaxing) + .stab 0x0000072c 0x21c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + 0x228 (size before relaxing) + .stab 0x00000948 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + 0x108 (size before relaxing) + .stab 0x00000a44 0x1d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + 0x1e0 (size before relaxing) + .stab 0x00000c18 0x4bc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + 0x4c8 (size before relaxing) + .stab 0x000010d4 0x78 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + 0x84 (size before relaxing) + .stab 0x0000114c 0xe4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + 0xf0 (size before relaxing) + .stab 0x00001230 0x54 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + 0x60 (size before relaxing) + .stab 0x00001284 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + 0x108 (size before relaxing) + .stab 0x00001380 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + 0x90 (size before relaxing) + .stab 0x00001404 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + 0x90 (size before relaxing) + .stab 0x00001488 0xfc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + 0x108 (size before relaxing) + .stab 0x00001584 0x90 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + 0x9c (size before relaxing) + .stab 0x00001614 0x1ec /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + 0x1f8 (size before relaxing) + .stab 0x00001800 0x4d4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + 0x4e0 (size before relaxing) + +.stabstr 0x00000000 0x30d + *(.stabstr) + .stabstr 0x00000000 0x30d /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x60 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_aranges + 0x00000040 0x20 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_pubnames + 0x00000000 0x2a7 + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0xa2 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_pubnames + 0x000000a2 0x15c ../arduino_libs/core328p.a(Print.cpp.o) + .debug_pubnames + 0x000001fe 0xa9 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_info 0x00000000 0xd0b + *(.debug_info) + .debug_info 0x00000000 0x2f0 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_info 0x000002f0 0x890 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_info 0x00000b80 0x18b ../arduino_libs/core328p.a(wiring_serial.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x3f7 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x18e ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_abbrev 0x0000018e 0x183 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_abbrev 0x00000311 0xe6 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_line 0x00000000 0x689 + *(.debug_line) + .debug_line 0x00000000 0x1b5 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_line 0x000001b5 0x364 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_line 0x00000519 0x170 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_frame 0x00000000 0x210 + *(.debug_frame) + .debug_frame 0x00000000 0x70 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_frame 0x00000070 0x130 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_frame 0x000001a0 0x70 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_str 0x00000000 0x420 + *(.debug_str) + .debug_str 0x00000000 0x1a7 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + 0x203 (size before relaxing) + .debug_str 0x000001a7 0x1b9 ../arduino_libs/core328p.a(Print.cpp.o) + 0x246 (size before relaxing) + .debug_str 0x00000360 0xc0 ../arduino_libs/core328p.a(wiring_serial.c.o) + 0x12c (size before relaxing) + +.debug_loc 0x00000000 0x75a + *(.debug_loc) + .debug_loc 0x00000000 0xa9 ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + .debug_loc 0x000000a9 0x621 ../arduino_libs/core328p.a(Print.cpp.o) + .debug_loc 0x000006ca 0x90 ../arduino_libs/core328p.a(wiring_serial.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Release/electic_streaming.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +HardwareSerial::available() ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +HardwareSerial::begin(long) ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +HardwareSerial::flush() ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +HardwareSerial::read() ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +HardwareSerial::write(unsigned char) ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +Print::print(char const*) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(long) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(long, int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(unsigned char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(unsigned int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::print(unsigned long) ../arduino_libs/core328p.a(Print.cpp.o) +Print::printNumber(unsigned long, unsigned char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println() ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(char const*) ../arduino_libs/core328p.a(Print.cpp.o) + obj/Release/main.o +Print::println(char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(long) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(long, int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(unsigned char) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(unsigned int) ../arduino_libs/core328p.a(Print.cpp.o) +Print::println(unsigned long) ../arduino_libs/core328p.a(Print.cpp.o) +Serial ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +__addsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/main.o +__addsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__ctors_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__divmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) + obj/Release/main.o +__divmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(Print.cpp.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(Print.cpp.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) + obj/Release/main.o +__do_global_ctors /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +__epilogue_restores__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Release/main.o +__fp_inf /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_inf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_mpack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) +__fp_mpack_finite /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_mpack.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_nan /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_nan.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_powser /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) +__fp_powsodd /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_pscA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscA.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_pscB /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_pscB.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_rempio2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) +__fp_round /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_round.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) +__fp_sinus /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_sinus.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) +__fp_split3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__fp_splitA /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_split3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_rempio2.o) +__fp_szero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__fp_zero /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_zero.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(addsf3x.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__mulsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powsodd.o) + obj/Release/main.o +__mulsf3_pse /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) +__mulsf3x /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(mulsf3x.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(fp_powser.o) +__pack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__tablejump2__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) +__udivmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + ../arduino_libs/core328p.a(Print.cpp.o) +__unpack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 ../arduino_libs/core328p.a(wiring_serial.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_div /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +beginSerial ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +dd obj/Release/main.o +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +fill_sinewave() obj/Release/main.o +loopCount obj/Release/main.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +rx_buffer ../arduino_libs/core328p.a(wiring_serial.c.o) +rx_buffer_head ../arduino_libs/core328p.a(wiring_serial.c.o) +rx_buffer_tail ../arduino_libs/core328p.a(wiring_serial.c.o) +sample obj/Release/main.o +serialAvailable ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +serialFlush ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +serialRead ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +serialWrite ../arduino_libs/core328p.a(wiring_serial.c.o) + ../arduino_libs/core328p.a(HardwareSerial.cpp.o) +sin /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a(sin.o) + obj/Release/main.o +vtable for HardwareSerial ../arduino_libs/core328p.a(HardwareSerial.cpp.o) diff --git a/electic_streaming328p/burn b/electic_streaming328p/burn new file mode 100755 index 0000000..232002e --- /dev/null +++ b/electic_streaming328p/burn @@ -0,0 +1 @@ +avrdude -p m328p -c arduino -P /dev/rfcomm0 -b 19200 -F -u -U flash:w:bin/Release/electic_streaming.elf.hex diff --git a/electic_streaming328p/electic_streaming328p.cbp b/electic_streaming328p/electic_streaming328p.cbp new file mode 100644 index 0000000..3989454 --- /dev/null +++ b/electic_streaming328p/electic_streaming328p.cbp @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="electic_streaming328p" /> + <Option pch_mode="2" /> + <Option compiler="avrgcc" /> + <Build> + <Target title="Debug"> + <Option output="bin/Debug/electic_streaming.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Debug/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-g" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin/Release/electic_streaming.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="obj/Release/" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-Os" /> + </Compiler> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-mmcu=atmega328p" /> + <Add option="-DF_CPU=16000000UL" /> + <Add directory="../arduinoSrc0022" /> + <Add directory="../arduino libs/NewSoftSerial" /> + </Compiler> + <Linker> + <Add option="-mmcu=atmega328p" /> + <Add option="-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref" /> + <Add library="../arduino_libs/core0022_328p.a" /> + </Linker> + <ExtraCommands> + <Add after="avr-size $(TARGET_OUTPUT_FILE)" /> + <Add after="avr-objcopy -O ihex -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).hex" /> + <Add after="avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.hex" /> + <Add after="avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_FILE).lss" /> + <Add after="./burn" /> + </ExtraCommands> + <Unit filename="../ArduinoLib328p/HardwareSerial.h" /> + <Unit filename="../ArduinoLib328p/Print.h" /> + <Unit filename="../ArduinoLib328p/Stream.h" /> + <Unit filename="../ArduinoLib328p/WCharacter.h" /> + <Unit filename="../ArduinoLib328p/WConstants.h" /> + <Unit filename="../ArduinoLib328p/WProgram.h" /> + <Unit filename="../ArduinoLib328p/WString.h" /> + <Unit filename="../ArduinoLib328p/binary.h" /> + <Unit filename="../ArduinoLib328p/pins_arduino.h" /> + <Unit filename="../ArduinoLib328p/wiring.h" /> + <Unit filename="../ArduinoLib328p/wiring_private.h" /> + <Unit filename="main.cpp" /> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + <lib_finder disable_auto="1" /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/electic_streaming328p/electic_streaming328p.depend b/electic_streaming328p/electic_streaming328p.depend new file mode 100644 index 0000000..983075d --- /dev/null +++ b/electic_streaming328p/electic_streaming328p.depend @@ -0,0 +1,43 @@ +# depslib dependency file v1.0 +1319455566 source:/home/tim/workspace/electic_AVR/electic_streaming328p/main.cpp + <WProgram.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WProgram.h + <stdlib.h> + <string.h> + <math.h> + <avr/interrupt.h> + "wiring.h" + "WCharacter.h" + "WString.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.h + <avr/io.h> + <stdlib.h> + "binary.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/binary.h + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WCharacter.h + <ctype.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WString.h + <stdlib.h> + <string.h> + <ctype.h> + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.h + <inttypes.h> + "Stream.h" + "usb_api.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Stream.h + <inttypes.h> + "Print.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Print.h + <inttypes.h> + <stdio.h> + "WString.h" + diff --git a/electic_streaming328p/electic_streaming328p.layout b/electic_streaming328p/electic_streaming328p.layout new file mode 100644 index 0000000..7f7e0e5 --- /dev/null +++ b/electic_streaming328p/electic_streaming328p.layout @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <ActiveTarget name="Debug" /> + <File name="main.cpp" open="1" top="1" tabpos="0"> + <Cursor position="442" topLine="0" /> + </File> +</CodeBlocks_layout_file> diff --git a/electic_streaming328p/main.c b/electic_streaming328p/main.c new file mode 100644 index 0000000..5cdf3a6 --- /dev/null +++ b/electic_streaming328p/main.c @@ -0,0 +1,83 @@ +/* test streaming sample data + * bluetooth + * TJR 141011 + + want: 1 second + 16M / 1024 prescale = + + */ + +#include <stdlib.h> +#include <avr/io.h> +#include <avr/interrupt.h> +//include <avr/signal.h> +#include <avr/pgmspace.h> + +#include <math.h> + +#include "uart.h" + +//#include "HardwareSerial.h" + +#define SAMPLES 512 + +#ifndef F_CPU +#define F_CPU 16000000UL +#endif +#define UART_BAUD_RATE 57600 + +//unsigned char dd[SAMPLES]; // ram buffer +int enabled=0; +int loopCount=0; +int sample=0; + +int main(void) +{ + Serial.begin(57600); + + //uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); + DDRB |= (1 << 5); // port B bit 6 = arduino pin 13 + PORTB = (1 << 5); //turn on to start + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + OCR1A = 1562; // Set CTC compare value to 1Hz at 1MHz AVR clock, with a prescaler of 64 + sei(); // Enable global interrupts + TCCR1B |= ((1<<CS10)|(1 << CS12)); // Set up timer at Fcpu/1024 + //fill_sinewave(); + unsigned int c; + /* while(1) { + c = uart_getc(); + if (!( c & UART_NO_DATA )) + { + uart_putc( (unsigned char)c ); + if ((unsigned char)c=="a") { + uart_puts_P("Welcome to electic"); + enabled=1; + } + } + } + */ +} + +ISR(TIMER1_COMPA_vect) +{ + if (enabled) PORTB ^= (1 << 5); + +} +/* +void fill_sinewave(){ + float pi = 3.141592; + float fcnt=0; + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + int bb; +http://www.johnhenryshammer.com/WOW2/pagesHowTo/atmelPage.php#index for (int i = 0; i <= (SAMPLES-1); i++){ // with 50 periods sinewawe + fd= 127*sin(fcnt); // fundamental tone + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + bb=127+fd; // add dc offset to sinewawe + dd[i]=bb; // write value into array + + } +} +*/ + diff --git a/electic_streaming328p/main.cpp b/electic_streaming328p/main.cpp new file mode 100644 index 0000000..71c276e --- /dev/null +++ b/electic_streaming328p/main.cpp @@ -0,0 +1,80 @@ +extern "C" void __cxa_pure_virtual(void); //for C++ defines + +/* +Electric data access template + +TJR 191011 + +Uses Arduino c++ libraries in vanilla AVR environment + +Explanation +http://www.johnhenryshammer.com/WOW2/pagesHowTo/atmelPage.php#index + +*/ +#define SAMPLES 512 //size of ram buffer +#define PACKETSIZE 320 //size of output packet + +#include <WProgram.h> //import main Arduino header file + + +byte dd[SAMPLES]; // ram buffer +int loopCount=0; +int sample=0; + +void fill_sinewave(){ + /* + sample data to stream + the vital thing is that its possible to distinguish the end of a packet + + here the data is in the range 1-255 and a 0 denotes the end of the packet + */ + float pi = 3.141592; + float fcnt=0; + float fd; + float dx=2 * pi / SAMPLES; // fill the 512 byte bufferarry + int bb; + for (int i = 0; i <SAMPLES ; i++){ // with 50 periods sinewawe + fd= 127*sin(fcnt); // fundamental tone + fcnt=fcnt+dx; // in the range of 0 to 2xpi and 1/512 increments + bb=128+fd; // add dc offset to sinewawe + dd[i]=bb; // write value into array + } +} + +int main(){ + + //init(); -- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + fill_sinewave(); + Serial.begin(115200); + + DDRB |= (1 << 5); // port B bit 6 = arduino pin 13 + PORTB = (1 << 5); //turn on to start + TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode + TIMSK1 |= (1 << OCIE1A); // Enable CTC interrupt + OCR1A = 390; // Set CTC compare value: final speed = CPU clocks / prescaler / CTC 15625=1Hz + sei(); // Enable global interrupts + + while(1) { + if (Serial.available() > 0) { + PORTB ^= (1 << 5); + byte in=Serial.read(); + if (in=='a') { + Serial.println("Welcome to electic"); + TCCR1B |= ((1<<CS10)|(1 << CS12)); // Set up timer at Fcpu/1024 + } + } + } +} + +ISR(TIMER1_COMPA_vect) +{ + //if (enabled) + PORTB ^= (1 << 5); + for (int i=0;i<PACKETSIZE;i++) { + Serial.write(dd[sample]); + sample=(sample+1)%SAMPLES; + } + Serial.write((byte)0); +} + + diff --git a/electic_streaming328p/obj/Debug/main.o b/electic_streaming328p/obj/Debug/main.o Binary files differnew file mode 100644 index 0000000..5b8339e --- /dev/null +++ b/electic_streaming328p/obj/Debug/main.o diff --git a/electic_streaming328p/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o b/electic_streaming328p/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o Binary files differnew file mode 100644 index 0000000..ea6ef49 --- /dev/null +++ b/electic_streaming328p/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o diff --git a/electic_streaming328p/obj/Release/main.o b/electic_streaming328p/obj/Release/main.o Binary files differnew file mode 100644 index 0000000..17796a5 --- /dev/null +++ b/electic_streaming328p/obj/Release/main.o diff --git a/electic_streaming328p/obj/Release/uart.o b/electic_streaming328p/obj/Release/uart.o Binary files differnew file mode 100644 index 0000000..6401727 --- /dev/null +++ b/electic_streaming328p/obj/Release/uart.o diff --git a/electic_streaming328p/uart.c b/electic_streaming328p/uart.c new file mode 100644 index 0000000..6034070 --- /dev/null +++ b/electic_streaming328p/uart.c @@ -0,0 +1,651 @@ +/*************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.c,v 1.6.2.2 2009/11/29 08:56:12 Peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4.6 or higher
+Hardware: any AVR with built-in UART,
+License: GNU General Public License
+
+DESCRIPTION:
+ An interrupt is generated when the UART has finished transmitting or
+ receiving a byte. The interrupt handling routines use circular buffers
+ for buffering received and transmitted data.
+
+ The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE variables define
+ the buffer size in bytes. Note that these variables must be a
+ power of 2.
+
+USAGE:
+ Refere to the header file uart.h for a description of the routines.
+ See also example test_uart.c.
+
+NOTES:
+ Based on Atmel Application Note AVR306
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+*************************************************************************/
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+#include "uart.h"
+
+
+/*
+ * constants and macros
+ */
+
+/* size of RX/TX buffers */
+#define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1)
+#define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1)
+
+#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK )
+#error RX buffer size is not a power of 2
+#endif
+#if ( UART_TX_BUFFER_SIZE & UART_TX_BUFFER_MASK )
+#error TX buffer size is not a power of 2
+#endif
+
+#if defined(__AVR_AT90S2313__) \
+ || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \
+ || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \
+ || defined(__AVR_ATmega103__)
+ /* old AVR classic or ATmega103 with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS USR
+ #define UART0_CONTROL UCR
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__)
+ /* old AVR classic with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \
+ || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) \
+ || defined(__AVR_ATmega323__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega163__)
+ /* ATmega163 with one UART */
+ #define ATMEGA_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega162__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_UART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_UART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_UART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega161__)
+ /* ATmega with UART */
+ #error "AVR ATmega161 currently not supported by this libaray !"
+#elif defined(__AVR_ATmega169__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATtiny2313__)
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RX
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_UDRE
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega329__) ||defined(__AVR_ATmega3290__) ||\
+ defined(__AVR_ATmega649__) ||defined(__AVR_ATmega6490__) ||\
+ defined(__AVR_ATmega325__) ||defined(__AVR_ATmega3250__) ||\
+ defined(__AVR_ATmega645__) ||defined(__AVR_ATmega6450__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega640__)
+/* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega644__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega644P__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#else
+ #error "no UART definition for MCU available"
+#endif
+
+
+/*
+ * module global variables
+ */
+static volatile unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART_TxHead;
+static volatile unsigned char UART_TxTail;
+static volatile unsigned char UART_RxHead;
+static volatile unsigned char UART_RxTail;
+static volatile unsigned char UART_LastRxError;
+
+#if defined( ATMEGA_USART1 )
+static volatile unsigned char UART1_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART1_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART1_TxHead;
+static volatile unsigned char UART1_TxTail;
+static volatile unsigned char UART1_RxHead;
+static volatile unsigned char UART1_RxTail;
+static volatile unsigned char UART1_LastRxError;
+#endif
+
+
+
+SIGNAL(UART0_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART Receive Complete interrupt
+Purpose: called when the UART has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART0_STATUS;
+ data = UART0_DATA;
+
+ /* */
+#if defined( AT90_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART0 )
+ lastRxError = (usr & (_BV(FE0)|_BV(DOR0)) );
+#elif defined ( ATMEGA_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#endif
+
+ /* calculate buffer index */
+ tmphead = ( UART_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART_RxHead = tmphead;
+ /* store received data in buffer */
+ UART_RxBuf[tmphead] = data;
+ }
+ UART_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART0_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART Data Register Empty interrupt
+Purpose: called when the UART is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART_TxHead != UART_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART0_CONTROL &= ~_BV(UART0_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart_init()
+Purpose: initialize UART and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart_init(unsigned int baudrate)
+{
+ UART_TxHead = 0;
+ UART_TxTail = 0;
+ UART_RxHead = 0;
+ UART_RxTail = 0;
+
+#if defined( AT90_UART )
+ /* set baud rate */
+ UBRR = (unsigned char)baudrate;
+
+ /* enable UART receiver and transmmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
+
+#elif defined (ATMEGA_USART)
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRH = (unsigned char)(baudrate>>8);
+ UBRRL = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL
+ UCSRC = (1<<URSEL)|(3<<UCSZ0);
+ #else
+ UCSRC = (3<<UCSZ0);
+ #endif
+
+#elif defined (ATMEGA_USART0 )
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X0); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR0H = (unsigned char)(baudrate>>8);
+ UBRR0L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL0
+ UCSR0C = (1<<URSEL0)|(3<<UCSZ00);
+ #else
+ UCSR0C = (3<<UCSZ00);
+ #endif
+
+#elif defined ( ATMEGA_UART )
+ /* set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRHI = (unsigned char)(baudrate>>8);
+ UBRR = (unsigned char) baudrate;
+
+ /* Enable UART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+#endif
+
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART_RxHead == UART_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART_RxBuf[tmptail];
+
+ return (UART_LastRxError << 8) + data;
+
+}/* uart_getc */
+
+
+/*************************************************************************
+Function: uart_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART_TxBuf[tmphead] = data;
+ UART_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART0_CONTROL |= _BV(UART0_UDRIE);
+
+}/* uart_putc */
+
+
+/*************************************************************************
+Function: uart_puts()
+Purpose: transmit string to UART
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts(const char *s )
+{
+ while (*s)
+ uart_putc(*s++);
+
+}/* uart_puts */
+
+
+/*************************************************************************
+Function: uart_puts_p()
+Purpose: transmit string from program memory to UART
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart_putc(c);
+
+}/* uart_puts_p */
+
+
+/*
+ * these functions are only for ATmegas with two USART
+ */
+#if defined( ATMEGA_USART1 )
+
+SIGNAL(UART1_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART1 Receive Complete interrupt
+Purpose: called when the UART1 has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART1_STATUS;
+ data = UART1_DATA;
+
+ /* */
+ lastRxError = (usr & (_BV(FE1)|_BV(DOR1)) );
+
+ /* calculate buffer index */
+ tmphead = ( UART1_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART1_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART1_RxHead = tmphead;
+ /* store received data in buffer */
+ UART1_RxBuf[tmphead] = data;
+ }
+ UART1_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART1_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART1 Data Register Empty interrupt
+Purpose: called when the UART1 is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART1_TxHead != UART1_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART1_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART1_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART1_CONTROL &= ~_BV(UART1_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart1_init()
+Purpose: initialize UART1 and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart1_init(unsigned int baudrate)
+{
+ UART1_TxHead = 0;
+ UART1_TxTail = 0;
+ UART1_RxHead = 0;
+ UART1_RxTail = 0;
+
+
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART1_STATUS = (1<<U2X1); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR1H = (unsigned char)(baudrate>>8);
+ UBRR1L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART1_CONTROL = _BV(RXCIE1)|(1<<RXEN1)|(1<<TXEN1);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL1
+ UCSR1C = (1<<URSEL1)|(3<<UCSZ10);
+ #else
+ UCSR1C = (3<<UCSZ10);
+ #endif
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart1_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart1_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART1_RxHead == UART1_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART1_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART1_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART1_RxBuf[tmptail];
+
+ return (UART1_LastRxError << 8) + data;
+
+}/* uart1_getc */
+
+
+/*************************************************************************
+Function: uart1_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART1_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART1_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART1_TxBuf[tmphead] = data;
+ UART1_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART1_CONTROL |= _BV(UART1_UDRIE);
+
+}/* uart1_putc */
+
+
+/*************************************************************************
+Function: uart1_puts()
+Purpose: transmit string to UART1
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts(const char *s )
+{
+ while (*s)
+ uart1_putc(*s++);
+
+}/* uart1_puts */
+
+
+/*************************************************************************
+Function: uart1_puts_p()
+Purpose: transmit string from program memory to UART1
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart1_putc(c);
+
+}/* uart1_puts_p */
+
+
+#endif
diff --git a/electic_streaming328p/uart.h b/electic_streaming328p/uart.h new file mode 100644 index 0000000..579c77d --- /dev/null +++ b/electic_streaming328p/uart.h @@ -0,0 +1,195 @@ +#ifndef UART_H
+#define UART_H
+/************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.h,v 1.8.2.1 2007/07/01 11:14:38 peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4
+Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz
+License: GNU General Public License
+Usage: see Doxygen manual
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+************************************************************************/
+
+/**
+ * @defgroup pfleury_uart UART Library
+ * @code #include <uart.h> @endcode
+ *
+ * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers.
+ *
+ * This library can be used to transmit and receive data through the built in UART.
+ *
+ * An interrupt is generated when the UART has finished transmitting or
+ * receiving a byte. The interrupt handling routines use circular buffers
+ * for buffering received and transmitted data.
+ *
+ * The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define
+ * the size of the circular buffers in bytes. Note that these constants must be a power of 2.
+ * You may need to adapt this constants to your target and your application by adding
+ * CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile.
+ *
+ * @note Based on Atmel Application Note AVR306
+ * @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury
+ */
+
+/**@{*/
+
+
+#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
+#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
+#endif
+
+
+/*
+** constants and macros
+*/
+
+/** @brief UART Baudrate Expression
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)
+
+/** @brief UART Baudrate Expression for ATmega double speed mode
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000)
+
+
+/** Size of the circular receive buffer, must be power of 2 */
+#ifndef UART_RX_BUFFER_SIZE
+#define UART_RX_BUFFER_SIZE 32
+#endif
+/** Size of the circular transmit buffer, must be power of 2 */
+#ifndef UART_TX_BUFFER_SIZE
+#define UART_TX_BUFFER_SIZE 32
+#endif
+
+/* test if the size of the circular buffers fits into SRAM */
+#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) )
+#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM"
+#endif
+
+/*
+** high byte error return code of uart_getc()
+*/
+#define UART_FRAME_ERROR 0x0800 /* Framing Error by UART */
+#define UART_OVERRUN_ERROR 0x0400 /* Overrun condition by UART */
+#define UART_BUFFER_OVERFLOW 0x0200 /* receive ringbuffer overflow */
+#define UART_NO_DATA 0x0100 /* no receive data available */
+
+
+/*
+** function prototypes
+*/
+
+/**
+ @brief Initialize UART and set baudrate
+ @param baudrate Specify baudrate using macro UART_BAUD_SELECT()
+ @return none
+*/
+extern void uart_init(unsigned int baudrate);
+
+
+/**
+ * @brief Get received byte from ringbuffer
+ *
+ * Returns in the lower byte the received character and in the
+ * higher byte the last receive error.
+ * UART_NO_DATA is returned when no data is available.
+ *
+ * @param void
+ * @return lower byte: received byte from ringbuffer
+ * @return higher byte: last receive status
+ * - \b 0 successfully received data from UART
+ * - \b UART_NO_DATA
+ * <br>no receive data available
+ * - \b UART_BUFFER_OVERFLOW
+ * <br>Receive ringbuffer overflow.
+ * We are not reading the receive buffer fast enough,
+ * one or more received character have been dropped
+ * - \b UART_OVERRUN_ERROR
+ * <br>Overrun condition by UART.
+ * A character already present in the UART UDR register was
+ * not read by the interrupt handler before the next character arrived,
+ * one or more received characters have been dropped.
+ * - \b UART_FRAME_ERROR
+ * <br>Framing Error by UART
+ */
+extern unsigned int uart_getc(void);
+
+
+/**
+ * @brief Put byte to ringbuffer for transmitting via UART
+ * @param data byte to be transmitted
+ * @return none
+ */
+extern void uart_putc(unsigned char data);
+
+
+/**
+ * @brief Put string to ringbuffer for transmitting via UART
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s string to be transmitted
+ * @return none
+ */
+extern void uart_puts(const char *s );
+
+
+/**
+ * @brief Put string from program memory to ringbuffer for transmitting via UART.
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s program memory string to be transmitted
+ * @return none
+ * @see uart_puts_P
+ */
+extern void uart_puts_p(const char *s );
+
+/**
+ * @brief Macro to automatically put a string constant into program memory
+ */
+#define uart_puts_P(__s) uart_puts_p(PSTR(__s))
+
+
+
+/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */
+extern void uart1_init(unsigned int baudrate);
+/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */
+extern unsigned int uart1_getc(void);
+/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */
+extern void uart1_putc(unsigned char data);
+/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */
+extern void uart1_puts(const char *s );
+/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */
+extern void uart1_puts_p(const char *s );
+/** @brief Macro to automatically put a string constant into program memory */
+#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s))
+
+/**@}*/
+
+
+#endif +// UART_H
+
diff --git a/pyBTlatency/data.csv b/pyBTlatency/data.csv new file mode 100644 index 0000000..1504122 --- /dev/null +++ b/pyBTlatency/data.csv @@ -0,0 +1,273 @@ +1,30.3130149841 +2,30.266046524 +3,18.2421207428 +4,26.2129306793 +5,14.181137085 +6,14.1448974609 +7,22.0949649811 +8,22.0680236816 +9,34.1081619263 +10,26.113986969 +11,14.007806778 +12,13.9241218567 +13,37.878036499 +14,26.3149738312 +15,29.8190116882 +16,33.7929725647 +17,29.7651290894 +18,29.7210216522 +19,37.693977356 +20,21.6670036316 +21,25.6350040436 +22,21.6040611267 +23,33.6339473724 +24,37.5781059265 +25,33.497095108 +26,33.5021018982 +27,29.8700332642 +28,17.4090862274 +29,25.6390571594 +30,25.3450870514 +31,33.3127975464 +32,21.3208198547 +33,21.2409496307 +34,21.2080478668 +35,17.1990394592 +36,17.1542167664 +37,29.5670032501 +38,25.0899791718 +39,21.0540294647 +40,21.0130214691 +41,32.9830646515 +42,32.9620838165 +43,32.9170227051 +44,32.8879356384 +45,28.8469791412 +46,12.8281116486 +47,36.7929935455 +48,36.7569923401 +49,25.2001285553 +50,36.7019176483 +51,32.6690673828 +52,16.6251659393 +53,16.4601802826 +54,40.44008255 +55,24.4138240814 +56,20.3850269318 +57,20.4360485077 +58,20.3251838684 +59,20.2879905701 +60,16.2439346313 +61,12.1982097626 +62,40.1718616486 +63,36.1449718475 +64,32.0980548859 +65,36.0779762268 +66,32.0618152618 +67,31.9979190826 +68,15.9630775452 +69,27.9338359833 +70,27.909040451 +71,23.8749980927 +72,19.6979045868 +73,15.6791210175 +74,19.6318626404 +75,19.5999145508 +76,15.5699253082 +77,27.8098583221 +78,27.5139808655 +79,27.4858474731 +80,27.4469852448 +81,47.413110733 +82,27.4319648743 +83,31.3360691071 +84,31.289100647 +85,27.2679328918 +86,11.2209320068 +87,15.1789188385 +88,15.1429176331 +89,23.1158733368 +90,43.0879592896 +91,15.0589942932 +92,19.012928009 +93,18.9869403839 +94,14.9610042572 +95,26.9198417664 +96,26.8959999084 +97,26.8709659576 +98,27.1520614624 +99,34.8029136658 +100,30.7700634003 +101,30.7288169861 +102,30.7869911194 +103,26.6790390015 +104,14.6460533142 +105,14.6119594574 +106,10.5571746826 +107,38.52891922 +108,22.4850177765 +109,18.4650421143 +110,18.4240341187 +111,14.6698951721 +112,14.3640041351 +113,22.2890377045 +114,26.2551307678 +115,22.5651264191 +116,22.2029685974 +117,34.1799259186 +118,30.1148891449 +119,18.1159973145 +120,18.5198783875 +121,14.0218734741 +122,25.9819030762 +123,21.9371318817 +124,18.2650089264 +125,17.865896225 +126,29.846906662 +127,29.7980308533 +128,29.767036438 +129,37.7280712128 +130,37.7049446106 +131,25.6690979004 +132,25.6311893463 +133,21.5921401978 +134,21.586894989 +135,33.5450172424 +136,29.4809341431 +137,25.4421234131 +138,25.4051685333 +139,25.3939628601 +140,33.3528518677 +141,37.3191833496 +142,37.2848510742 +143,33.2579612732 +144,17.1318054199 +145,13.1001472473 +146,13.1058692932 +147,37.0061397552 +148,36.9720458984 +149,21.1579799652 +150,21.5148925781 +151,28.8708209991 +152,28.8369655609 +153,16.8070793152 +154,16.7751312256 +155,12.7379894257 +156,12.7182006836 +157,36.6802215576 +158,24.6520042419 +159,16.6220664978 +160,16.5860652924 +161,16.6299343109 +162,24.5158672333 +163,28.4719467163 +164,28.4419059753 +165,24.4300365448 +166,20.3931331635 +167,28.3679962158 +168,32.3250293732 +169,28.2909870148 +170,16.2661075592 +171,32.2349071503 +172,24.206161499 +173,20.1749801636 +174,24.1351127625 +175,16.1159038544 +176,16.077041626 +177,16.0491466522 +178,15.9809589386 +179,11.9609832764 +180,23.9500999451 +181,27.8978347778 +182,23.866891861 +183,24.0590572357 +184,43.8001155853 +185,27.7750492096 +186,27.7662277222 +187,27.7001857758 +188,27.6761054993 +189,31.653881073 +190,23.6141681671 +191,23.5819816589 +192,19.5620059967 +193,39.6220684052 +194,11.4760398865 +195,15.4480934143 +196,11.4259719849 +197,15.3779983521 +198,27.3518562317 +199,35.3291034698 +200,35.2900028229 +201,31.2540531158 +202,19.2320346832 +203,19.1941261292 +204,19.5569992065 +205,27.5411605835 +206,23.1919288635 +207,35.0711345673 +208,35.0461006165 +209,17.5909996033 +210,17.5619125366 +211,33.5268974304 +212,33.4920883179 +213,13.4539604187 +214,33.4391593933 +215,33.4239006042 +216,17.3580646515 +217,21.3449001312 +218,21.2988853455 +219,17.2870159149 +220,29.2420387268 +221,25.2139568329 +222,25.1939296722 +223,21.1520195007 +224,21.1160182953 +225,33.0967903137 +226,33.0729484558 +227,33.0522060394 +228,29.0069580078 +229,29.0150642395 +230,24.8689651489 +231,24.8470306396 +232,32.8149795532 +233,32.7858924866 +234,16.7510509491 +235,32.723903656 +236,28.7230014801 +237,24.6651172638 +238,36.6241931915 +239,24.7559547424 +240,16.6809558868 +241,20.5368995667 +242,32.4828624725 +243,28.4669399261 +244,32.4280261993 +245,12.3970508575 +246,12.3620033264 +247,32.3278903961 +248,20.3189849854 +249,28.265953064 +250,32.2458744049 +251,32.2079658508 +252,20.1652050018 +253,28.1429290771 +254,28.2340049744 +255,24.2369174957 +256,36.1320972443 +257,16.0238742828 +258,19.9890136719 +259,19.9639797211 +260,15.8739089966 +261,15.8429145813 +262,15.8050060272 +263,39.7820472717 +264,35.8531475067 +265,19.7279453278 +266,11.6970539093 +267,31.6641330719 +268,31.6400527954 +269,15.615940094 +270,23.5850811005 +271,27.5309085846 +272,23.5090255737 +273,23.4949588776 diff --git a/pyBTlatency/pyBTlatency.py b/pyBTlatency/pyBTlatency.py new file mode 100755 index 0000000..c80a77b --- /dev/null +++ b/pyBTlatency/pyBTlatency.py @@ -0,0 +1,53 @@ +#!/usr/bin/python + +import time +import serial +import signal +import sys, csv + +readings=[] +f=open('data.csv','w') + + +serIn = serial.Serial( + port='/dev/rfcomm0', + baudrate=38400 +) +serOut = serial.Serial( + port='/dev/ttyUSB0', + baudrate=9600 +) + +def signal_handler(signal, frame): + total=0 + for i in readings: + total+=i; + print len(readings),"readings, average:",(total/len(readings))*1000,"ms" + serOut.close() + serIn.close() + f.close() + sys.exit(0) + +signal.signal(signal.SIGINT, signal_handler) +tStart=time.time() +serIn.write('a') +while time.time()-tStart<2.0: + if serIn.inWaiting() >0: + print serIn.read() + +while 1: + #print "testing.." + finished = False + serOut.write("0") + tStart=time.time() + while time.time()-tStart<1.0: + if serIn.inWaiting() >0: + r=time.time()-tStart + readings.append(r) + i=serIn.read() + print i,r*1000,"ms" + f.write(str(len(readings))+","+str(r*1000)+"\n") + #time.sleep(1000) + + +
\ No newline at end of file diff --git a/pyBTlatency/pySerialGraph.py b/pyBTlatency/pySerialGraph.py new file mode 100755 index 0000000..61b2ed9 --- /dev/null +++ b/pyBTlatency/pySerialGraph.py @@ -0,0 +1,64 @@ +#!/usr/bin/python + +import time +import serial +import signal +import sys, csv +import pygame + +class Serial(serial.PosixSerial,serial.FileLike): + #workaround for python 2.6 seriall behavior, http://code.google.com/p/python-on-a-chip/issues/detail?id=110 + pass + +ser = Serial( + port='/dev/ttyUSB0', + baudrate=115200, +) + +def signal_handler(signal, frame): + print "closing serial port" + ser.close() + sys.exit(0) + +signal.signal(signal.SIGINT, signal_handler) +tStart=time.time() +waiting=True +print "Starting..." +while waiting: + ser.write('a') #start comms + time.sleep(0.1); + while time.time()-tStart<1.0 and waiting : + if ser.inWaiting() >0: + print ser.readline() + waiting=False + time.sleep(0.1); + if waiting: + print "Timeout,restarting..." + tStart=time.time() +window = pygame.display.set_mode((640, 512)) +y=127 +times=[] +tSec=40; +while 1: + if ser.inWaiting() >0: + i=ser.readline(eol=chr(0)) + #print "received packet:",len(i),"bytes" + pygame.draw.rect(window,(0,0,0),(0,0, 640,512)) + for x in range(0,len(i)-1): #skip end char + y1=ord(i[x]) + pygame.draw.line(window, (255, 255, 255), (x*2, y*2), ((x*2)+2, y1*2)) + y=y1 + + tNow=time.time(); + times.append(tNow-tStart); + tStart=tNow + if len(times)>320: + times.pop(0) + for x in range(0,len(times)-1): #skip end char + pygame.draw.line(window, (255, 0, 0), (x*2, 512-(255*times[x]*tSec)), ((x*2)+2, 512-(255*times[x]*tSec)) ) + pygame.display.flip() + + time.sleep(0.01) + + +
\ No newline at end of file diff --git a/pyDMM/pyDMM.py b/pyDMM/pyDMM.py new file mode 100755 index 0000000..0b77041 --- /dev/null +++ b/pyDMM/pyDMM.py @@ -0,0 +1,25 @@ +#!/usr/bin/python + +import time,serial,signal,sys,struct + +serIn = serial.Serial( + port='/dev/rfcomm0', + baudrate=38400 +) + +def signal_handler(signal, frame): + print "closing",serIn.port + serIn.close() + sys.exit(0) + +signal.signal(signal.SIGINT, signal_handler) +S=struct.Struct('<HIH') +while 1: + r=bytearray() + remaining=8 + while remaining > 0: + if serIn.inWaiting() >0: + r.extend(serIn.read()) + remaining=8-len(r) + #time.sleep(1) #doesn't work for some reason + print S.unpack_from(buffer(r)) diff --git a/pyDMM/pyRFCLIENT.py b/pyDMM/pyRFCLIENT.py new file mode 100755 index 0000000..33656c9 --- /dev/null +++ b/pyDMM/pyRFCLIENT.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +import signal,sys +from bluetooth import * + +# Create the client socket +client_socket=BluetoothSocket( RFCOMM ) +bt_addr = "00:18:E4:0C:68:08" #electic +#bt_addr = "00:18:E4:0B:F5:06" #herge-1 +bt_port = 1 +client_socket.connect((bt_addr,bt_port)) + +def signal_handler(signal, frame): + print "closing bluetooth" + client_socket.close() + sys.exit(0) + +signal.signal(signal.SIGINT, signal_handler) +S=struct.Struct('<HIH') +while(1): + data=bytearray() + while len(data) < 9: + data.extend(client_socket.recv(8)) + print S.unpack_from(buffer(data)) + #while 1: + # print client_socket.recv() diff --git a/pyDMM/pyRFSERVER.py b/pyDMM/pyRFSERVER.py new file mode 100755 index 0000000..a33f706 --- /dev/null +++ b/pyDMM/pyRFSERVER.py @@ -0,0 +1,30 @@ +#!/usr/bin/python +import time,signal,sys +from bluetooth import * + +server_socket=BluetoothSocket( RFCOMM ) + +server_socket.bind(("", 2 )) +server_socket.listen(1) + +def signal_handler(signal, frame): + print "closing bluetooth" + server_socket.close() + sys.exit(0) + +signal.signal(signal.SIGINT, signal_handler) + + +client_socket, address = server_socket.accept() + + +while 1: + client_socket.send("abcd") + time.sleep(0.5) + +#data = client_socket.recv(1024) + +#print "received [%s]" % data + +#client_socket.close() +#server_socket.close() diff --git a/pybluez/advanced/inquiry-with-rssi.py b/pybluez/advanced/inquiry-with-rssi.py new file mode 100644 index 0000000..814f7ed --- /dev/null +++ b/pybluez/advanced/inquiry-with-rssi.py @@ -0,0 +1,148 @@ +# performs a simple device inquiry, followed by a remote name request of each +# discovered device + +import os +import sys +import struct +import bluetooth._bluetooth as bluez + +def printpacket(pkt): + for c in pkt: + sys.stdout.write("%02x " % struct.unpack("B",c)[0]) + print + + +def read_inquiry_mode(sock): + """returns the current mode, or -1 on failure""" + # save current filter + old_filter = sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14) + + # Setup socket filter to receive only events related to the + # read_inquiry_mode command + flt = bluez.hci_filter_new() + opcode = bluez.cmd_opcode_pack(bluez.OGF_HOST_CTL, + bluez.OCF_READ_INQUIRY_MODE) + bluez.hci_filter_set_ptype(flt, bluez.HCI_EVENT_PKT) + bluez.hci_filter_set_event(flt, bluez.EVT_CMD_COMPLETE); + bluez.hci_filter_set_opcode(flt, opcode) + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, flt ) + + # first read the current inquiry mode. + bluez.hci_send_cmd(sock, bluez.OGF_HOST_CTL, + bluez.OCF_READ_INQUIRY_MODE ) + + pkt = sock.recv(255) + + status,mode = struct.unpack("xxxxxxBB", pkt) + if status != 0: mode = -1 + + # restore old filter + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, old_filter ) + return mode + +def write_inquiry_mode(sock, mode): + """returns 0 on success, -1 on failure""" + # save current filter + old_filter = sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14) + + # Setup socket filter to receive only events related to the + # write_inquiry_mode command + flt = bluez.hci_filter_new() + opcode = bluez.cmd_opcode_pack(bluez.OGF_HOST_CTL, + bluez.OCF_WRITE_INQUIRY_MODE) + bluez.hci_filter_set_ptype(flt, bluez.HCI_EVENT_PKT) + bluez.hci_filter_set_event(flt, bluez.EVT_CMD_COMPLETE); + bluez.hci_filter_set_opcode(flt, opcode) + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, flt ) + + # send the command! + bluez.hci_send_cmd(sock, bluez.OGF_HOST_CTL, + bluez.OCF_WRITE_INQUIRY_MODE, struct.pack("B", mode) ) + + pkt = sock.recv(255) + + status = struct.unpack("xxxxxxB", pkt)[0] + + # restore old filter + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, old_filter ) + if status != 0: return -1 + return 0 + +def device_inquiry_with_with_rssi(sock): + # save current filter + old_filter = sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14) + + # perform a device inquiry on bluetooth device #0 + # The inquiry should last 8 * 1.28 = 10.24 seconds + # before the inquiry is performed, bluez should flush its cache of + # previously discovered devices + flt = bluez.hci_filter_new() + bluez.hci_filter_all_events(flt) + bluez.hci_filter_set_ptype(flt, bluez.HCI_EVENT_PKT) + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, flt ) + + duration = 4 + max_responses = 255 + cmd_pkt = struct.pack("BBBBB", 0x33, 0x8b, 0x9e, duration, max_responses) + bluez.hci_send_cmd(sock, bluez.OGF_LINK_CTL, bluez.OCF_INQUIRY, cmd_pkt) + + results = [] + + done = False + while not done: + pkt = sock.recv(255) + ptype, event, plen = struct.unpack("BBB", pkt[:3]) + if event == bluez.EVT_INQUIRY_RESULT_WITH_RSSI: + pkt = pkt[3:] + nrsp = struct.unpack("B", pkt[0])[0] + for i in range(nrsp): + addr = bluez.ba2str( pkt[1+6*i:1+6*i+6] ) + rssi = struct.unpack("b", pkt[1+13*nrsp+i])[0] + results.append( ( addr, rssi ) ) + print "[%s] RSSI: [%d]" % (addr, rssi) + elif event == bluez.EVT_INQUIRY_COMPLETE: + done = True + elif event == bluez.EVT_CMD_STATUS: + status, ncmd, opcode = struct.unpack("BBH", pkt[3:7]) + if status != 0: + print "uh oh..." + printpacket(pkt[3:7]) + done = True + else: + print "unrecognized packet type 0x%02x" % ptype + + + # restore old filter + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, old_filter ) + + return results + +dev_id = 0 +try: + sock = bluez.hci_open_dev(dev_id) +except: + print "error accessing bluetooth device..." + sys.exit(1) + +try: + mode = read_inquiry_mode(sock) +except Exception, e: + print "error reading inquiry mode. " + print "Are you sure this a bluetooth 1.2 device?" + print e + sys.exit(1) +print "current inquiry mode is %d" % mode + +if mode != 1: + print "writing inquiry mode..." + try: + result = write_inquiry_mode(sock, 1) + except Exception, e: + print "error writing inquiry mode. Are you sure you're root?" + print e + sys.exit(1) + if result != 0: + print "error while setting inquiry mode" + print "result: %d" % result + +device_inquiry_with_with_rssi(sock) diff --git a/pybluez/advanced/l2-mtu.py b/pybluez/advanced/l2-mtu.py new file mode 100644 index 0000000..1ffe04c --- /dev/null +++ b/pybluez/advanced/l2-mtu.py @@ -0,0 +1,60 @@ +import sys +import struct +import bluetooth + +def usage(): + print "usage: l2-mtu < server | client > [options]" + print "" + print "l2-mtu server to start in server mode" + print "l2-mtu client <addr> to start in client mode and connect to addr" + sys.exit(2) + +if len(sys.argv) < 2: usage() + +mode = sys.argv[1] +if mode not in [ "client", "server" ]: usage() + +if mode == "server": + server_sock=bluetooth.BluetoothSocket( bluetooth.L2CAP ) + server_sock.bind(("",0x1001)) + server_sock.listen(1) + while True: + print "waiting for incoming connection" + client_sock,address = server_sock.accept() + print "Accepted connection from %s" % str(address) + + bluetooth.set_l2cap_mtu( client_sock, 65535 ) + + print "waiting for data" + total = 0 + while True: + try: + data = client_sock.recv(65535) + except bluetooth.BluetoothError, e: + break + if len(data) == 0: break + print "received packet of size %d" % len(data) + + client_sock.close() + + print "connection closed" + + server_sock.close() +else: + sock=bluetooth.BluetoothSocket(bluetooth.L2CAP) + + bt_addr = sys.argv[2] + print "trying to connect to %s:1001" % bt_addr + port = 0x1001 + sock.connect((bt_addr, port)) + + print "connected. Adjusting link parameters." + bluetooth.set_l2cap_mtu( sock, 65535 ) + + totalsent = 0 + for i in range(1, 65535, 100): + pkt = "0" * i + sent = sock.send(pkt) + print "sent packet of size %d (tried %d)" % (sent, len(pkt)) + + sock.close() diff --git a/pybluez/advanced/l2-unreliable-client.py b/pybluez/advanced/l2-unreliable-client.py new file mode 100644 index 0000000..5b10a48 --- /dev/null +++ b/pybluez/advanced/l2-unreliable-client.py @@ -0,0 +1,76 @@ +import sys +import fcntl +import struct +import array +import bluetooth +import bluetooth._bluetooth as bt # low level bluetooth wrappers. + +def __get_acl_conn_handle(sock, addr): + hci_fd = sock.fileno() + reqstr = struct.pack( "6sB17s", bt.str2ba(addr), bt.ACL_LINK, "\0" * 17) + request = array.array( "c", reqstr ) + fcntl.ioctl( hci_fd, bt.HCIGETCONNINFO, request, 1 ) + handle = struct.unpack("8xH14x", request.tostring())[0] + return handle + +def write_flush_timeout( addr, timeout ): + hci_sock = bt.hci_open_dev() + # get the ACL connection handle to the remote device + handle = __get_acl_conn_handle(hci_sock, addr) + pkt = struct.pack("HH", handle, bt.htobs(timeout)) + response = bt.hci_send_req(hci_sock, bt.OGF_HOST_CTL, + 0x0028, bt.EVT_CMD_COMPLETE, 3, pkt) + status = struct.unpack("B", response[0])[0] + rhandle = struct.unpack("H", response[1:3])[0] + assert rhandle == handle + assert status == 0 + +def read_flush_timeout( addr ): + hci_sock = bt.hci_open_dev() + # get the ACL connection handle to the remote device + handle = __get_acl_conn_handle(hci_sock, addr) + pkt = struct.pack("H", handle) + response = bt.hci_send_req(hci_sock, bt.OGF_HOST_CTL, + 0x0027, bt.EVT_CMD_COMPLETE, 5, pkt) + status = struct.unpack("B", response[0])[0] + rhandle = struct.unpack("H", response[1:3])[0] + assert rhandle == handle + assert status == 0 + fto = struct.unpack("H", response[3:5])[0] + return fto + +# Create the client socket +sock=bluetooth.BluetoothSocket(bluetooth.L2CAP) + +if len(sys.argv) < 4: + print "usage: l2capclient.py <addr> <timeout> <num_packets>" + print " address - device that l2-unreliable-server is running on" + print " timeout - wait timeout * 0.625ms before dropping unACK'd packets" + print " num_packets - number of 627-byte packets to send on connect" + sys.exit(2) + +bt_addr=sys.argv[1] +timeout = int(sys.argv[2]) +num_packets = int(sys.argv[3]) + +print "trying to connect to %s:1001" % bt_addr +port = 0x1001 +sock.connect((bt_addr, port)) + +print "connected. Adjusting link parameters." +print "current flush timeout is %d ms" % read_flush_timeout( bt_addr ) +try: + write_flush_timeout( bt_addr, timeout ) +except bt.error, e: + print "error setting flush timeout. are you sure you're superuser?" + print e + sys.exit(1) +print "new flush timeout is %d ms" % read_flush_timeout( bt_addr ) + +totalsent = 0 +for i in range(num_packets): + pkt = "0" * 672 + totalsent += sock.send(pkt) +print "sent %d bytes total" % totalsent + +sock.close() diff --git a/pybluez/advanced/l2-unreliable-server.py b/pybluez/advanced/l2-unreliable-server.py new file mode 100644 index 0000000..d827775 --- /dev/null +++ b/pybluez/advanced/l2-unreliable-server.py @@ -0,0 +1,34 @@ +import sys +import bluetooth + +if len(sys.argv) < 2: + print "usage: l2-unreliable-server" + sys.exit(2) + +timeout = int(sys.argv[1]) +assert timeout >= 0 + +server_sock=bluetooth.BluetoothSocket( bluetooth.L2CAP ) +server_sock.bind(("",0x1001)) +server_sock.listen(1) +while True: + print "waiting for incoming connection" + client_sock,address = server_sock.accept() + print "Accepted connection from %s" % str(address) + + print "waiting for data" + total = 0 + while True: + try: + data = client_sock.recv(1024) + except bluetooth.BluetoothError, e: + break + if len(data) == 0: break + total += len(data) + print "total byte read: %d" % total + + client_sock.close() + + print "connection closed" + +server_sock.close() diff --git a/pybluez/advanced/read-local-bdaddr.py b/pybluez/advanced/read-local-bdaddr.py new file mode 100644 index 0000000..410a681 --- /dev/null +++ b/pybluez/advanced/read-local-bdaddr.py @@ -0,0 +1,35 @@ +import os +import sys +import struct +import bluetooth._bluetooth as _bt + +def read_local_bdaddr(hci_sock): + old_filter = hci_sock.getsockopt( _bt.SOL_HCI, _bt.HCI_FILTER, 14) + flt = _bt.hci_filter_new() + opcode = _bt.cmd_opcode_pack(_bt.OGF_INFO_PARAM, + _bt.OCF_READ_BD_ADDR) + _bt.hci_filter_set_ptype(flt, _bt.HCI_EVENT_PKT) + _bt.hci_filter_set_event(flt, _bt.EVT_CMD_COMPLETE); + _bt.hci_filter_set_opcode(flt, opcode) + hci_sock.setsockopt( _bt.SOL_HCI, _bt.HCI_FILTER, flt ) + + _bt.hci_send_cmd(hci_sock, _bt.OGF_INFO_PARAM, _bt.OCF_READ_BD_ADDR ) + + pkt = hci_sock.recv(255) + + status,raw_bdaddr = struct.unpack("xxxxxxB6s", pkt) + assert status == 0 + + t = [ "%X" % ord(b) for b in raw_bdaddr ] + t.reverse() + bdaddr = ":".join(t) + + # restore old filter + hci_sock.setsockopt( _bt.SOL_HCI, _bt.HCI_FILTER, old_filter ) + return bdaddr + +if __name__ == "__main__": + dev_id = 0 + hci_sock = _bt.hci_open_dev(dev_id) + bdaddr = read_local_bdaddr(hci_sock) + print bdaddr diff --git a/pybluez/advanced/write-inquiry-scan.py b/pybluez/advanced/write-inquiry-scan.py new file mode 100644 index 0000000..54793b7 --- /dev/null +++ b/pybluez/advanced/write-inquiry-scan.py @@ -0,0 +1,90 @@ +import os +import sys +import struct +import bluetooth._bluetooth as bluez + +def read_inquiry_scan_activity(sock): + """returns the current inquiry scan interval and window, + or -1 on failure""" + # save current filter + old_filter = sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14) + + # Setup socket filter to receive only events related to the + # read_inquiry_mode command + flt = bluez.hci_filter_new() + opcode = bluez.cmd_opcode_pack(bluez.OGF_HOST_CTL, + bluez.OCF_READ_INQ_ACTIVITY) + bluez.hci_filter_set_ptype(flt, bluez.HCI_EVENT_PKT) + bluez.hci_filter_set_event(flt, bluez.EVT_CMD_COMPLETE); + bluez.hci_filter_set_opcode(flt, opcode) + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, flt ) + + # first read the current inquiry mode. + bluez.hci_send_cmd(sock, bluez.OGF_HOST_CTL, + bluez.OCF_READ_INQ_ACTIVITY ) + + pkt = sock.recv(255) + + status,interval,window = struct.unpack("!xxxxxxBHH", pkt) + interval = bluez.btohs(interval) + interval = (interval >> 8) | ( (interval & 0xFF) << 8 ) + window = (window >> 8) | ( (window & 0xFF) << 8 ) + if status != 0: mode = -1 + + # restore old filter + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, old_filter ) + return interval, window + +def write_inquiry_scan_activity(sock, interval, window): + """returns 0 on success, -1 on failure""" + # save current filter + old_filter = sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14) + + # Setup socket filter to receive only events related to the + # write_inquiry_mode command + flt = bluez.hci_filter_new() + opcode = bluez.cmd_opcode_pack(bluez.OGF_HOST_CTL, + bluez.OCF_WRITE_INQ_ACTIVITY) + bluez.hci_filter_set_ptype(flt, bluez.HCI_EVENT_PKT) + bluez.hci_filter_set_event(flt, bluez.EVT_CMD_COMPLETE); + bluez.hci_filter_set_opcode(flt, opcode) + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, flt ) + + # send the command! + bluez.hci_send_cmd(sock, bluez.OGF_HOST_CTL, + bluez.OCF_WRITE_INQ_ACTIVITY, struct.pack("HH", + interval, window) ) + + pkt = sock.recv(255) + + status = struct.unpack("xxxxxxB", pkt)[0] + + # restore old filter + sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, old_filter ) + if status != 0: return -1 + return 0 + +dev_id = 0 +try: + sock = bluez.hci_open_dev(dev_id) +except: + print "error accessing bluetooth device..." + sys.exit(1) + +try: + interval, window = read_inquiry_scan_activity(sock) +except Exception, e: + print "error reading inquiry scan activity. " + print e + sys.exit(1) +print "current inquiry scan interval: %d (0x%X) window: %d (0x%X)" % \ + (interval, interval, window, window) + +if len(sys.argv) == 3: + interval = int(sys.argv[1]) + window = int(sys.argv[2]) + print "target interval: %d window %d" % (interval, window) + write_inquiry_scan_activity(sock, interval, window) + interval, window = read_inquiry_scan_activity(sock) + print "current inquiry scan interval: %d (0x%X) window: %d (0x%X)" % \ + (interval, interval, window, window) diff --git a/pybluez/bluezchat/bluezchat.glade b/pybluez/bluezchat/bluezchat.glade new file mode 100644 index 0000000..b3f37eb --- /dev/null +++ b/pybluez/bluezchat/bluezchat.glade @@ -0,0 +1,138 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +<!--*- mode: xml -*--> +<glade-interface> + <widget class="GtkWindow" id="bluezchat_window"> + <property name="visible">True</property> + <property name="title" translatable="yes">bluez chat</property> + <property name="default_width">240</property> + <property name="default_height">320</property> + <signal name="delete_event" handler="gtk_main_quit"/> + <signal name="destroy_event" handler="gtk_main_quit"/> + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow3"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="devices_tv"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <signal name="cursor_changed" handler="on_devices_tv_cursor_changed"/> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <child> + <widget class="GtkButton" id="quit_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Quit</property> + <property name="use_underline">True</property> + <signal name="clicked" handler="on_quit_button_clicked"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="scan_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">S_can</property> + <property name="use_underline">True</property> + <signal name="clicked" handler="on_scan_button_clicked"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="chat_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Chat</property> + <property name="use_underline">True</property> + <signal name="clicked" handler="on_chat_button_clicked"/> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTextView" id="main_text"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">text:</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="input_tb"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="padding">3</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="send_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Send</property> + <property name="use_underline">True</property> + <signal name="clicked" handler="on_send_button_clicked"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + </widget> + </child> + </widget> +</glade-interface> diff --git a/pybluez/bluezchat/bluezchat.py b/pybluez/bluezchat/bluezchat.py new file mode 100755 index 0000000..5021eb3 --- /dev/null +++ b/pybluez/bluezchat/bluezchat.py @@ -0,0 +1,191 @@ +#!/usr/bin/python + +""" A simple graphical chat client to demonstrate the use of pybluez. + +Opens a l2cap socket and listens on PSM 0x1001 + +Provides the ability to scan for nearby bluetooth devices and establish chat +sessions with them. +""" + + +import os +import sys +import time + +import gtk +import gobject +import gtk.glade + +import bluetooth + +GLADEFILE="bluezchat.glade" + +# ***************** + +def alert(text, buttons=gtk.BUTTONS_NONE, type=gtk.MESSAGE_INFO): + md = gtk.MessageDialog(buttons=buttons, type=type) + md.label.set_text(text) + md.run() + md.destroy() + +class BluezChatGui: + def __init__(self): + self.main_window_xml = gtk.glade.XML(GLADEFILE, "bluezchat_window") + + # connect our signal handlers + dic = { "on_quit_button_clicked" : self.quit_button_clicked, + "on_send_button_clicked" : self.send_button_clicked, + "on_chat_button_clicked" : self.chat_button_clicked, + "on_scan_button_clicked" : self.scan_button_clicked, + "on_devices_tv_cursor_changed" : self.devices_tv_cursor_changed + } + + self.main_window_xml.signal_autoconnect(dic) + + # prepare the floor listbox + self.devices_tv = self.main_window_xml.get_widget("devices_tv") + self.discovered = gtk.ListStore(gobject.TYPE_STRING, + gobject.TYPE_STRING) + self.devices_tv.set_model(self.discovered) + renderer = gtk.CellRendererText() + column1=gtk.TreeViewColumn("addr", renderer, text=0) + column2=gtk.TreeViewColumn("name", renderer, text=1) + self.devices_tv.append_column(column1) + self.devices_tv.append_column(column2) + + self.quit_button = self.main_window_xml.get_widget("quit_button") + self.scan_button = self.main_window_xml.get_widget("scan_button") + self.chat_button = self.main_window_xml.get_widget("chat_button") + self.send_button = self.main_window_xml.get_widget("send_button") + self.main_text = self.main_window_xml.get_widget("main_text") + self.text_buffer = self.main_text.get_buffer() + + self.input_tb = self.main_window_xml.get_widget("input_tb") + + self.listed_devs = [] + + self.chat_button.set_sensitive(False) + + self.peers = {} + self.sources = {} + self.addresses = {} + + # the listening sockets + self.server_sock = None + +# --- gui signal handlers + + def quit_button_clicked(self, widget): + gtk.main_quit() + + def scan_button_clicked(self, widget): + self.quit_button.set_sensitive(False) + self.scan_button.set_sensitive(False) +# self.chat_button.set_sensitive(False) + + self.discovered.clear() + for addr, name in bluetooth.discover_devices (lookup_names = True): + self.discovered.append ((addr, name)) + + self.quit_button.set_sensitive(True) + self.scan_button.set_sensitive(True) +# self.chat_button.set_sensitive(True) + + def send_button_clicked(self, widget): + text = self.input_tb.get_text() + if len(text) == 0: return + + for addr, sock in self.peers.items(): + sock.send(text) + + self.input_tb.set_text("") + self.add_text("\nme - %s" % text) + + def chat_button_clicked(self, widget): + (model, iter) = self.devices_tv.get_selection().get_selected() + if iter is not None: + addr = model.get_value(iter, 0) + if addr not in self.peers: + self.add_text("\nconnecting to %s" % addr) + self.connect(addr) + else: + self.add_text("\nAlready connected to %s!" % addr) + + def devices_tv_cursor_changed(self, widget): + (model, iter) = self.devices_tv.get_selection().get_selected() + if iter is not None: + self.chat_button.set_sensitive(True) + else: + self.chat_button.set_sensitive(False) + +# --- network events + + def incoming_connection(self, source, condition): + sock, info = self.server_sock.accept() + address, psm = info + + self.add_text("\naccepted connection from %s" % str(address)) + + # add new connection to list of peers + self.peers[address] = sock + self.addresses[sock] = address + + source = gobject.io_add_watch (sock, gobject.IO_IN, self.data_ready) + self.sources[address] = source + return True + + def data_ready(self, sock, condition): + address = self.addresses[sock] + data = sock.recv(1024) + + if len(data) == 0: + self.add_text("\nlost connection with %s" % address) + gobject.source_remove(self.sources[address]) + del self.sources[address] + del self.peers[address] + del self.addresses[sock] + sock.close() + else: + self.add_text("\n%s - %s" % (address, str(data))) + return True + +# --- other stuff + + def cleanup(self): + self.hci_sock.close() + + def connect(self, addr): + sock = bluetooth.BluetoothSocket (bluetooth.L2CAP) + try: + sock.connect((addr, 0x1001)) + except bluez.error, e: + self.add_text("\n%s" % str(e)) + sock.close() + return + + self.peers[addr] = sock + source = gobject.io_add_watch (sock, gobject.IO_IN, self.data_ready) + self.sources[addr] = source + self.addresses[sock] = addr + + + def add_text(self, text): + self.text_buffer.insert(self.text_buffer.get_end_iter(), text) + + def start_server(self): + self.server_sock = bluetooth.BluetoothSocket (bluetooth.L2CAP) + self.server_sock.bind(("",0x1001)) + self.server_sock.listen(1) + + gobject.io_add_watch(self.server_sock, + gobject.IO_IN, self.incoming_connection) + + def run(self): + self.text_buffer.insert(self.text_buffer.get_end_iter(), "loading..") + self.start_server() + gtk.main() + +if __name__ == "__main__": + gui = BluezChatGui() + gui.run() diff --git a/pybluez/simple/asynchronous-inquiry.py b/pybluez/simple/asynchronous-inquiry.py new file mode 100644 index 0000000..abbd70c --- /dev/null +++ b/pybluez/simple/asynchronous-inquiry.py @@ -0,0 +1,65 @@ +# file: asynchronous-inquiry.py +# auth: Albert Huang <albert@csail.mit.edu> +# desc: demonstration of how to do asynchronous device discovery by subclassing +# the DeviceDiscoverer class +# $Id: asynchronous-inquiry.py 405 2006-05-06 00:39:50Z albert $ +# +# XXX Linux only (5/5/2006) + +import bluetooth +import select + +class MyDiscoverer(bluetooth.DeviceDiscoverer): + + def pre_inquiry(self): + self.done = False + + def device_discovered(self, address, device_class, name): + print "%s - %s" % (address, name) + + # get some information out of the device class and display it. + # voodoo magic specified at: + # + # https://www.bluetooth.org/foundry/assignnumb/document/baseband + major_classes = ( "Miscellaneous", + "Computer", + "Phone", + "LAN/Network Access point", + "Audio/Video", + "Peripheral", + "Imaging" ) + major_class = (device_class >> 8) & 0xf + if major_class < 7: + print " %s" % major_classes[major_class] + else: + print " Uncategorized" + + print " services:" + service_classes = ( (16, "positioning"), + (17, "networking"), + (18, "rendering"), + (19, "capturing"), + (20, "object transfer"), + (21, "audio"), + (22, "telephony"), + (23, "information")) + + for bitpos, classname in service_classes: + if device_class & (1 << (bitpos-1)): + print " %s" % classname + + def inquiry_complete(self): + self.done = True + +d = MyDiscoverer() +d.find_devices(lookup_names = True) + +readfiles = [ d, ] + +while True: + rfds = select.select( readfiles, [], [] )[0] + + if d in rfds: + d.process_event() + + if d.done: break diff --git a/pybluez/simple/inquiry.py b/pybluez/simple/inquiry.py new file mode 100644 index 0000000..8f77887 --- /dev/null +++ b/pybluez/simple/inquiry.py @@ -0,0 +1,17 @@ +# file: inquiry.py +# auth: Albert Huang <albert@csail.mit.edu> +# desc: performs a simple device inquiry followed by a remote name request of +# each discovered device +# $Id: inquiry.py 401 2006-05-05 19:07:48Z albert $ +# + +import bluetooth + +print "performing inquiry..." + +nearby_devices = bluetooth.discover_devices(lookup_names = True) + +print "found %d devices" % len(nearby_devices) + +for addr, name in nearby_devices: + print " %s - %s" % (addr, name) diff --git a/pybluez/simple/l2capclient.py b/pybluez/simple/l2capclient.py new file mode 100644 index 0000000..930e431 --- /dev/null +++ b/pybluez/simple/l2capclient.py @@ -0,0 +1,28 @@ +# file: l2capclient.py +# desc: Demo L2CAP client for bluetooth module. +# $Id: l2capclient.py 524 2007-08-15 04:04:52Z albert $ + +import sys +import bluetooth + +sock=bluetooth.BluetoothSocket(bluetooth.L2CAP) + +if len(sys.argv) < 2: + print "usage: l2capclient.py <addr>" + sys.exit(2) + +bt_addr=sys.argv[1] +port = 0x1001 + +print "trying to connect to %s on PSM 0x%X" % (bt_addr, port) + +sock.connect((bt_addr, port)) + +print "connected. type stuff" +while True: + data = raw_input() + if(len(data) == 0): break + sock.send(data) + +sock.close() + diff --git a/pybluez/simple/l2capserver.py b/pybluez/simple/l2capserver.py new file mode 100644 index 0000000..40ad7d6 --- /dev/null +++ b/pybluez/simple/l2capserver.py @@ -0,0 +1,32 @@ +# file: l2capclient.py +# desc: Demo L2CAP server for pybluez. +# $Id: l2capserver.py 524 2007-08-15 04:04:52Z albert $ + +import bluetooth + +server_sock=bluetooth.BluetoothSocket( bluetooth.L2CAP ) + +port = 0x1001 + +server_sock.bind(("",port)) +server_sock.listen(1) + +#uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ef" +#bluetooth.advertise_service( server_sock, "SampleServerL2CAP", +# service_id = uuid, +# service_classes = [ uuid ] +# ) + +client_sock,address = server_sock.accept() +print "Accepted connection from ",address + +data = client_sock.recv(1024) +print "Data received:", data + +while data: + client_sock.send('Echo =>' + data) + data = client_sock.recv(1024) + print "Data received:",data + +client_sock.close() +server_sock.close() diff --git a/pybluez/simple/rfcomm-client.py b/pybluez/simple/rfcomm-client.py new file mode 100644 index 0000000..4da12af --- /dev/null +++ b/pybluez/simple/rfcomm-client.py @@ -0,0 +1,45 @@ +# file: rfcomm-client.py +# auth: Albert Huang <albert@csail.mit.edu> +# desc: simple demonstration of a client application that uses RFCOMM sockets +# intended for use with rfcomm-server +# +# $Id: rfcomm-client.py 424 2006-08-24 03:35:54Z albert $ + +from bluetooth import * +import sys + +addr = None + +if len(sys.argv) < 2: + print "no device specified. Searching all nearby bluetooth devices for" + print "the SampleServer service" +else: + addr = sys.argv[1] + print "Searching for SampleServer on %s" % addr + +# search for the SampleServer service +uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee" +service_matches = find_service( uuid = uuid, address = addr ) + +if len(service_matches) == 0: + print "couldn't find the SampleServer service =(" + sys.exit(0) + +first_match = service_matches[0] +port = first_match["port"] +name = first_match["name"] +host = first_match["host"] + +print "connecting to \"%s\" on %s" % (name, host) + +# Create the client socket +sock=BluetoothSocket( RFCOMM ) +sock.connect((host, port)) + +print "connected. type stuff" +while True: + data = raw_input() + if len(data) == 0: break + sock.send(data) + +sock.close() diff --git a/pybluez/simple/rfcomm-server.py b/pybluez/simple/rfcomm-server.py new file mode 100644 index 0000000..1fb555f --- /dev/null +++ b/pybluez/simple/rfcomm-server.py @@ -0,0 +1,41 @@ +# file: rfcomm-server.py +# auth: Albert Huang <albert@csail.mit.edu> +# desc: simple demonstration of a server application that uses RFCOMM sockets +# +# $Id: rfcomm-server.py 518 2007-08-10 07:20:07Z albert $ + +from bluetooth import * + +server_sock=BluetoothSocket( RFCOMM ) +server_sock.bind(("",PORT_ANY)) +server_sock.listen(1) + +port = server_sock.getsockname()[1] + +uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee" + +advertise_service( server_sock, "SampleServer", + service_id = uuid, + service_classes = [ uuid, SERIAL_PORT_CLASS ], + profiles = [ SERIAL_PORT_PROFILE ], +# protocols = [ OBEX_UUID ] + ) + +print "Waiting for connection on RFCOMM channel %d" % port + +client_sock, client_info = server_sock.accept() +print "Accepted connection from ", client_info + +try: + while True: + data = client_sock.recv(1024) + if len(data) == 0: break + print "received [%s]" % data +except IOError: + pass + +print "disconnected" + +client_sock.close() +server_sock.close() +print "all done" diff --git a/pybluez/simple/sdp-browse.py b/pybluez/simple/sdp-browse.py new file mode 100644 index 0000000..9d24b7a --- /dev/null +++ b/pybluez/simple/sdp-browse.py @@ -0,0 +1,35 @@ +# file: sdp-browse.py +# auth: Albert Huang <albert@csail.mit.edu> +# desc: displays services being advertised on a specified bluetooth device +# $Id: sdp-browse.py 393 2006-02-24 20:30:15Z albert $ + +import sys +import bluetooth + +if len(sys.argv) < 2: + print "usage: sdp-browse <addr>" + print " addr can be a bluetooth address, \"localhost\", or \"all\"" + sys.exit(2) + +target = sys.argv[1] +if target == "all": target = None + +services = bluetooth.find_service(address=target) + +if len(services) > 0: + print "found %d services on %s" % (len(services), sys.argv[1]) + print +else: + print "no services found" + +for svc in services: + print "Service Name: %s" % svc["name"] + print " Host: %s" % svc["host"] + print " Description: %s" % svc["description"] + print " Provided By: %s" % svc["provider"] + print " Protocol: %s" % svc["protocol"] + print " channel/PSM: %s" % svc["port"] + print " svc classes: %s "% svc["service-classes"] + print " profiles: %s "% svc["profiles"] + print " service id: %s "% svc["service-id"] + print diff --git a/timer1/Makefile b/timer1/Makefile new file mode 100644 index 0000000..9b5504e --- /dev/null +++ b/timer1/Makefile @@ -0,0 +1,152 @@ +PRG = $(wildcard *.c) +OBJ = $(PRG:.c=.o) +#MCU_TARGET = at90s2313 +#MCU_TARGET = at90s2333 +#MCU_TARGET = at90s4414 +#MCU_TARGET = at90s4433 +#MCU_TARGET = at90s4434 +#MCU_TARGET = at90s8515 +#MCU_TARGET = at90s8535 +#MCU_TARGET = atmega128 +#MCU_TARGET = atmega1280 +#MCU_TARGET = atmega1281 +#MCU_TARGET = atmega1284p +#MCU_TARGET = atmega16 +#MCU_TARGET = atmega163 +#MCU_TARGET = atmega164p +#MCU_TARGET = atmega165 +#MCU_TARGET = atmega165p +#MCU_TARGET = atmega168 +MCU_TARGET = atmega328p +#MCU_TARGET = atmega169 +#MCU_TARGET = atmega169p +#MCU_TARGET = atmega2560 +#MCU_TARGET = atmega2561 +#MCU_TARGET = atmega32 +#MCU_TARGET = atmega324p +#MCU_TARGET = atmega325 +#MCU_TARGET = atmega3250 +#MCU_TARGET = atmega329 +#MCU_TARGET = atmega3290 +#MCU_TARGET = atmega48 +#MCU_TARGET = atmega64 +#MCU_TARGET = atmega640 +#MCU_TARGET = atmega644 +#MCU_TARGET = atmega644p +#MCU_TARGET = atmega645 +#MCU_TARGET = atmega6450 +#MCU_TARGET = atmega649 +#MCU_TARGET = atmega6490 +#MCU_TARGET = atmega8 +#MCU_TARGET = atmega8515 +#MCU_TARGET = atmega8535 +#MCU_TARGET = atmega88 +#MCU_TARGET = attiny2313 +#MCU_TARGET = attiny24 +#MCU_TARGET = attiny25 +#MCU_TARGET = attiny26 +#MCU_TARGET = attiny261 +#MCU_TARGET = attiny44 +#MCU_TARGET = attiny45 +#MCU_TARGET = attiny461 +#MCU_TARGET = attiny84 +#MCU_TARGET = attiny85 +#MCU_TARGET = attiny861 +OPTIMIZE = -O2 + +DEFS = +LIBS = + +# You should not have to change anything below here. + +CC = avr-gcc +AVRDUDE = avrdude +AVRDUDE_FLAGS = -p m328p -c arduino -P /dev/ttyUSB0 -b 57600 -F +AVRDUDE_WRITE_FLASH = -u -U flash:w:timer1.hex + + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) -std=c99 +override LDFLAGS = -Wl,-Map,$(PRG).map + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: $(PRG).elf lst text eeprom + +$(PRG).elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +# dependency: +#*.o: *.c + +clean: + rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak + rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) + +#burn: +# avrdude -p m328p -c arduino -P /dev/ttyUSB0 -b 57600 -F -u -U flash:w:timer1.hex + +lst: $(PRG).lst + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PRG).hex +bin: $(PRG).bin +srec: $(PRG).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +# Rules for building the .eeprom rom images + +eeprom: ehex ebin esrec + +ehex: $(PRG)_eeprom.hex +ebin: $(PRG)_eeprom.bin +esrec: $(PRG)_eeprom.srec + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ \ + || { echo empty $@ not generated; exit 0; } + +# Every thing below here is used by avr-libc's build system and can be ignored +# by the casual user. + +FIG2DEV = fig2dev +EXTRA_CLEAN_FILES = *.hex *.bin *.srec + +dox: eps png pdf + +eps: $(PRG).eps +png: $(PRG).png +pdf: $(PRG).pdf + +%.eps: %.fig + $(FIG2DEV) -L eps $< $@ + +%.pdf: %.fig + $(FIG2DEV) -L pdf $< $@ + +%.png: %.fig + $(FIG2DEV) -L png $< $@ diff --git a/timer1/burn b/timer1/burn new file mode 100755 index 0000000..04da938 --- /dev/null +++ b/timer1/burn @@ -0,0 +1 @@ +avrdude -p m328p -c arduino -P /dev/ttyUSB0 -b 57600 -F -u -U flash:w:timer1.hex diff --git a/timer1/uart.c b/timer1/uart.c new file mode 100644 index 0000000..6034070 --- /dev/null +++ b/timer1/uart.c @@ -0,0 +1,651 @@ +/*************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.c,v 1.6.2.2 2009/11/29 08:56:12 Peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4.6 or higher
+Hardware: any AVR with built-in UART,
+License: GNU General Public License
+
+DESCRIPTION:
+ An interrupt is generated when the UART has finished transmitting or
+ receiving a byte. The interrupt handling routines use circular buffers
+ for buffering received and transmitted data.
+
+ The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE variables define
+ the buffer size in bytes. Note that these variables must be a
+ power of 2.
+
+USAGE:
+ Refere to the header file uart.h for a description of the routines.
+ See also example test_uart.c.
+
+NOTES:
+ Based on Atmel Application Note AVR306
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+*************************************************************************/
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+#include "uart.h"
+
+
+/*
+ * constants and macros
+ */
+
+/* size of RX/TX buffers */
+#define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1)
+#define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1)
+
+#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK )
+#error RX buffer size is not a power of 2
+#endif
+#if ( UART_TX_BUFFER_SIZE & UART_TX_BUFFER_MASK )
+#error TX buffer size is not a power of 2
+#endif
+
+#if defined(__AVR_AT90S2313__) \
+ || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \
+ || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \
+ || defined(__AVR_ATmega103__)
+ /* old AVR classic or ATmega103 with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS USR
+ #define UART0_CONTROL UCR
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__)
+ /* old AVR classic with one UART */
+ #define AT90_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \
+ || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) \
+ || defined(__AVR_ATmega323__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega163__)
+ /* ATmega163 with one UART */
+ #define ATMEGA_UART
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega162__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_UART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_UART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_UART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega161__)
+ /* ATmega with UART */
+ #error "AVR ATmega161 currently not supported by this libaray !"
+#elif defined(__AVR_ATmega169__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATtiny2313__)
+ #define ATMEGA_USART
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RX
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_UDRE
+ #define UART0_STATUS UCSRA
+ #define UART0_CONTROL UCSRB
+ #define UART0_DATA UDR
+ #define UART0_UDRIE UDRIE
+#elif defined(__AVR_ATmega329__) ||defined(__AVR_ATmega3290__) ||\
+ defined(__AVR_ATmega649__) ||defined(__AVR_ATmega6490__) ||\
+ defined(__AVR_ATmega325__) ||defined(__AVR_ATmega3250__) ||\
+ defined(__AVR_ATmega645__) ||defined(__AVR_ATmega6450__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega640__)
+/* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#elif defined(__AVR_ATmega644__)
+ /* ATmega with one USART */
+ #define ATMEGA_USART0
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega644P__)
+ /* ATmega with two USART */
+ #define ATMEGA_USART0
+ #define ATMEGA_USART1
+ #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV
+ #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV
+ #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA
+ #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA
+ #define UART0_STATUS UCSR0A
+ #define UART0_CONTROL UCSR0B
+ #define UART0_DATA UDR0
+ #define UART0_UDRIE UDRIE0
+ #define UART1_STATUS UCSR1A
+ #define UART1_CONTROL UCSR1B
+ #define UART1_DATA UDR1
+ #define UART1_UDRIE UDRIE1
+#else
+ #error "no UART definition for MCU available"
+#endif
+
+
+/*
+ * module global variables
+ */
+static volatile unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART_TxHead;
+static volatile unsigned char UART_TxTail;
+static volatile unsigned char UART_RxHead;
+static volatile unsigned char UART_RxTail;
+static volatile unsigned char UART_LastRxError;
+
+#if defined( ATMEGA_USART1 )
+static volatile unsigned char UART1_TxBuf[UART_TX_BUFFER_SIZE];
+static volatile unsigned char UART1_RxBuf[UART_RX_BUFFER_SIZE];
+static volatile unsigned char UART1_TxHead;
+static volatile unsigned char UART1_TxTail;
+static volatile unsigned char UART1_RxHead;
+static volatile unsigned char UART1_RxTail;
+static volatile unsigned char UART1_LastRxError;
+#endif
+
+
+
+SIGNAL(UART0_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART Receive Complete interrupt
+Purpose: called when the UART has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART0_STATUS;
+ data = UART0_DATA;
+
+ /* */
+#if defined( AT90_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#elif defined( ATMEGA_USART0 )
+ lastRxError = (usr & (_BV(FE0)|_BV(DOR0)) );
+#elif defined ( ATMEGA_UART )
+ lastRxError = (usr & (_BV(FE)|_BV(DOR)) );
+#endif
+
+ /* calculate buffer index */
+ tmphead = ( UART_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART_RxHead = tmphead;
+ /* store received data in buffer */
+ UART_RxBuf[tmphead] = data;
+ }
+ UART_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART0_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART Data Register Empty interrupt
+Purpose: called when the UART is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART_TxHead != UART_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART0_CONTROL &= ~_BV(UART0_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart_init()
+Purpose: initialize UART and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart_init(unsigned int baudrate)
+{
+ UART_TxHead = 0;
+ UART_TxTail = 0;
+ UART_RxHead = 0;
+ UART_RxTail = 0;
+
+#if defined( AT90_UART )
+ /* set baud rate */
+ UBRR = (unsigned char)baudrate;
+
+ /* enable UART receiver and transmmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
+
+#elif defined (ATMEGA_USART)
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRH = (unsigned char)(baudrate>>8);
+ UBRRL = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL
+ UCSRC = (1<<URSEL)|(3<<UCSZ0);
+ #else
+ UCSRC = (3<<UCSZ0);
+ #endif
+
+#elif defined (ATMEGA_USART0 )
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X0); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR0H = (unsigned char)(baudrate>>8);
+ UBRR0L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL0
+ UCSR0C = (1<<URSEL0)|(3<<UCSZ00);
+ #else
+ UCSR0C = (3<<UCSZ00);
+ #endif
+
+#elif defined ( ATMEGA_UART )
+ /* set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART0_STATUS = (1<<U2X); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRRHI = (unsigned char)(baudrate>>8);
+ UBRR = (unsigned char) baudrate;
+
+ /* Enable UART receiver and transmitter and receive complete interrupt */
+ UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
+
+#endif
+
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART_RxHead == UART_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART_RxBuf[tmptail];
+
+ return (UART_LastRxError << 8) + data;
+
+}/* uart_getc */
+
+
+/*************************************************************************
+Function: uart_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART_TxBuf[tmphead] = data;
+ UART_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART0_CONTROL |= _BV(UART0_UDRIE);
+
+}/* uart_putc */
+
+
+/*************************************************************************
+Function: uart_puts()
+Purpose: transmit string to UART
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts(const char *s )
+{
+ while (*s)
+ uart_putc(*s++);
+
+}/* uart_puts */
+
+
+/*************************************************************************
+Function: uart_puts_p()
+Purpose: transmit string from program memory to UART
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart_putc(c);
+
+}/* uart_puts_p */
+
+
+/*
+ * these functions are only for ATmegas with two USART
+ */
+#if defined( ATMEGA_USART1 )
+
+SIGNAL(UART1_RECEIVE_INTERRUPT)
+/*************************************************************************
+Function: UART1 Receive Complete interrupt
+Purpose: called when the UART1 has received a character
+**************************************************************************/
+{
+ unsigned char tmphead;
+ unsigned char data;
+ unsigned char usr;
+ unsigned char lastRxError;
+
+
+ /* read UART status register and UART data register */
+ usr = UART1_STATUS;
+ data = UART1_DATA;
+
+ /* */
+ lastRxError = (usr & (_BV(FE1)|_BV(DOR1)) );
+
+ /* calculate buffer index */
+ tmphead = ( UART1_RxHead + 1) & UART_RX_BUFFER_MASK;
+
+ if ( tmphead == UART1_RxTail ) {
+ /* error: receive buffer overflow */
+ lastRxError = UART_BUFFER_OVERFLOW >> 8;
+ }else{
+ /* store new index */
+ UART1_RxHead = tmphead;
+ /* store received data in buffer */
+ UART1_RxBuf[tmphead] = data;
+ }
+ UART1_LastRxError = lastRxError;
+}
+
+
+SIGNAL(UART1_TRANSMIT_INTERRUPT)
+/*************************************************************************
+Function: UART1 Data Register Empty interrupt
+Purpose: called when the UART1 is ready to transmit the next byte
+**************************************************************************/
+{
+ unsigned char tmptail;
+
+
+ if ( UART1_TxHead != UART1_TxTail) {
+ /* calculate and store new buffer index */
+ tmptail = (UART1_TxTail + 1) & UART_TX_BUFFER_MASK;
+ UART1_TxTail = tmptail;
+ /* get one byte from buffer and write it to UART */
+ UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */
+ }else{
+ /* tx buffer empty, disable UDRE interrupt */
+ UART1_CONTROL &= ~_BV(UART1_UDRIE);
+ }
+}
+
+
+/*************************************************************************
+Function: uart1_init()
+Purpose: initialize UART1 and set baudrate
+Input: baudrate using macro UART_BAUD_SELECT()
+Returns: none
+**************************************************************************/
+void uart1_init(unsigned int baudrate)
+{
+ UART1_TxHead = 0;
+ UART1_TxTail = 0;
+ UART1_RxHead = 0;
+ UART1_RxTail = 0;
+
+
+ /* Set baud rate */
+ if ( baudrate & 0x8000 )
+ {
+ UART1_STATUS = (1<<U2X1); //Enable 2x speed
+ baudrate &= ~0x8000;
+ }
+ UBRR1H = (unsigned char)(baudrate>>8);
+ UBRR1L = (unsigned char) baudrate;
+
+ /* Enable USART receiver and transmitter and receive complete interrupt */
+ UART1_CONTROL = _BV(RXCIE1)|(1<<RXEN1)|(1<<TXEN1);
+
+ /* Set frame format: asynchronous, 8data, no parity, 1stop bit */
+ #ifdef URSEL1
+ UCSR1C = (1<<URSEL1)|(3<<UCSZ10);
+ #else
+ UCSR1C = (3<<UCSZ10);
+ #endif
+}/* uart_init */
+
+
+/*************************************************************************
+Function: uart1_getc()
+Purpose: return byte from ringbuffer
+Returns: lower byte: received byte from ringbuffer
+ higher byte: last receive error
+**************************************************************************/
+unsigned int uart1_getc(void)
+{
+ unsigned char tmptail;
+ unsigned char data;
+
+
+ if ( UART1_RxHead == UART1_RxTail ) {
+ return UART_NO_DATA; /* no data available */
+ }
+
+ /* calculate /store buffer index */
+ tmptail = (UART1_RxTail + 1) & UART_RX_BUFFER_MASK;
+ UART1_RxTail = tmptail;
+
+ /* get data from receive buffer */
+ data = UART1_RxBuf[tmptail];
+
+ return (UART1_LastRxError << 8) + data;
+
+}/* uart1_getc */
+
+
+/*************************************************************************
+Function: uart1_putc()
+Purpose: write byte to ringbuffer for transmitting via UART
+Input: byte to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_putc(unsigned char data)
+{
+ unsigned char tmphead;
+
+
+ tmphead = (UART1_TxHead + 1) & UART_TX_BUFFER_MASK;
+
+ while ( tmphead == UART1_TxTail ){
+ ;/* wait for free space in buffer */
+ }
+
+ UART1_TxBuf[tmphead] = data;
+ UART1_TxHead = tmphead;
+
+ /* enable UDRE interrupt */
+ UART1_CONTROL |= _BV(UART1_UDRIE);
+
+}/* uart1_putc */
+
+
+/*************************************************************************
+Function: uart1_puts()
+Purpose: transmit string to UART1
+Input: string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts(const char *s )
+{
+ while (*s)
+ uart1_putc(*s++);
+
+}/* uart1_puts */
+
+
+/*************************************************************************
+Function: uart1_puts_p()
+Purpose: transmit string from program memory to UART1
+Input: program memory string to be transmitted
+Returns: none
+**************************************************************************/
+void uart1_puts_p(const char *progmem_s )
+{
+ register char c;
+
+ while ( (c = pgm_read_byte(progmem_s++)) )
+ uart1_putc(c);
+
+}/* uart1_puts_p */
+
+
+#endif
diff --git a/timer1/uart.c.map b/timer1/uart.c.map new file mode 100644 index 0000000..4ed7372 --- /dev/null +++ b/timer1/uart.c.map @@ -0,0 +1,355 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + uart.o (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD uart.o +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x21e + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000068 . = ALIGN (0x2) + 0x00000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000068 0x0 linker stubs + *(.trampolines*) + 0x00000068 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000068 __ctors_start = . + *(.ctors) + 0x00000068 __ctors_end = . + 0x00000068 __dtors_start = . + *(.dtors) + 0x00000068 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000068 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000068 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000074 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000074 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000084 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x0000008c 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x0000008c __vector_22 + 0x0000008c __vector_1 + 0x0000008c __vector_24 + 0x0000008c __vector_12 + 0x0000008c __bad_interrupt + 0x0000008c __vector_6 + 0x0000008c __vector_3 + 0x0000008c __vector_23 + 0x0000008c __vector_25 + 0x0000008c __vector_11 + 0x0000008c __vector_13 + 0x0000008c __vector_17 + 0x0000008c __vector_19 + 0x0000008c __vector_7 + 0x0000008c __vector_5 + 0x0000008c __vector_4 + 0x0000008c __vector_9 + 0x0000008c __vector_2 + 0x0000008c __vector_21 + 0x0000008c __vector_15 + 0x0000008c __vector_8 + 0x0000008c __vector_14 + 0x0000008c __vector_10 + 0x0000008c __vector_16 + 0x0000008c __vector_18 + 0x0000008c __vector_20 + .text 0x00000090 0x18a uart.o + 0x00000090 SIG_USART_RECV + 0x000000e8 SIG_USART_DATA + 0x0000013c uart_init + 0x00000170 uart_getc + 0x000001ac uart_putc + 0x000001d8 uart_puts + 0x000001f6 uart_puts_p + .text 0x0000021a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x0000021a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x0000021a . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x0000021a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x0000021a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x0000021a . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000021a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x0000021a exit + 0x0000021a _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000021a 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x0000021e _etext = . + +.data 0x00800100 0x0 load address 0x0000021e + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 uart.o + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x45 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x45 uart.o + .bss 0x00800145 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800145 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800145 PROVIDE (__bss_end, .) + 0x0000021e __data_load_start = LOADADDR (.data) + 0x0000021e __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800145 0x0 + 0x00800145 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800145 PROVIDE (__noinit_end, .) + 0x00800145 _end = . + 0x00800145 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x1014 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x960 uart.o + 0x96c (size before relaxing) + +.stabstr 0x00000000 0xb45 + *(.stabstr) + .stabstr 0x00000000 0xb45 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges + *(.debug_aranges) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info + *(.debug_info) + *(.gnu.linkonce.wi.*) + +.debug_abbrev + *(.debug_abbrev) + +.debug_line + *(.debug_line) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(uart.c.elf elf32-avr) +LOAD linker stubs diff --git a/timer1/uart.h b/timer1/uart.h new file mode 100644 index 0000000..7f4f0be --- /dev/null +++ b/timer1/uart.h @@ -0,0 +1,194 @@ +#ifndef UART_H
+#define UART_H
+/************************************************************************
+Title: Interrupt UART library with receive/transmit circular buffers
+Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury
+File: $Id: uart.h,v 1.8.2.1 2007/07/01 11:14:38 peter Exp $
+Software: AVR-GCC 4.1, AVR Libc 1.4
+Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz
+License: GNU General Public License
+Usage: see Doxygen manual
+
+LICENSE:
+ Copyright (C) 2006 Peter Fleury
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+************************************************************************/
+
+/**
+ * @defgroup pfleury_uart UART Library
+ * @code #include <uart.h> @endcode
+ *
+ * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers.
+ *
+ * This library can be used to transmit and receive data through the built in UART.
+ *
+ * An interrupt is generated when the UART has finished transmitting or
+ * receiving a byte. The interrupt handling routines use circular buffers
+ * for buffering received and transmitted data.
+ *
+ * The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define
+ * the size of the circular buffers in bytes. Note that these constants must be a power of 2.
+ * You may need to adapt this constants to your target and your application by adding
+ * CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile.
+ *
+ * @note Based on Atmel Application Note AVR306
+ * @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury
+ */
+
+/**@{*/
+
+
+#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
+#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
+#endif
+
+
+/*
+** constants and macros
+*/
+
+/** @brief UART Baudrate Expression
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)
+
+/** @brief UART Baudrate Expression for ATmega double speed mode
+ * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
+ * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600
+ */
+#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000)
+
+
+/** Size of the circular receive buffer, must be power of 2 */
+#ifndef UART_RX_BUFFER_SIZE
+#define UART_RX_BUFFER_SIZE 32
+#endif
+/** Size of the circular transmit buffer, must be power of 2 */
+#ifndef UART_TX_BUFFER_SIZE
+#define UART_TX_BUFFER_SIZE 32
+#endif
+
+/* test if the size of the circular buffers fits into SRAM */
+#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) )
+#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM"
+#endif
+
+/*
+** high byte error return code of uart_getc()
+*/
+#define UART_FRAME_ERROR 0x0800 /* Framing Error by UART */
+#define UART_OVERRUN_ERROR 0x0400 /* Overrun condition by UART */
+#define UART_BUFFER_OVERFLOW 0x0200 /* receive ringbuffer overflow */
+#define UART_NO_DATA 0x0100 /* no receive data available */
+
+
+/*
+** function prototypes
+*/
+
+/**
+ @brief Initialize UART and set baudrate
+ @param baudrate Specify baudrate using macro UART_BAUD_SELECT()
+ @return none
+*/
+extern void uart_init(unsigned int baudrate);
+
+
+/**
+ * @brief Get received byte from ringbuffer
+ *
+ * Returns in the lower byte the received character and in the
+ * higher byte the last receive error.
+ * UART_NO_DATA is returned when no data is available.
+ *
+ * @param void
+ * @return lower byte: received byte from ringbuffer
+ * @return higher byte: last receive status
+ * - \b 0 successfully received data from UART
+ * - \b UART_NO_DATA
+ * <br>no receive data available
+ * - \b UART_BUFFER_OVERFLOW
+ * <br>Receive ringbuffer overflow.
+ * We are not reading the receive buffer fast enough,
+ * one or more received character have been dropped
+ * - \b UART_OVERRUN_ERROR
+ * <br>Overrun condition by UART.
+ * A character already present in the UART UDR register was
+ * not read by the interrupt handler before the next character arrived,
+ * one or more received characters have been dropped.
+ * - \b UART_FRAME_ERROR
+ * <br>Framing Error by UART
+ */
+extern unsigned int uart_getc(void);
+
+
+/**
+ * @brief Put byte to ringbuffer for transmitting via UART
+ * @param data byte to be transmitted
+ * @return none
+ */
+extern void uart_putc(unsigned char data);
+
+
+/**
+ * @brief Put string to ringbuffer for transmitting via UART
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s string to be transmitted
+ * @return none
+ */
+extern void uart_puts(const char *s );
+
+
+/**
+ * @brief Put string from program memory to ringbuffer for transmitting via UART.
+ *
+ * The string is buffered by the uart library in a circular buffer
+ * and one character at a time is transmitted to the UART using interrupts.
+ * Blocks if it can not write the whole string into the circular buffer.
+ *
+ * @param s program memory string to be transmitted
+ * @return none
+ * @see uart_puts_P
+ */
+extern void uart_puts_p(const char *s );
+
+/**
+ * @brief Macro to automatically put a string constant into program memory
+ */
+#define uart_puts_P(__s) uart_puts_p(PSTR(__s))
+
+
+
+/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */
+extern void uart1_init(unsigned int baudrate);
+/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */
+extern unsigned int uart1_getc(void);
+/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */
+extern void uart1_putc(unsigned char data);
+/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */
+extern void uart1_puts(const char *s );
+/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */
+extern void uart1_puts_p(const char *s );
+/** @brief Macro to automatically put a string constant into program memory */
+#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s))
+
+/**@}*/
+
+
+#endif // UART_H
+
diff --git a/timer1/uart.o b/timer1/uart.o Binary files differnew file mode 100644 index 0000000..d2cebd3 --- /dev/null +++ b/timer1/uart.o |
