commit 9086767475dad7973b2a5b600908c6bbb6054fd5 Author: flo Date: Mon Sep 25 23:32:42 2017 +0200 Initial commit diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..59d28ce --- /dev/null +++ b/.cproject @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..46ae798 --- /dev/null +++ b/.project @@ -0,0 +1,27 @@ + + + avr-lib-lcd + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + de.innot.avreclipse.core.avrnature + + diff --git a/.settings/de.innot.avreclipse.core.prefs b/.settings/de.innot.avreclipse.core.prefs new file mode 100644 index 0000000..56cb24c --- /dev/null +++ b/.settings/de.innot.avreclipse.core.prefs @@ -0,0 +1,28 @@ +avrtarget/ClockFrequency=8000000 +avrtarget/ExtRAMSize=0 +avrtarget/ExtendedRAM=false +avrtarget/MCUType=atmega168p +avrtarget/UseEEPROM=false +avrtarget/UseExtendedRAMforHeap=true +avrtarget/avrdude/BitBangDelay= +avrtarget/avrdude/Bitclock= +avrtarget/avrdude/EEPROMFile= +avrtarget/avrdude/EEPROMFromConfig=true +avrtarget/avrdude/FlashFile= +avrtarget/avrdude/FlashFromConfig=true +avrtarget/avrdude/Fuses/ByteValues=-1\:-1 +avrtarget/avrdude/Fuses/FileName= +avrtarget/avrdude/Fuses/MCUid=atmega8 +avrtarget/avrdude/Fuses/UseFile=false +avrtarget/avrdude/Fuses/Write=false +avrtarget/avrdude/NoChipErase=false +avrtarget/avrdude/NoSigCheck=true +avrtarget/avrdude/NoVerify=false +avrtarget/avrdude/NoWrite=false +avrtarget/avrdude/OtherOptions= +avrtarget/avrdude/ProgrammerID=programmerconfig.1 +avrtarget/avrdude/UseCounter=false +avrtarget/avrdude/WriteEEPROM=false +avrtarget/avrdude/WriteFlash=true +avrtarget/perConfig=false +eclipse.preferences.version=1 diff --git a/Release/avr-blink.map b/Release/avr-blink.map new file mode 100644 index 0000000..f135fff --- /dev/null +++ b/Release/avr-blink.map @@ -0,0 +1,434 @@ +Archive member included to satisfy reference by file (symbol) + +/usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o (exit) +/usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + ./libs/led/led.o (__do_copy_data) + +Memory Configuration + +Name Origin Length Attributes +text 0x0000000000000000 0x0000000000002000 xr +data 0x0000000000800060 0x000000000000ffa0 rw !x +eeprom 0x0000000000810000 0x0000000000010000 rw !x +fuse 0x0000000000820000 0x0000000000000400 rw !x +lock 0x0000000000830000 0x0000000000000400 rw !x +signature 0x0000000000840000 0x0000000000000400 rw !x +user_signatures 0x0000000000850000 0x0000000000000400 rw !x +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o +LOAD ./libs/led/led.o +LOAD ./main.o +START GROUP +LOAD /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/libm.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/libc.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/libatmega8.a +END GROUP + 0x0000000000002000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x2000 + 0x000000000000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x0000000000010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + 0x0000000000000400 __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x0000000000000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x0000000000000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x0000000000000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.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 0x0000000000000000 0x150 + *(.vectors) + .vectors 0x0000000000000000 0x26 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + 0x0000000000000000 __vectors + 0x0000000000000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + 0x0000000000000026 . = ALIGN (0x2) + 0x0000000000000026 __trampolines_start = . + *(.trampolines) + .trampolines 0x0000000000000026 0x0 linker stubs + *(.trampolines*) + 0x0000000000000026 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x0000000000000026 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x0000000000000026 __ctors_start = . + *(.ctors) + 0x0000000000000026 __ctors_end = . + 0x0000000000000026 __dtors_start = . + *(.dtors) + 0x0000000000000026 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000000000000026 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + 0x0000000000000026 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000000000000026 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x0000000000000032 0x16 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + 0x0000000000000032 __do_copy_data + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000000000000048 0x4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + *(.init9) + *(.text) + .text 0x000000000000004c 0x2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + 0x000000000000004c __vector_1 + 0x000000000000004c __vector_12 + 0x000000000000004c __bad_interrupt + 0x000000000000004c __vector_6 + 0x000000000000004c __vector_3 + 0x000000000000004c __vector_11 + 0x000000000000004c __vector_13 + 0x000000000000004c __vector_17 + 0x000000000000004c __vector_7 + 0x000000000000004c __vector_5 + 0x000000000000004c __vector_4 + 0x000000000000004c __vector_9 + 0x000000000000004c __vector_2 + 0x000000000000004c __vector_15 + 0x000000000000004c __vector_8 + 0x000000000000004c __vector_14 + 0x000000000000004c __vector_10 + 0x000000000000004c __vector_16 + 0x000000000000004c __vector_18 + .text 0x000000000000004e 0x0 ./libs/led/led.o + .text 0x000000000000004e 0x0 ./main.o + .text 0x000000000000004e 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text 0x000000000000004e 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + 0x000000000000004e . = ALIGN (0x2) + *(.text.*) + .text.led_initPorts + 0x000000000000004e 0x24 ./libs/led/led.o + 0x000000000000004e led_initPorts + .text.led_init + 0x0000000000000072 0x6 ./libs/led/led.o + 0x0000000000000072 led_init + .text.led_off 0x0000000000000078 0x3e ./libs/led/led.o + 0x0000000000000078 led_off + .text.led_on 0x00000000000000b6 0x40 ./libs/led/led.o + 0x00000000000000b6 led_on + .text.led_flash + 0x00000000000000f6 0x2c ./libs/led/led.o + 0x00000000000000f6 led_flash + .text.disco 0x0000000000000122 0xc ./libs/led/led.o + 0x0000000000000122 disco + .text.startup.main + 0x000000000000012e 0x1e ./main.o + 0x000000000000012e main + .text.libgcc.mul + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text.libgcc.div + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text.libgcc 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text.libgcc.prologue + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text.libgcc.builtins + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text.libgcc.fmul + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text.libgcc.fixed + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .text.libgcc.mul + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + .text.libgcc.div + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + .text.libgcc 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + 0x000000000000014c . = ALIGN (0x2) + *(.fini9) + .fini9 0x000000000000014c 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + 0x000000000000014c exit + 0x000000000000014c _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000000000000014c 0x4 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + *(.fini0) + 0x0000000000000150 _etext = . + +.data 0x0000000000800060 0x2 load address 0x0000000000000150 + 0x0000000000800060 PROVIDE (__data_start, .) + *(.data) + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + .data 0x0000000000800060 0x0 ./libs/led/led.o + .data 0x0000000000800060 0x0 ./main.o + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + *(.data*) + .data.led_flags + 0x0000000000800060 0x1 ./libs/led/led.o + 0x0000000000800060 led_flags + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x0000000000800062 . = ALIGN (0x2) + *fill* 0x0000000000800061 0x1 + 0x0000000000800062 _edata = . + 0x0000000000800062 PROVIDE (__data_end, .) + +.bss 0x0000000000800062 0x0 + [!provide] PROVIDE (__bss_start, .) + *(.bss) + .bss 0x0000000000800062 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + .bss 0x0000000000800062 0x0 ./libs/led/led.o + .bss 0x0000000000800062 0x0 ./main.o + .bss 0x0000000000800062 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_exit.o) + .bss 0x0000000000800062 0x0 /usr/lib/gcc/avr/4.9.2/avr4/libgcc.a(_copy_data.o) + *(.bss*) + *(COMMON) + [!provide] PROVIDE (__bss_end, .) + 0x0000000000000150 __data_load_start = LOADADDR (.data) + 0x0000000000000152 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0000000000800062 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x0000000000800062 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x0000000000810000 0x0 + *(.eeprom*) + 0x0000000000810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x0000000000000000 0x11 + *(.comment) + .comment 0x0000000000000000 0x11 ./libs/led/led.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 ./main.o + +.note.gnu.avr.deviceinfo + 0x0000000000000000 0x3c + .note.gnu.avr.deviceinfo + 0x0000000000000000 0x3c /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr4/crtatmega8.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.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_line.* .debug_line_end) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges + *(.debug_ranges) + +.debug_macro + *(.debug_macro) +OUTPUT(avr-blink.elf elf32-avr) +LOAD linker stubs diff --git a/Release/avr-lib-lcd.eep b/Release/avr-lib-lcd.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/Release/avr-lib-lcd.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/Release/avr-lib-lcd.elf b/Release/avr-lib-lcd.elf new file mode 100755 index 0000000..4965d65 Binary files /dev/null and b/Release/avr-lib-lcd.elf differ diff --git a/Release/avr-lib-lcd.hex b/Release/avr-lib-lcd.hex new file mode 100644 index 0000000..6d58af0 --- /dev/null +++ b/Release/avr-lib-lcd.hex @@ -0,0 +1,52 @@ +:100000000C9434000C9449000C9449000C94490061 +:100010000C9449000C9449000C9449000C9449003C +:100020000C9449000C9449000C9449000C9449002C +:100030000C9449000C9449000C9449000C9449001C +:100040000C9449000C9449000C9449000C9449000C +:100050000C9449000C9449000C9449000C944900FC +:100060000C9449000C94490011241FBECFEFD4E03A +:10007000DEBFCDBF11E0A0E0B1E0E0E2F3E002C0FE +:1000800005900D92AE30B107D9F70E9474010C941F +:100090008E010C9400008AB1806E8AB980910001B3 +:1000A00081FF03C08BB18F7102C08BB1806E8BB9A1 +:1000B00008958093000108950C944B00982F80912F +:1000C00000014BB121E030E0B90102C0660F771F9B +:1000D0009A95E2F781FF04C0CB018095842302C08A +:1000E000CB01842B8BB90895982F809100014BB1DF +:1000F00021E030E0B90102C0660F771F9A95E2F760 +:1001000081FF03C0CB01842B03C0CB0180958423E6 +:100110008BB90895CF93C82F0E9474008FE19EE49D +:100120000197F1F700C000008C2F0E945E009FEF46 +:100130002AE683E0915020408040E1F700C00000B3 +:10014000CF91089585E00E948A0086E00E948A008F +:1001500087E00C948A00459A85E38A95F1F70000C0 +:100160004598089598B1907F98B998B182958F700D +:10017000982B98B90C94AB00CF93C82F449A0E9447 +:10018000B2008C2F8295807F0E94B2008AE78A9508 +:10019000F1F700C0CF910895CF93C82F44980E94E3 +:1001A000B2008C2F8295807F0E94B20080E78A95F2 +:1001B000F1F7CF91089581E00E94CC008FE99FE094 +:1001C0000197F1F700C00000089587B18F6387B9E8 +:1001D00088B1807C88B98FE295E70197F1F700C07C +:1001E000000080E30E94B2008FE097E20197F1F7F0 +:1001F00000C000000E94AB008FEC97E00197F1F780 +:1002000000C000000E94AB008FEC97E00197F1F76F +:1002100000C0000080E20E94B2008FE097E20197E8 +:10022000F1F700C0000088E20E94CC008CE00E9440 +:10023000CC0086E00E94CC000C94DB0082E00E949F +:10024000CC008FE99FE00197F1F700C0000008950E +:10025000623059F018F4613031F00895633039F0AC +:10026000643039F00895805805C0805403C0805729 +:1002700001C080530C94CC00CF93DF93EC018991A3 +:10028000882319F00E94BC00FACFDF91CF91089526 +:10029000EF92FF920F931F93CF93DF9300D0CDB7D0 +:1002A000DEB728E0829FC0011124806469837A83CD +:1002B0000E94CC006981E62E7A81F72E8701085FC3 +:1002C0001F4FF70181917F010E94BC00E016F106EB +:1002D000C1F780E80F900F90DF91CF911F910F91A0 +:1002E000FF90EF900C94CC0081E00E9459000E9496 +:1002F0005C000E94A2000E94E50081E091E00E9463 +:100300003C0185E00E948A002FEF89E698E12150A8 +:1003100080409040E1F700C00000F3CFF894FFCF99 +:0E03200001497420776F726B27732100000073 +:00000001FF diff --git a/Release/avr-lib-lcd.lss b/Release/avr-lib-lcd.lss new file mode 100644 index 0000000..6298eb8 --- /dev/null +++ b/Release/avr-lib-lcd.lss @@ -0,0 +1,398 @@ + +avr-lib-lcd.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 0000000e 00800100 00000320 00000394 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00000320 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .comment 00000011 00000000 00000000 000003a2 2**0 + CONTENTS, READONLY + 3 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000003b4 2**2 + CONTENTS, READONLY + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 8: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 10: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 14: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 18: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 1c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 20: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 24: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 28: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 2c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 30: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 34: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 38: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 3c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 40: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 44: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 48: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 4c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 50: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 54: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 58: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 5c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 60: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 64: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d4 e0 ldi r29, 0x04 ; 4 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 11 e0 ldi r17, 0x01 ; 1 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: e0 e2 ldi r30, 0x20 ; 32 + 7c: f3 e0 ldi r31, 0x03 ; 3 + 7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10> + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + 84: ae 30 cpi r26, 0x0E ; 14 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc> + 8a: 0e 94 74 01 call 0x2e8 ; 0x2e8
+ 8e: 0c 94 8e 01 jmp 0x31c ; 0x31c <_exit> + +00000092 <__bad_interrupt>: + 92: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +00000096 : + 96: 8a b1 in r24, 0x0a ; 10 + 98: 80 6e ori r24, 0xE0 ; 224 + 9a: 8a b9 out 0x0a, r24 ; 10 + 9c: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <__data_start> + a0: 81 ff sbrs r24, 1 + a2: 03 c0 rjmp .+6 ; 0xaa + a4: 8b b1 in r24, 0x0b ; 11 + a6: 8f 71 andi r24, 0x1F ; 31 + a8: 02 c0 rjmp .+4 ; 0xae + aa: 8b b1 in r24, 0x0b ; 11 + ac: 80 6e ori r24, 0xE0 ; 224 + ae: 8b b9 out 0x0b, r24 ; 11 + b0: 08 95 ret + +000000b2 : + b2: 80 93 00 01 sts 0x0100, r24 ; 0x800100 <__data_start> + b6: 08 95 ret + +000000b8 : + b8: 0c 94 4b 00 jmp 0x96 ; 0x96 + +000000bc : + bc: 98 2f mov r25, r24 + be: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <__data_start> + c2: 4b b1 in r20, 0x0b ; 11 + c4: 21 e0 ldi r18, 0x01 ; 1 + c6: 30 e0 ldi r19, 0x00 ; 0 + c8: b9 01 movw r22, r18 + ca: 02 c0 rjmp .+4 ; 0xd0 + cc: 66 0f add r22, r22 + ce: 77 1f adc r23, r23 + d0: 9a 95 dec r25 + d2: e2 f7 brpl .-8 ; 0xcc + d4: 81 ff sbrs r24, 1 + d6: 04 c0 rjmp .+8 ; 0xe0 + d8: cb 01 movw r24, r22 + da: 80 95 com r24 + dc: 84 23 and r24, r20 + de: 02 c0 rjmp .+4 ; 0xe4 + e0: cb 01 movw r24, r22 + e2: 84 2b or r24, r20 + e4: 8b b9 out 0x0b, r24 ; 11 + e6: 08 95 ret + +000000e8 : + e8: 98 2f mov r25, r24 + ea: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <__data_start> + ee: 4b b1 in r20, 0x0b ; 11 + f0: 21 e0 ldi r18, 0x01 ; 1 + f2: 30 e0 ldi r19, 0x00 ; 0 + f4: b9 01 movw r22, r18 + f6: 02 c0 rjmp .+4 ; 0xfc + f8: 66 0f add r22, r22 + fa: 77 1f adc r23, r23 + fc: 9a 95 dec r25 + fe: e2 f7 brpl .-8 ; 0xf8 + 100: 81 ff sbrs r24, 1 + 102: 03 c0 rjmp .+6 ; 0x10a + 104: cb 01 movw r24, r22 + 106: 84 2b or r24, r20 + 108: 03 c0 rjmp .+6 ; 0x110 + 10a: cb 01 movw r24, r22 + 10c: 80 95 com r24 + 10e: 84 23 and r24, r20 + 110: 8b b9 out 0x0b, r24 ; 11 + 112: 08 95 ret + +00000114 : + 114: cf 93 push r28 + 116: c8 2f mov r28, r24 + 118: 0e 94 74 00 call 0xe8 ; 0xe8 + 11c: 8f e1 ldi r24, 0x1F ; 31 + 11e: 9e e4 ldi r25, 0x4E ; 78 + 120: 01 97 sbiw r24, 0x01 ; 1 + 122: f1 f7 brne .-4 ; 0x120 + 124: 00 c0 rjmp .+0 ; 0x126 + 126: 00 00 nop + 128: 8c 2f mov r24, r28 + 12a: 0e 94 5e 00 call 0xbc ; 0xbc + 12e: 9f ef ldi r25, 0xFF ; 255 + 130: 2a e6 ldi r18, 0x6A ; 106 + 132: 83 e0 ldi r24, 0x03 ; 3 + 134: 91 50 subi r25, 0x01 ; 1 + 136: 20 40 sbci r18, 0x00 ; 0 + 138: 80 40 sbci r24, 0x00 ; 0 + 13a: e1 f7 brne .-8 ; 0x134 + 13c: 00 c0 rjmp .+0 ; 0x13e + 13e: 00 00 nop + 140: cf 91 pop r28 + 142: 08 95 ret + +00000144 : + 144: 85 e0 ldi r24, 0x05 ; 5 + 146: 0e 94 8a 00 call 0x114 ; 0x114 + 14a: 86 e0 ldi r24, 0x06 ; 6 + 14c: 0e 94 8a 00 call 0x114 ; 0x114 + 150: 87 e0 ldi r24, 0x07 ; 7 + 152: 0c 94 8a 00 jmp 0x114 ; 0x114 + +00000156 : + 156: 45 9a sbi 0x08, 5 ; 8 + 158: 85 e3 ldi r24, 0x35 ; 53 + 15a: 8a 95 dec r24 + 15c: f1 f7 brne .-4 ; 0x15a + 15e: 00 00 nop + 160: 45 98 cbi 0x08, 5 ; 8 + 162: 08 95 ret + +00000164 : + 164: 98 b1 in r25, 0x08 ; 8 + 166: 90 7f andi r25, 0xF0 ; 240 + 168: 98 b9 out 0x08, r25 ; 8 + 16a: 98 b1 in r25, 0x08 ; 8 + 16c: 82 95 swap r24 + 16e: 8f 70 andi r24, 0x0F ; 15 + 170: 98 2b or r25, r24 + 172: 98 b9 out 0x08, r25 ; 8 + 174: 0c 94 ab 00 jmp 0x156 ; 0x156 + +00000178 : + 178: cf 93 push r28 + 17a: c8 2f mov r28, r24 + 17c: 44 9a sbi 0x08, 4 ; 8 + 17e: 0e 94 b2 00 call 0x164 ; 0x164 + 182: 8c 2f mov r24, r28 + 184: 82 95 swap r24 + 186: 80 7f andi r24, 0xF0 ; 240 + 188: 0e 94 b2 00 call 0x164 ; 0x164 + 18c: 8a e7 ldi r24, 0x7A ; 122 + 18e: 8a 95 dec r24 + 190: f1 f7 brne .-4 ; 0x18e + 192: 00 c0 rjmp .+0 ; 0x194 + 194: cf 91 pop r28 + 196: 08 95 ret + +00000198 : + 198: cf 93 push r28 + 19a: c8 2f mov r28, r24 + 19c: 44 98 cbi 0x08, 4 ; 8 + 19e: 0e 94 b2 00 call 0x164 ; 0x164 + 1a2: 8c 2f mov r24, r28 + 1a4: 82 95 swap r24 + 1a6: 80 7f andi r24, 0xF0 ; 240 + 1a8: 0e 94 b2 00 call 0x164 ; 0x164 + 1ac: 80 e7 ldi r24, 0x70 ; 112 + 1ae: 8a 95 dec r24 + 1b0: f1 f7 brne .-4 ; 0x1ae + 1b2: cf 91 pop r28 + 1b4: 08 95 ret + +000001b6 : + 1b6: 81 e0 ldi r24, 0x01 ; 1 + 1b8: 0e 94 cc 00 call 0x198 ; 0x198 + 1bc: 8f e9 ldi r24, 0x9F ; 159 + 1be: 9f e0 ldi r25, 0x0F ; 15 + 1c0: 01 97 sbiw r24, 0x01 ; 1 + 1c2: f1 f7 brne .-4 ; 0x1c0 + 1c4: 00 c0 rjmp .+0 ; 0x1c6 + 1c6: 00 00 nop + 1c8: 08 95 ret + +000001ca : + 1ca: 87 b1 in r24, 0x07 ; 7 + 1cc: 8f 63 ori r24, 0x3F ; 63 + 1ce: 87 b9 out 0x07, r24 ; 7 + 1d0: 88 b1 in r24, 0x08 ; 8 + 1d2: 80 7c andi r24, 0xC0 ; 192 + 1d4: 88 b9 out 0x08, r24 ; 8 + 1d6: 8f e2 ldi r24, 0x2F ; 47 + 1d8: 95 e7 ldi r25, 0x75 ; 117 + 1da: 01 97 sbiw r24, 0x01 ; 1 + 1dc: f1 f7 brne .-4 ; 0x1da + 1de: 00 c0 rjmp .+0 ; 0x1e0 + 1e0: 00 00 nop + 1e2: 80 e3 ldi r24, 0x30 ; 48 + 1e4: 0e 94 b2 00 call 0x164 ; 0x164 + 1e8: 8f e0 ldi r24, 0x0F ; 15 + 1ea: 97 e2 ldi r25, 0x27 ; 39 + 1ec: 01 97 sbiw r24, 0x01 ; 1 + 1ee: f1 f7 brne .-4 ; 0x1ec + 1f0: 00 c0 rjmp .+0 ; 0x1f2 + 1f2: 00 00 nop + 1f4: 0e 94 ab 00 call 0x156 ; 0x156 + 1f8: 8f ec ldi r24, 0xCF ; 207 + 1fa: 97 e0 ldi r25, 0x07 ; 7 + 1fc: 01 97 sbiw r24, 0x01 ; 1 + 1fe: f1 f7 brne .-4 ; 0x1fc + 200: 00 c0 rjmp .+0 ; 0x202 + 202: 00 00 nop + 204: 0e 94 ab 00 call 0x156 ; 0x156 + 208: 8f ec ldi r24, 0xCF ; 207 + 20a: 97 e0 ldi r25, 0x07 ; 7 + 20c: 01 97 sbiw r24, 0x01 ; 1 + 20e: f1 f7 brne .-4 ; 0x20c + 210: 00 c0 rjmp .+0 ; 0x212 + 212: 00 00 nop + 214: 80 e2 ldi r24, 0x20 ; 32 + 216: 0e 94 b2 00 call 0x164 ; 0x164 + 21a: 8f e0 ldi r24, 0x0F ; 15 + 21c: 97 e2 ldi r25, 0x27 ; 39 + 21e: 01 97 sbiw r24, 0x01 ; 1 + 220: f1 f7 brne .-4 ; 0x21e + 222: 00 c0 rjmp .+0 ; 0x224 + 224: 00 00 nop + 226: 88 e2 ldi r24, 0x28 ; 40 + 228: 0e 94 cc 00 call 0x198 ; 0x198 + 22c: 8c e0 ldi r24, 0x0C ; 12 + 22e: 0e 94 cc 00 call 0x198 ; 0x198 + 232: 86 e0 ldi r24, 0x06 ; 6 + 234: 0e 94 cc 00 call 0x198 ; 0x198 + 238: 0c 94 db 00 jmp 0x1b6 ; 0x1b6 + +0000023c : + 23c: 82 e0 ldi r24, 0x02 ; 2 + 23e: 0e 94 cc 00 call 0x198 ; 0x198 + 242: 8f e9 ldi r24, 0x9F ; 159 + 244: 9f e0 ldi r25, 0x0F ; 15 + 246: 01 97 sbiw r24, 0x01 ; 1 + 248: f1 f7 brne .-4 ; 0x246 + 24a: 00 c0 rjmp .+0 ; 0x24c + 24c: 00 00 nop + 24e: 08 95 ret + +00000250 : + 250: 62 30 cpi r22, 0x02 ; 2 + 252: 59 f0 breq .+22 ; 0x26a + 254: 18 f4 brcc .+6 ; 0x25c + 256: 61 30 cpi r22, 0x01 ; 1 + 258: 31 f0 breq .+12 ; 0x266 + 25a: 08 95 ret + 25c: 63 30 cpi r22, 0x03 ; 3 + 25e: 39 f0 breq .+14 ; 0x26e + 260: 64 30 cpi r22, 0x04 ; 4 + 262: 39 f0 breq .+14 ; 0x272 + 264: 08 95 ret + 266: 80 58 subi r24, 0x80 ; 128 + 268: 05 c0 rjmp .+10 ; 0x274 + 26a: 80 54 subi r24, 0x40 ; 64 + 26c: 03 c0 rjmp .+6 ; 0x274 + 26e: 80 57 subi r24, 0x70 ; 112 + 270: 01 c0 rjmp .+2 ; 0x274 + 272: 80 53 subi r24, 0x30 ; 48 + 274: 0c 94 cc 00 jmp 0x198 ; 0x198 + +00000278 : + 278: cf 93 push r28 + 27a: df 93 push r29 + 27c: ec 01 movw r28, r24 + 27e: 89 91 ld r24, Y+ + 280: 88 23 and r24, r24 + 282: 19 f0 breq .+6 ; 0x28a + 284: 0e 94 bc 00 call 0x178 ; 0x178 + 288: fa cf rjmp .-12 ; 0x27e + 28a: df 91 pop r29 + 28c: cf 91 pop r28 + 28e: 08 95 ret + +00000290 : + 290: ef 92 push r14 + 292: ff 92 push r15 + 294: 0f 93 push r16 + 296: 1f 93 push r17 + 298: cf 93 push r28 + 29a: df 93 push r29 + 29c: 00 d0 rcall .+0 ; 0x29e + 29e: cd b7 in r28, 0x3d ; 61 + 2a0: de b7 in r29, 0x3e ; 62 + 2a2: 28 e0 ldi r18, 0x08 ; 8 + 2a4: 82 9f mul r24, r18 + 2a6: c0 01 movw r24, r0 + 2a8: 11 24 eor r1, r1 + 2aa: 80 64 ori r24, 0x40 ; 64 + 2ac: 69 83 std Y+1, r22 ; 0x01 + 2ae: 7a 83 std Y+2, r23 ; 0x02 + 2b0: 0e 94 cc 00 call 0x198 ; 0x198 + 2b4: 69 81 ldd r22, Y+1 ; 0x01 + 2b6: e6 2e mov r14, r22 + 2b8: 7a 81 ldd r23, Y+2 ; 0x02 + 2ba: f7 2e mov r15, r23 + 2bc: 87 01 movw r16, r14 + 2be: 08 5f subi r16, 0xF8 ; 248 + 2c0: 1f 4f sbci r17, 0xFF ; 255 + 2c2: f7 01 movw r30, r14 + 2c4: 81 91 ld r24, Z+ + 2c6: 7f 01 movw r14, r30 + 2c8: 0e 94 bc 00 call 0x178 ; 0x178 + 2cc: e0 16 cp r14, r16 + 2ce: f1 06 cpc r15, r17 + 2d0: c1 f7 brne .-16 ; 0x2c2 + 2d2: 80 e8 ldi r24, 0x80 ; 128 + 2d4: 0f 90 pop r0 + 2d6: 0f 90 pop r0 + 2d8: df 91 pop r29 + 2da: cf 91 pop r28 + 2dc: 1f 91 pop r17 + 2de: 0f 91 pop r16 + 2e0: ff 90 pop r15 + 2e2: ef 90 pop r14 + 2e4: 0c 94 cc 00 jmp 0x198 ; 0x198 + +000002e8
: + 2e8: 81 e0 ldi r24, 0x01 ; 1 + 2ea: 0e 94 59 00 call 0xb2 ; 0xb2 + 2ee: 0e 94 5c 00 call 0xb8 ; 0xb8 + 2f2: 0e 94 a2 00 call 0x144 ; 0x144 + 2f6: 0e 94 e5 00 call 0x1ca ; 0x1ca + 2fa: 81 e0 ldi r24, 0x01 ; 1 + 2fc: 91 e0 ldi r25, 0x01 ; 1 + 2fe: 0e 94 3c 01 call 0x278 ; 0x278 + 302: 85 e0 ldi r24, 0x05 ; 5 + 304: 0e 94 8a 00 call 0x114 ; 0x114 + 308: 2f ef ldi r18, 0xFF ; 255 + 30a: 89 e6 ldi r24, 0x69 ; 105 + 30c: 98 e1 ldi r25, 0x18 ; 24 + 30e: 21 50 subi r18, 0x01 ; 1 + 310: 80 40 sbci r24, 0x00 ; 0 + 312: 90 40 sbci r25, 0x00 ; 0 + 314: e1 f7 brne .-8 ; 0x30e + 316: 00 c0 rjmp .+0 ; 0x318 + 318: 00 00 nop + 31a: f3 cf rjmp .-26 ; 0x302 + +0000031c <_exit>: + 31c: f8 94 cli + +0000031e <__stop_program>: + 31e: ff cf rjmp .-2 ; 0x31e <__stop_program> diff --git a/Release/avr-lib-lcd.map b/Release/avr-lib-lcd.map new file mode 100644 index 0000000..4b3bab2 --- /dev/null +++ b/Release/avr-lib-lcd.map @@ -0,0 +1,479 @@ +Archive member included to satisfy reference by file (symbol) + +/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o (exit) +/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + ./libs/led/led.o (__do_copy_data) + +Memory Configuration + +Name Origin Length Attributes +text 0x0000000000000000 0x0000000000020000 xr +data 0x0000000000800060 0x000000000000ffa0 rw !x +eeprom 0x0000000000810000 0x0000000000010000 rw !x +fuse 0x0000000000820000 0x0000000000000400 rw !x +lock 0x0000000000830000 0x0000000000000400 rw !x +signature 0x0000000000840000 0x0000000000000400 rw !x +user_signatures 0x0000000000850000 0x0000000000000400 rw !x +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o +LOAD ./libs/led/led.o +LOAD ./libs/lcd/hd44780/hd44780.o +LOAD ./main.o +START GROUP +LOAD /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega168p.a +END GROUP + 0x0000000000020000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000 + 0x000000000000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x0000000000010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + 0x0000000000000400 __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x0000000000000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x0000000000000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x0000000000000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.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 0x0000000000000000 0x320 + *(.vectors) + .vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + 0x0000000000000000 __vectors + 0x0000000000000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + 0x0000000000000068 . = ALIGN (0x2) + 0x0000000000000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x0000000000000068 0x0 linker stubs + *(.trampolines*) + 0x0000000000000068 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x0000000000000068 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x0000000000000068 __ctors_start = . + *(.ctors) + 0x0000000000000068 __ctors_end = . + 0x0000000000000068 __dtors_start = . + *(.dtors) + 0x0000000000000068 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000000000000068 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + 0x0000000000000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000000000000068 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x0000000000000074 0x16 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x0000000000000074 __do_copy_data + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000000000008a 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + *(.init9) + *(.text) + .text 0x0000000000000092 0x4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + 0x0000000000000092 __vector_22 + 0x0000000000000092 __vector_1 + 0x0000000000000092 __vector_24 + 0x0000000000000092 __vector_12 + 0x0000000000000092 __bad_interrupt + 0x0000000000000092 __vector_6 + 0x0000000000000092 __vector_3 + 0x0000000000000092 __vector_23 + 0x0000000000000092 __vector_25 + 0x0000000000000092 __vector_11 + 0x0000000000000092 __vector_13 + 0x0000000000000092 __vector_17 + 0x0000000000000092 __vector_19 + 0x0000000000000092 __vector_7 + 0x0000000000000092 __vector_5 + 0x0000000000000092 __vector_4 + 0x0000000000000092 __vector_9 + 0x0000000000000092 __vector_2 + 0x0000000000000092 __vector_21 + 0x0000000000000092 __vector_15 + 0x0000000000000092 __vector_8 + 0x0000000000000092 __vector_14 + 0x0000000000000092 __vector_10 + 0x0000000000000092 __vector_16 + 0x0000000000000092 __vector_18 + 0x0000000000000092 __vector_20 + .text 0x0000000000000096 0x0 ./libs/led/led.o + .text 0x0000000000000096 0x0 ./libs/lcd/hd44780/hd44780.o + .text 0x0000000000000096 0x0 ./main.o + .text 0x0000000000000096 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text 0x0000000000000096 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x0000000000000096 . = ALIGN (0x2) + *(.text.*) + .text.led_initPorts + 0x0000000000000096 0x1c ./libs/led/led.o + 0x0000000000000096 led_initPorts + .text.led_config + 0x00000000000000b2 0x6 ./libs/led/led.o + 0x00000000000000b2 led_config + .text.led_init + 0x00000000000000b8 0x4 ./libs/led/led.o + 0x00000000000000b8 led_init + .text.led_off 0x00000000000000bc 0x2c ./libs/led/led.o + 0x00000000000000bc led_off + .text.led_on 0x00000000000000e8 0x2c ./libs/led/led.o + 0x00000000000000e8 led_on + .text.led_flash + 0x0000000000000114 0x30 ./libs/led/led.o + 0x0000000000000114 led_flash + .text.led_disco + 0x0000000000000144 0x12 ./libs/led/led.o + 0x0000000000000144 led_disco + .text.lcd_enable + 0x0000000000000156 0xe ./libs/lcd/hd44780/hd44780.o + .text.lcd_out 0x0000000000000164 0x14 ./libs/lcd/hd44780/hd44780.o + .text.lcd_data + 0x0000000000000178 0x20 ./libs/lcd/hd44780/hd44780.o + 0x0000000000000178 lcd_data + .text.lcd_command + 0x0000000000000198 0x1e ./libs/lcd/hd44780/hd44780.o + 0x0000000000000198 lcd_command + .text.lcd_clear + 0x00000000000001b6 0x14 ./libs/lcd/hd44780/hd44780.o + 0x00000000000001b6 lcd_clear + .text.lcd_init + 0x00000000000001ca 0x72 ./libs/lcd/hd44780/hd44780.o + 0x00000000000001ca lcd_init + .text.lcd_home + 0x000000000000023c 0x14 ./libs/lcd/hd44780/hd44780.o + 0x000000000000023c lcd_home + .text.lcd_setcursor + 0x0000000000000250 0x28 ./libs/lcd/hd44780/hd44780.o + 0x0000000000000250 lcd_setcursor + .text.lcd_string + 0x0000000000000278 0x18 ./libs/lcd/hd44780/hd44780.o + 0x0000000000000278 lcd_string + .text.lcd_generatechar + 0x0000000000000290 0x58 ./libs/lcd/hd44780/hd44780.o + 0x0000000000000290 lcd_generatechar + .text.startup.main + 0x00000000000002e8 0x34 ./main.o + 0x00000000000002e8 main + .text.libgcc.mul + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.div + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.prologue + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.builtins + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.fmul + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.fixed + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.mul + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.div + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x000000000000031c . = ALIGN (0x2) + *(.fini9) + .fini9 0x000000000000031c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x000000000000031c exit + 0x000000000000031c _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000000000000031c 0x4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x0000000000000320 _etext = . + +.data 0x0000000000800100 0xe load address 0x0000000000000320 + 0x0000000000800100 PROVIDE (__data_start, .) + *(.data) + .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + .data 0x0000000000800100 0x0 ./libs/led/led.o + .data 0x0000000000800100 0x0 ./libs/lcd/hd44780/hd44780.o + .data 0x0000000000800100 0x0 ./main.o + .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + *(.data*) + .data.led_flags + 0x0000000000800100 0x1 ./libs/led/led.o + 0x0000000000800100 led_flags + *(.rodata) + .rodata 0x0000000000800101 0xc ./main.o + *(.rodata*) + *(.gnu.linkonce.d*) + 0x000000000080010e . = ALIGN (0x2) + *fill* 0x000000000080010d 0x1 + 0x000000000080010e _edata = . + 0x000000000080010e PROVIDE (__data_end, .) + +.bss 0x000000000080010e 0x0 + [!provide] PROVIDE (__bss_start, .) + *(.bss) + .bss 0x000000000080010e 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + .bss 0x000000000080010e 0x0 ./libs/led/led.o + .bss 0x000000000080010e 0x0 ./libs/lcd/hd44780/hd44780.o + .bss 0x000000000080010e 0x0 ./main.o + .bss 0x000000000080010e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .bss 0x000000000080010e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + *(.bss*) + *(COMMON) + [!provide] PROVIDE (__bss_end, .) + 0x0000000000000320 __data_load_start = LOADADDR (.data) + 0x000000000000032e __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x000000000080010e 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x000000000080010e _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x0000000000810000 0x0 + *(.eeprom*) + 0x0000000000810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x0000000000000000 0x11 + *(.comment) + .comment 0x0000000000000000 0x11 ./libs/led/led.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 ./libs/lcd/hd44780/hd44780.o + .comment 0x0000000000000011 0x12 ./main.o + +.note.gnu.avr.deviceinfo + 0x0000000000000000 0x40 + .note.gnu.avr.deviceinfo + 0x0000000000000000 0x40 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.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_line.* .debug_line_end) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges + *(.debug_ranges) + +.debug_macro + *(.debug_macro) +OUTPUT(avr-lib-lcd.elf elf32-avr) +LOAD linker stubs diff --git a/Release/avr-lib-led.eep b/Release/avr-lib-led.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/Release/avr-lib-led.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/Release/avr-lib-led.elf b/Release/avr-lib-led.elf new file mode 100755 index 0000000..e3371d3 Binary files /dev/null and b/Release/avr-lib-led.elf differ diff --git a/Release/avr-lib-led.hex b/Release/avr-lib-led.hex new file mode 100644 index 0000000..452d55a --- /dev/null +++ b/Release/avr-lib-led.hex @@ -0,0 +1,27 @@ +:100000000C9434000C9449000C9449000C94490061 +:100010000C9449000C9449000C9449000C9449003C +:100020000C9449000C9449000C9449000C9449002C +:100030000C9449000C9449000C9449000C9449001C +:100040000C9449000C9449000C9449000C9449000C +:100050000C9449000C9449000C9449000C944900FC +:100060000C9449000C94490011241FBECFEFD4E03A +:10007000DEBFCDBF11E0A0E0B1E0E2E8F1E002C0F8 +:1000800005900D92A230B107D9F70E94AB000C94F5 +:10009000BF000C9400008AB1806E8AB98091000183 +:1000A00081FF03C08BB18F7102C08BB1806E8BB9A1 +:1000B00008958093000108950C944B00982F80912F +:1000C00000014BB121E030E0B90102C0660F771F9B +:1000D0009A95E2F781FF04C0CB018095842302C08A +:1000E000CB01842B8BB90895982F809100014BB1DF +:1000F00021E030E0B90102C0660F771F9A95E2F760 +:1001000081FF03C0CB01842B03C0CB0180958423E6 +:100110008BB90895CF93C82F0E9474008FE19EE49D +:100120000197F1F700C000008C2F0E945E009FEF46 +:100130002AE683E0915020408040E1F700C00000B3 +:10014000CF91089585E00E948A0086E00E948A008F +:1001500087E00C948A0081E00E9459000E945C00B4 +:100160000E94A20085E00E948A002FEF89E698E1B4 +:10017000215080409040E1F700C00000F3CFF89498 +:02018000FFCFAF +:0201820001007A +:00000001FF diff --git a/Release/avr-lib-led.lss b/Release/avr-lib-led.lss new file mode 100644 index 0000000..313bce3 --- /dev/null +++ b/Release/avr-lib-led.lss @@ -0,0 +1,193 @@ + +avr-lib-led.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000002 00800100 00000182 000001f6 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00000182 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .comment 00000011 00000000 00000000 000001f8 2**0 + CONTENTS, READONLY + 3 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 0000020c 2**2 + CONTENTS, READONLY + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 8: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 10: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 14: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 18: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 1c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 20: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 24: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 28: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 2c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 30: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 34: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 38: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 3c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 40: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 44: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 48: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 4c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 50: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 54: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 58: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 5c: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 60: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + 64: 0c 94 49 00 jmp 0x92 ; 0x92 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d4 e0 ldi r29, 0x04 ; 4 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 11 e0 ldi r17, 0x01 ; 1 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: e2 e8 ldi r30, 0x82 ; 130 + 7c: f1 e0 ldi r31, 0x01 ; 1 + 7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10> + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + 84: a2 30 cpi r26, 0x02 ; 2 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc> + 8a: 0e 94 ab 00 call 0x156 ; 0x156
+ 8e: 0c 94 bf 00 jmp 0x17e ; 0x17e <_exit> + +00000092 <__bad_interrupt>: + 92: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +00000096 : + 96: 8a b1 in r24, 0x0a ; 10 + 98: 80 6e ori r24, 0xE0 ; 224 + 9a: 8a b9 out 0x0a, r24 ; 10 + 9c: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <__data_start> + a0: 81 ff sbrs r24, 1 + a2: 03 c0 rjmp .+6 ; 0xaa + a4: 8b b1 in r24, 0x0b ; 11 + a6: 8f 71 andi r24, 0x1F ; 31 + a8: 02 c0 rjmp .+4 ; 0xae + aa: 8b b1 in r24, 0x0b ; 11 + ac: 80 6e ori r24, 0xE0 ; 224 + ae: 8b b9 out 0x0b, r24 ; 11 + b0: 08 95 ret + +000000b2 : + b2: 80 93 00 01 sts 0x0100, r24 ; 0x800100 <__data_start> + b6: 08 95 ret + +000000b8 : + b8: 0c 94 4b 00 jmp 0x96 ; 0x96 + +000000bc : + bc: 98 2f mov r25, r24 + be: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <__data_start> + c2: 4b b1 in r20, 0x0b ; 11 + c4: 21 e0 ldi r18, 0x01 ; 1 + c6: 30 e0 ldi r19, 0x00 ; 0 + c8: b9 01 movw r22, r18 + ca: 02 c0 rjmp .+4 ; 0xd0 + cc: 66 0f add r22, r22 + ce: 77 1f adc r23, r23 + d0: 9a 95 dec r25 + d2: e2 f7 brpl .-8 ; 0xcc + d4: 81 ff sbrs r24, 1 + d6: 04 c0 rjmp .+8 ; 0xe0 + d8: cb 01 movw r24, r22 + da: 80 95 com r24 + dc: 84 23 and r24, r20 + de: 02 c0 rjmp .+4 ; 0xe4 + e0: cb 01 movw r24, r22 + e2: 84 2b or r24, r20 + e4: 8b b9 out 0x0b, r24 ; 11 + e6: 08 95 ret + +000000e8 : + e8: 98 2f mov r25, r24 + ea: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <__data_start> + ee: 4b b1 in r20, 0x0b ; 11 + f0: 21 e0 ldi r18, 0x01 ; 1 + f2: 30 e0 ldi r19, 0x00 ; 0 + f4: b9 01 movw r22, r18 + f6: 02 c0 rjmp .+4 ; 0xfc + f8: 66 0f add r22, r22 + fa: 77 1f adc r23, r23 + fc: 9a 95 dec r25 + fe: e2 f7 brpl .-8 ; 0xf8 + 100: 81 ff sbrs r24, 1 + 102: 03 c0 rjmp .+6 ; 0x10a + 104: cb 01 movw r24, r22 + 106: 84 2b or r24, r20 + 108: 03 c0 rjmp .+6 ; 0x110 + 10a: cb 01 movw r24, r22 + 10c: 80 95 com r24 + 10e: 84 23 and r24, r20 + 110: 8b b9 out 0x0b, r24 ; 11 + 112: 08 95 ret + +00000114 : + 114: cf 93 push r28 + 116: c8 2f mov r28, r24 + 118: 0e 94 74 00 call 0xe8 ; 0xe8 + 11c: 8f e1 ldi r24, 0x1F ; 31 + 11e: 9e e4 ldi r25, 0x4E ; 78 + 120: 01 97 sbiw r24, 0x01 ; 1 + 122: f1 f7 brne .-4 ; 0x120 + 124: 00 c0 rjmp .+0 ; 0x126 + 126: 00 00 nop + 128: 8c 2f mov r24, r28 + 12a: 0e 94 5e 00 call 0xbc ; 0xbc + 12e: 9f ef ldi r25, 0xFF ; 255 + 130: 2a e6 ldi r18, 0x6A ; 106 + 132: 83 e0 ldi r24, 0x03 ; 3 + 134: 91 50 subi r25, 0x01 ; 1 + 136: 20 40 sbci r18, 0x00 ; 0 + 138: 80 40 sbci r24, 0x00 ; 0 + 13a: e1 f7 brne .-8 ; 0x134 + 13c: 00 c0 rjmp .+0 ; 0x13e + 13e: 00 00 nop + 140: cf 91 pop r28 + 142: 08 95 ret + +00000144 : + 144: 85 e0 ldi r24, 0x05 ; 5 + 146: 0e 94 8a 00 call 0x114 ; 0x114 + 14a: 86 e0 ldi r24, 0x06 ; 6 + 14c: 0e 94 8a 00 call 0x114 ; 0x114 + 150: 87 e0 ldi r24, 0x07 ; 7 + 152: 0c 94 8a 00 jmp 0x114 ; 0x114 + +00000156
: + 156: 81 e0 ldi r24, 0x01 ; 1 + 158: 0e 94 59 00 call 0xb2 ; 0xb2 + 15c: 0e 94 5c 00 call 0xb8 ; 0xb8 + 160: 0e 94 a2 00 call 0x144 ; 0x144 + 164: 85 e0 ldi r24, 0x05 ; 5 + 166: 0e 94 8a 00 call 0x114 ; 0x114 + 16a: 2f ef ldi r18, 0xFF ; 255 + 16c: 89 e6 ldi r24, 0x69 ; 105 + 16e: 98 e1 ldi r25, 0x18 ; 24 + 170: 21 50 subi r18, 0x01 ; 1 + 172: 80 40 sbci r24, 0x00 ; 0 + 174: 90 40 sbci r25, 0x00 ; 0 + 176: e1 f7 brne .-8 ; 0x170 + 178: 00 c0 rjmp .+0 ; 0x17a + 17a: 00 00 nop + 17c: f3 cf rjmp .-26 ; 0x164 + +0000017e <_exit>: + 17e: f8 94 cli + +00000180 <__stop_program>: + 180: ff cf rjmp .-2 ; 0x180 <__stop_program> diff --git a/Release/avr-lib-led.map b/Release/avr-lib-led.map new file mode 100644 index 0000000..72c1c5b --- /dev/null +++ b/Release/avr-lib-led.map @@ -0,0 +1,445 @@ +Archive member included to satisfy reference by file (symbol) + +/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o (exit) +/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + ./libs/led/led.o (__do_copy_data) + +Memory Configuration + +Name Origin Length Attributes +text 0x0000000000000000 0x0000000000020000 xr +data 0x0000000000800060 0x000000000000ffa0 rw !x +eeprom 0x0000000000810000 0x0000000000010000 rw !x +fuse 0x0000000000820000 0x0000000000000400 rw !x +lock 0x0000000000830000 0x0000000000000400 rw !x +signature 0x0000000000840000 0x0000000000000400 rw !x +user_signatures 0x0000000000850000 0x0000000000000400 rw !x +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o +LOAD ./libs/led/led.o +LOAD ./main.o +START GROUP +LOAD /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega168p.a +END GROUP + 0x0000000000020000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000 + 0x000000000000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x0000000000010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + 0x0000000000000400 __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x0000000000000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x0000000000000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x0000000000000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.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 0x0000000000000000 0x182 + *(.vectors) + .vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + 0x0000000000000000 __vectors + 0x0000000000000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + 0x0000000000000068 . = ALIGN (0x2) + 0x0000000000000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x0000000000000068 0x0 linker stubs + *(.trampolines*) + 0x0000000000000068 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x0000000000000068 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x0000000000000068 __ctors_start = . + *(.ctors) + 0x0000000000000068 __ctors_end = . + 0x0000000000000068 __dtors_start = . + *(.dtors) + 0x0000000000000068 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000000000000068 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + 0x0000000000000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000000000000068 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x0000000000000074 0x16 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x0000000000000074 __do_copy_data + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000000000008a 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + *(.init9) + *(.text) + .text 0x0000000000000092 0x4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + 0x0000000000000092 __vector_22 + 0x0000000000000092 __vector_1 + 0x0000000000000092 __vector_24 + 0x0000000000000092 __vector_12 + 0x0000000000000092 __bad_interrupt + 0x0000000000000092 __vector_6 + 0x0000000000000092 __vector_3 + 0x0000000000000092 __vector_23 + 0x0000000000000092 __vector_25 + 0x0000000000000092 __vector_11 + 0x0000000000000092 __vector_13 + 0x0000000000000092 __vector_17 + 0x0000000000000092 __vector_19 + 0x0000000000000092 __vector_7 + 0x0000000000000092 __vector_5 + 0x0000000000000092 __vector_4 + 0x0000000000000092 __vector_9 + 0x0000000000000092 __vector_2 + 0x0000000000000092 __vector_21 + 0x0000000000000092 __vector_15 + 0x0000000000000092 __vector_8 + 0x0000000000000092 __vector_14 + 0x0000000000000092 __vector_10 + 0x0000000000000092 __vector_16 + 0x0000000000000092 __vector_18 + 0x0000000000000092 __vector_20 + .text 0x0000000000000096 0x0 ./libs/led/led.o + .text 0x0000000000000096 0x0 ./main.o + .text 0x0000000000000096 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text 0x0000000000000096 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x0000000000000096 . = ALIGN (0x2) + *(.text.*) + .text.led_initPorts + 0x0000000000000096 0x1c ./libs/led/led.o + 0x0000000000000096 led_initPorts + .text.led_config + 0x00000000000000b2 0x6 ./libs/led/led.o + 0x00000000000000b2 led_config + .text.led_init + 0x00000000000000b8 0x4 ./libs/led/led.o + 0x00000000000000b8 led_init + .text.led_off 0x00000000000000bc 0x2c ./libs/led/led.o + 0x00000000000000bc led_off + .text.led_on 0x00000000000000e8 0x2c ./libs/led/led.o + 0x00000000000000e8 led_on + .text.led_flash + 0x0000000000000114 0x30 ./libs/led/led.o + 0x0000000000000114 led_flash + .text.disco 0x0000000000000144 0x12 ./libs/led/led.o + 0x0000000000000144 disco + .text.startup.main + 0x0000000000000156 0x28 ./main.o + 0x0000000000000156 main + .text.libgcc.mul + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.div + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.prologue + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.builtins + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.fmul + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.fixed + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .text.libgcc.mul + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.div + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + 0x000000000000017e . = ALIGN (0x2) + *(.fini9) + .fini9 0x000000000000017e 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + 0x000000000000017e exit + 0x000000000000017e _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000000000000017e 0x4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x0000000000000182 _etext = . + +.data 0x0000000000800100 0x2 load address 0x0000000000000182 + 0x0000000000800100 PROVIDE (__data_start, .) + *(.data) + .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + .data 0x0000000000800100 0x0 ./libs/led/led.o + .data 0x0000000000800100 0x0 ./main.o + .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + *(.data*) + .data.led_flags + 0x0000000000800100 0x1 ./libs/led/led.o + 0x0000000000800100 led_flags + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x0000000000800102 . = ALIGN (0x2) + *fill* 0x0000000000800101 0x1 + 0x0000000000800102 _edata = . + 0x0000000000800102 PROVIDE (__data_end, .) + +.bss 0x0000000000800102 0x0 + [!provide] PROVIDE (__bss_start, .) + *(.bss) + .bss 0x0000000000800102 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + .bss 0x0000000000800102 0x0 ./libs/led/led.o + .bss 0x0000000000800102 0x0 ./main.o + .bss 0x0000000000800102 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) + .bss 0x0000000000800102 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) + *(.bss*) + *(COMMON) + [!provide] PROVIDE (__bss_end, .) + 0x0000000000000182 __data_load_start = LOADADDR (.data) + 0x0000000000000184 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0000000000800102 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x0000000000800102 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x0000000000810000 0x0 + *(.eeprom*) + 0x0000000000810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x0000000000000000 0x11 + *(.comment) + .comment 0x0000000000000000 0x11 ./libs/led/led.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 ./main.o + +.note.gnu.avr.deviceinfo + 0x0000000000000000 0x40 + .note.gnu.avr.deviceinfo + 0x0000000000000000 0x40 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega168p.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.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_line.* .debug_line_end) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges + *(.debug_ranges) + +.debug_macro + *(.debug_macro) +OUTPUT(avr-lib-led.elf elf32-avr) +LOAD linker stubs diff --git a/Release/libs/lcd/hd44780/hd44780.d b/Release/libs/lcd/hd44780/hd44780.d new file mode 100644 index 0000000..919cf03 --- /dev/null +++ b/Release/libs/lcd/hd44780/hd44780.d @@ -0,0 +1,4 @@ +libs/lcd/hd44780/hd44780.o: ../libs/lcd/hd44780/hd44780.c \ + ../libs/lcd/hd44780/hd44780.h + +../libs/lcd/hd44780/hd44780.h: diff --git a/Release/libs/lcd/hd44780/hd44780.o b/Release/libs/lcd/hd44780/hd44780.o new file mode 100644 index 0000000..68d1f81 Binary files /dev/null and b/Release/libs/lcd/hd44780/hd44780.o differ diff --git a/Release/libs/lcd/hd44780/subdir.mk b/Release/libs/lcd/hd44780/subdir.mk new file mode 100644 index 0000000..1488249 --- /dev/null +++ b/Release/libs/lcd/hd44780/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../libs/lcd/hd44780/hd44780.c + +OBJS += \ +./libs/lcd/hd44780/hd44780.o + +C_DEPS += \ +./libs/lcd/hd44780/hd44780.d + + +# Each subdirectory must supply rules for building sources it contributes +libs/lcd/hd44780/%.o: ../libs/lcd/hd44780/%.c + @echo 'Building file: $<' + @echo 'Invoking: AVR Compiler' + avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega168p -DF_CPU=8000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/libs/lcd/subdir.mk b/Release/libs/lcd/subdir.mk new file mode 100644 index 0000000..1957028 --- /dev/null +++ b/Release/libs/lcd/subdir.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables + +# Each subdirectory must supply rules for building sources it contributes + diff --git a/Release/libs/led/led.d b/Release/libs/led/led.d new file mode 100644 index 0000000..ac70a3b --- /dev/null +++ b/Release/libs/led/led.d @@ -0,0 +1,3 @@ +libs/led/led.o: ../libs/led/led.c ../libs/led/led.h + +../libs/led/led.h: diff --git a/Release/libs/led/led.o b/Release/libs/led/led.o new file mode 100644 index 0000000..0f9e6c9 Binary files /dev/null and b/Release/libs/led/led.o differ diff --git a/Release/libs/led/subdir.mk b/Release/libs/led/subdir.mk new file mode 100644 index 0000000..f6afad7 --- /dev/null +++ b/Release/libs/led/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../libs/led/led.c + +OBJS += \ +./libs/led/led.o + +C_DEPS += \ +./libs/led/led.d + + +# Each subdirectory must supply rules for building sources it contributes +libs/led/%.o: ../libs/led/%.c + @echo 'Building file: $<' + @echo 'Invoking: AVR Compiler' + avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega168p -DF_CPU=8000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/main.d b/Release/main.d new file mode 100644 index 0000000..7b207f8 --- /dev/null +++ b/Release/main.d @@ -0,0 +1,5 @@ +main.o: ../main.c ../libs/led/led.h ../libs/lcd/hd44780/hd44780.h + +../libs/led/led.h: + +../libs/lcd/hd44780/hd44780.h: diff --git a/Release/main.o b/Release/main.o new file mode 100644 index 0000000..34e9cbe Binary files /dev/null and b/Release/main.o differ diff --git a/Release/makefile b/Release/makefile new file mode 100644 index 0000000..38f3ada --- /dev/null +++ b/Release/makefile @@ -0,0 +1,91 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include libs/led/subdir.mk +-include libs/lcd/hd44780/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +LSS += \ +avr-lib-lcd.lss \ + +FLASH_IMAGE += \ +avr-lib-lcd.hex \ + +EEPROM_IMAGE += \ +avr-lib-lcd.eep \ + +SIZEDUMMY += \ +sizedummy \ + + +# All Target +all: avr-lib-lcd.elf secondary-outputs + +# Tool invocations +avr-lib-lcd.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: AVR C Linker' + avr-gcc -Wl,-Map,avr-lib-lcd.map -mmcu=atmega168p -o "avr-lib-lcd.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +avr-lib-lcd.lss: avr-lib-lcd.elf + @echo 'Invoking: AVR Create Extended Listing' + -avr-objdump -h -S avr-lib-lcd.elf >"avr-lib-lcd.lss" + @echo 'Finished building: $@' + @echo ' ' + +avr-lib-lcd.hex: avr-lib-lcd.elf + @echo 'Create Flash image (ihex format)' + -avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex avr-lib-lcd.elf "avr-lib-lcd.hex" + @echo 'Finished building: $@' + @echo ' ' + +avr-lib-lcd.eep: avr-lib-lcd.elf + @echo 'Create eeprom image (ihex format)' + -avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex avr-lib-lcd.elf "avr-lib-lcd.eep" + @echo 'Finished building: $@' + @echo ' ' + +sizedummy: avr-lib-lcd.elf + @echo 'Invoking: Print Size' + -avr-size --format=avr --mcu=atmega168p avr-lib-lcd.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(FLASH_IMAGE)$(ELFS)$(OBJS)$(ASM_DEPS)$(EEPROM_IMAGE)$(S_DEPS)$(SIZEDUMMY)$(S_UPPER_DEPS)$(LSS)$(C_DEPS) avr-lib-lcd.elf + -@echo ' ' + +secondary-outputs: $(LSS) $(FLASH_IMAGE) $(EEPROM_IMAGE) $(SIZEDUMMY) + +.PHONY: all clean dependents + +-include ../makefile.targets diff --git a/Release/objects.mk b/Release/objects.mk new file mode 100644 index 0000000..742c2da --- /dev/null +++ b/Release/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Release/sources.mk b/Release/sources.mk new file mode 100644 index 0000000..950d7c5 --- /dev/null +++ b/Release/sources.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +OBJ_SRCS := +S_SRCS := +ASM_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +FLASH_IMAGE := +ELFS := +OBJS := +ASM_DEPS := +EEPROM_IMAGE := +S_DEPS := +SIZEDUMMY := +S_UPPER_DEPS := +LSS := +C_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +libs/lcd/hd44780 \ +libs/led \ +. \ + diff --git a/Release/subdir.mk b/Release/subdir.mk new file mode 100644 index 0000000..c4b52d4 --- /dev/null +++ b/Release/subdir.mk @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../main.c + +OBJS += \ +./main.o + +C_DEPS += \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: AVR Compiler' + avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega168p -DF_CPU=8000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/libs/lcd/hd44780/hd44780.c b/libs/lcd/hd44780/hd44780.c new file mode 100644 index 0000000..4cbffab --- /dev/null +++ b/libs/lcd/hd44780/hd44780.c @@ -0,0 +1,177 @@ +// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus +// http://www.mikrocontroller.net/articles/HD44780 +// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung +// +// Die Pinbelegung ist über defines in lcd-routines.h einstellbar + +#include +#include "hd44780.h" +#include + +//////////////////////////////////////////////////////////////////////////////// +// Erzeugt einen Enable-Puls +static void lcd_enable( void ) +{ + LCD_PORT |= (1<>(4-LCD_DB)); // Maske löschen + LCD_PORT |= (data>>(4-LCD_DB)); // Bits setzen + lcd_enable(); +} + +//////////////////////////////////////////////////////////////////////////////// +// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden. +void lcd_init( void ) +{ + // verwendete Pins auf Ausgang schalten + uint8_t pins = (0x0F << LCD_DB) | // 4 Datenleitungen + (1< PORTD Bit PD0-PD3 +#define LCD_PORT PORTC +#define LCD_DDR DDRC +#define LCD_DB PC0 + +// LCD RS <--> PORTD Bit PD4 (RS: 1=Data, 0=Command) +#define LCD_RS PC4 + +// LCD EN <--> PORTD Bit PD5 (EN: 1-Impuls für Daten) +#define LCD_EN PC5 + +//////////////////////////////////////////////////////////////////////////////// +// LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden) + +#define LCD_BOOTUP_MS 15 +#define LCD_ENABLE_US 20 +#define LCD_WRITEDATA_US 46 +#define LCD_COMMAND_US 42 + +#define LCD_SOFT_RESET_MS1 5 +#define LCD_SOFT_RESET_MS2 1 +#define LCD_SOFT_RESET_MS3 1 +#define LCD_SET_4BITMODE_MS 5 + +#define LCD_CLEAR_DISPLAY_MS 2 +#define LCD_CURSOR_HOME_MS 2 + +//////////////////////////////////////////////////////////////////////////////// +// Zeilendefinitionen des verwendeten LCD +// Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen +// Bei anderen Zeilenlängen müssen diese Einträge angepasst werden + +#define LCD_DDADR_LINE1 0x00 +#define LCD_DDADR_LINE2 0x40 +#define LCD_DDADR_LINE3 0x10 +#define LCD_DDADR_LINE4 0x50 + +//////////////////////////////////////////////////////////////////////////////// +// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden. +void lcd_init( void ); + +//////////////////////////////////////////////////////////////////////////////// +// LCD löschen +void lcd_clear( void ); + +//////////////////////////////////////////////////////////////////////////////// +// Cursor in die 1. Zeile, 0-te Spalte +void lcd_home( void ); + +//////////////////////////////////////////////////////////////////////////////// +// Cursor an eine beliebige Position +void lcd_setcursor( uint8_t spalte, uint8_t zeile ); + +//////////////////////////////////////////////////////////////////////////////// +// Ausgabe eines einzelnen Zeichens an der aktuellen Cursorposition +void lcd_data( uint8_t data ); + +//////////////////////////////////////////////////////////////////////////////// +// Ausgabe eines Strings an der aktuellen Cursorposition +void lcd_string( const char *data ); + +//////////////////////////////////////////////////////////////////////////////// +// Definition eines benutzerdefinierten Sonderzeichens. +// data muss auf ein Array[8] mit den Zeilencodes des zu definierenden Zeichens +// zeigen. Später können diese mit lcd_data(0-7) aufgerufen werden +void lcd_generatechar( uint8_t startadresse, const uint8_t *data ); + +//////////////////////////////////////////////////////////////////////////////// +// Ausgabe eines Kommandos an das LCD. +void lcd_command( uint8_t data ); + + +//////////////////////////////////////////////////////////////////////////////// +// LCD Befehle und Argumente. +// Zur Verwendung in lcd_command + +// Clear Display -------------- 0b00000001 +#define LCD_CLEAR_DISPLAY 0x01 + +// Cursor Home ---------------- 0b0000001x +#define LCD_CURSOR_HOME 0x02 + +// Set Entry Mode ------------- 0b000001xx +#define LCD_SET_ENTRY 0x04 + +#define LCD_ENTRY_DECREASE 0x00 +#define LCD_ENTRY_INCREASE 0x02 +#define LCD_ENTRY_NOSHIFT 0x00 +#define LCD_ENTRY_SHIFT 0x01 + +// Set Display ---------------- 0b00001xxx +#define LCD_SET_DISPLAY 0x08 + +#define LCD_DISPLAY_OFF 0x00 +#define LCD_DISPLAY_ON 0x04 +#define LCD_CURSOR_OFF 0x00 +#define LCD_CURSOR_ON 0x02 +#define LCD_BLINKING_OFF 0x00 +#define LCD_BLINKING_ON 0x01 + +// Set Shift ------------------ 0b0001xxxx +#define LCD_SET_SHIFT 0x10 + +#define LCD_CURSOR_MOVE 0x00 +#define LCD_DISPLAY_SHIFT 0x08 +#define LCD_SHIFT_LEFT 0x00 +#define LCD_SHIFT_RIGHT 0x04 + +// Set Function --------------- 0b001xxxxx +#define LCD_SET_FUNCTION 0x20 + +#define LCD_FUNCTION_4BIT 0x00 +#define LCD_FUNCTION_8BIT 0x10 +#define LCD_FUNCTION_1LINE 0x00 +#define LCD_FUNCTION_2LINE 0x08 +#define LCD_FUNCTION_5X7 0x00 +#define LCD_FUNCTION_5X10 0x04 + +#define LCD_SOFT_RESET 0x30 + +// Set CG RAM Address --------- 0b01xxxxxx (Character Generator RAM) +#define LCD_SET_CGADR 0x40 + +#define LCD_GC_CHAR0 0 +#define LCD_GC_CHAR1 1 +#define LCD_GC_CHAR2 2 +#define LCD_GC_CHAR3 3 +#define LCD_GC_CHAR4 4 +#define LCD_GC_CHAR5 5 +#define LCD_GC_CHAR6 6 +#define LCD_GC_CHAR7 7 + +// Set DD RAM Address --------- 0b1xxxxxxx (Display Data RAM) +#define LCD_SET_DDADR 0x80 + +#endif diff --git a/libs/led/led.c b/libs/led/led.c new file mode 100644 index 0000000..7e88ebf --- /dev/null +++ b/libs/led/led.c @@ -0,0 +1,65 @@ +/* + * led.c + * + * Created on: 26.07.2015 + * Author: Flo + */ + +#include "led.h" + +// init default configuration +volatile uint8_t led_flags = LED_ACTIVE_LOW; + +void led_initPorts() { + // define the following pins as OUTPUT + LED_DDR |= ((1< +#include + + +#ifndef LED_H_ +#define LED_H_ + + +#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 LED_PORT PORTD +#define LED_DDR DDRD + +#define LED_ACTIVE_LOW 0x01 +#define LED_ACTIVE_HIGH 0x02 + + +#if defined (__AVR_ATmega8__) + #define LED_BLUE PD5 + #define LED_RED PD6 + #define LED_GREEN PD7 +#elif defined (__AVR_ATmega168P__) + #define LED_BLUE PD5 + #define LED_RED PD6 + #define LED_GREEN PD7 +#elif defined (__AVR_ATtiny2313__) + #define LED_BLUE PD3 + #define LED_RED PD4 + #define LED_GREEN PD5 +#else + #if !defined(__COMPILING_AVR_LIBC__) + #warning "device type not defined" + #endif +#endif + + + +extern volatile uint8_t led_flags; + +void led_init(); +void led_config(uint8_t flags); +void led_initPorts(); + +void led_off(uint8_t pin); +void led_on(uint8_t pin); +void led_flash(uint8_t pin); + +void led_disco(); + + + +#endif /* LED_H_ */ diff --git a/main.c b/main.c new file mode 100644 index 0000000..1c4d6b1 --- /dev/null +++ b/main.c @@ -0,0 +1,41 @@ +/* + * main.c + * + */ + +#ifndef F_CPU +// #define F_CPU 18432000UL + #define F_CPU 8000000UL +#endif + + +#include + +#include "libs/led/led.h" +#include "libs/lcd/hd44780/hd44780.h" + +int main (void) { + led_config(LED_ACTIVE_LOW); led_init(); led_disco(); +// led_config(LED_ACTIVE_HIGH); led_init(); + + + lcd_init(); //lcd_clear(); + lcd_string("It work's!\0"); + + // forever loop + + while(1){ + uint8_t status = 0; + if (status == 0) { + led_flash(LED_BLUE); + } + else { + led_flash(LED_RED); + } + + _delay_ms(1000); + }; + + // will never reach me... + return 0; +}