From 88348b77a6f09c50ed30f8b3bd8c408fae2c3fe3 Mon Sep 17 00:00:00 2001 From: Edwin Koch Date: Sun, 4 Jul 2021 20:14:50 +0200 Subject: [PATCH] added some resources --- C/comand_parser/.vs/comand_parser/v14/.atsuo | Bin 0 -> 53760 bytes C/comand_parser/Debug/Makefile | 163 +++++ C/comand_parser/Debug/cmdp.d | 17 + C/comand_parser/Debug/comand_parser.eep | 1 + C/comand_parser/Debug/comand_parser.elf | Bin 0 -> 19080 bytes C/comand_parser/Debug/comand_parser.hex | 66 ++ C/comand_parser/Debug/comand_parser.lss | 684 ++++++++++++++++++ C/comand_parser/Debug/comand_parser.map | 644 +++++++++++++++++ C/comand_parser/Debug/comand_parser.srec | 67 ++ C/comand_parser/Debug/entryf.d | 36 + C/comand_parser/Debug/hal_usart.d | 42 ++ C/comand_parser/Debug/main.d | 48 ++ C/comand_parser/Debug/makedep.mk | 12 + C/comand_parser/cmdp.c | 29 + C/comand_parser/cmdp.h | 30 + C/comand_parser/comand_parser.atsln | 24 + .../comand_parser.componentinfo.xml | 86 +++ C/comand_parser/comand_parser.cproj | 163 +++++ C/comand_parser/dummy.h | 17 + C/comand_parser/entryf.c | 29 + C/comand_parser/entryf.h | 20 + C/comand_parser/hal_usart.c | 235 ++++++ C/comand_parser/hal_usart.h | 133 ++++ C/comand_parser/main.c | 117 +++ CPP/pImpl_Idom/Makefile | 20 + CPP/pImpl_Idom/gyroscope.hpp | 21 + CPP/pImpl_Idom/gyroscopeImpl.cpp | 44 ++ CPP/pImpl_Idom/main.cpp | 14 + CPP/pImpl_Idom/runtest | Bin 0 -> 22360 bytes CPP/portable_bitfields/BitField.h | 73 ++ CPP/portable_bitfields/Bits.h | 67 ++ .../reg_modeling_in_cpp_example.h | 53 ++ CPP/{ => register_modeling}/yt_link.txt | 0 33 files changed, 2955 insertions(+) create mode 100644 C/comand_parser/.vs/comand_parser/v14/.atsuo create mode 100644 C/comand_parser/Debug/Makefile create mode 100644 C/comand_parser/Debug/cmdp.d create mode 100644 C/comand_parser/Debug/comand_parser.eep create mode 100644 C/comand_parser/Debug/comand_parser.elf create mode 100644 C/comand_parser/Debug/comand_parser.hex create mode 100644 C/comand_parser/Debug/comand_parser.lss create mode 100644 C/comand_parser/Debug/comand_parser.map create mode 100644 C/comand_parser/Debug/comand_parser.srec create mode 100644 C/comand_parser/Debug/entryf.d create mode 100644 C/comand_parser/Debug/hal_usart.d create mode 100644 C/comand_parser/Debug/main.d create mode 100644 C/comand_parser/Debug/makedep.mk create mode 100644 C/comand_parser/cmdp.c create mode 100644 C/comand_parser/cmdp.h create mode 100644 C/comand_parser/comand_parser.atsln create mode 100644 C/comand_parser/comand_parser.componentinfo.xml create mode 100644 C/comand_parser/comand_parser.cproj create mode 100644 C/comand_parser/dummy.h create mode 100644 C/comand_parser/entryf.c create mode 100644 C/comand_parser/entryf.h create mode 100644 C/comand_parser/hal_usart.c create mode 100644 C/comand_parser/hal_usart.h create mode 100644 C/comand_parser/main.c create mode 100644 CPP/pImpl_Idom/Makefile create mode 100644 CPP/pImpl_Idom/gyroscope.hpp create mode 100644 CPP/pImpl_Idom/gyroscopeImpl.cpp create mode 100644 CPP/pImpl_Idom/main.cpp create mode 100644 CPP/pImpl_Idom/runtest create mode 100644 CPP/portable_bitfields/BitField.h create mode 100644 CPP/portable_bitfields/Bits.h create mode 100644 CPP/register_modeling/reg_modeling_in_cpp_example.h rename CPP/{ => register_modeling}/yt_link.txt (100%) diff --git a/C/comand_parser/.vs/comand_parser/v14/.atsuo b/C/comand_parser/.vs/comand_parser/v14/.atsuo new file mode 100644 index 0000000000000000000000000000000000000000..7464deef12a97519c4377d26aebe4f7f6de45149 GIT binary patch literal 53760 zcmeG_Ym6&bd2?@)o0|ke0%=MENtPsp5MQsyXK0&0Ss!$(lcvTUi5vrYliX z(Bd%c*RQ-@f*^i$3 z*MB&152SnFTgHiFP@+myi2#&df;*lVEXidy`c~rPtL0;}&&JMwszEReU(Ib3bwVLx zgg}Ty4Sr=pBBDeSTA~8bG>G;j-9eXoh?6JY0g-P2ziRnONc-ih#yRTs$9gvb5*6A* z0-pp31n|;0*@3@U{(TUO^K{knZ-cZyolNFy;r>_n;vR={`fU(*J^0h$-vnL;kKxk} z^U|O9#_8dB-Iz+JhrbTO?gEc}aor^T?Qp#pJhmy;>z&~52VVq#2D};kCU^^Y61){W z1>OeU4t@)~p8socjZE^7!Zijy4n6@M`!oeU4L$=t3w|4X9z4Qvc5
2U}XC*gO( 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
LU=E|L7vfiorc2!S6t<;JgI!VeQMwXgv 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 literal 0 HcmV?d00001 diff --git a/C/comand_parser/Debug/Makefile b/C/comand_parser/Debug/Makefile new file mode 100644 index 0000000..7055637 --- /dev/null +++ b/C/comand_parser/Debug/Makefile @@ -0,0 +1,163 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +SHELL := cmd.exe +RM := rm -rf + +USER_OBJS := + +LIBS := +PROJ := + +O_SRCS := +C_SRCS := +S_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +PREPROCESSING_SRCS := +OBJS := +OBJS_AS_ARGS := +C_DEPS := +C_DEPS_AS_ARGS := +EXECUTABLES := +OUTPUT_FILE_PATH := +OUTPUT_FILE_PATH_AS_ARGS := +AVR_APP_PATH :=$$$AVR_APP_PATH$$$ +QUOTE := " +ADDITIONAL_DEPENDENCIES:= +OUTPUT_FILE_DEP:= +LIB_DEP:= +LINKER_SCRIPT_DEP:= + +# Every subdirectory with source files must be described here +SUBDIRS := + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../cmdp.c \ +../entryf.c \ +../hal_usart.c \ +../main.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +cmdp.o \ +entryf.o \ +hal_usart.o \ +main.o + +OBJS_AS_ARGS += \ +cmdp.o \ +entryf.o \ +hal_usart.o \ +main.o + +C_DEPS += \ +cmdp.d \ +entryf.d \ +hal_usart.d \ +main.d + +C_DEPS_AS_ARGS += \ +cmdp.d \ +entryf.d \ +hal_usart.d \ +main.d + +OUTPUT_FILE_PATH +=comand_parser.elf + +OUTPUT_FILE_PATH_AS_ARGS +=comand_parser.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +LINKER_SCRIPT_DEP+= + + +# AVR32/GNU C Compiler +./cmdp.o: .././cmdp.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +./entryf.o: .././entryf.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +./hal_usart.o: .././hal_usart.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +./main.o: .././main.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + + + + +# AVR32/GNU Preprocessing Assembler + + + +# AVR32/GNU Assembler + + + + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) + +$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) + @echo Building target: $@ + @echo Invoking: AVR/GNU Linker : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="comand_parser.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" + @echo Finished building target: $@ + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "comand_parser.elf" "comand_parser.hex" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "comand_parser.elf" "comand_parser.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "comand_parser.elf" > "comand_parser.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "comand_parser.elf" "comand_parser.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "comand_parser.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "comand_parser.elf" "comand_parser.a" "comand_parser.hex" "comand_parser.lss" "comand_parser.eep" "comand_parser.map" "comand_parser.srec" "comand_parser.usersignatures" + \ No newline at end of file diff --git a/C/comand_parser/Debug/cmdp.d b/C/comand_parser/Debug/cmdp.d new file mode 100644 index 0000000..6f44c8c --- /dev/null +++ b/C/comand_parser/Debug/cmdp.d @@ -0,0 +1,17 @@ +cmdp.d cmdp.o: .././cmdp.c .././cmdp.h .././entryf.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h + +.././cmdp.h: + +.././entryf.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: diff --git a/C/comand_parser/Debug/comand_parser.eep b/C/comand_parser/Debug/comand_parser.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/C/comand_parser/Debug/comand_parser.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/C/comand_parser/Debug/comand_parser.elf b/C/comand_parser/Debug/comand_parser.elf new file mode 100644 index 0000000000000000000000000000000000000000..dc3621b30cee69c03c0679996c8bc9f2d02c3a58 GIT binary patch literal 19080 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: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 48: 0c 94 ca 00 jmp 0x194 ; 0x194 <__vector_18> + 4c: 0c 94 f1 00 jmp 0x1e2 ; 0x1e2 <__vector_19> + 50: 0c 94 18 01 jmp 0x230 ; 0x230 <__vector_20> + 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d8 e0 ldi r29, 0x08 ; 8 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 11 e0 ldi r17, 0x01 ; 1 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: ec ed ldi r30, 0xDC ; 220 + 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: aa 32 cpi r26, 0x2A ; 42 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc> + +0000008a <__do_clear_bss>: + 8a: 21 e0 ldi r18, 0x01 ; 1 + 8c: aa e2 ldi r26, 0x2A ; 42 + 8e: b1 e0 ldi r27, 0x01 ; 1 + 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> + +00000092 <.do_clear_bss_loop>: + 92: 1d 92 st X+, r1 + +00000094 <.do_clear_bss_start>: + 94: a0 39 cpi r26, 0x90 ; 144 + 96: b2 07 cpc r27, r18 + 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> + 9a: 0e 94 a9 01 call 0x352 ; 0x352
+ 9e: 0c 94 ec 01 jmp 0x3d8 ; 0x3d8 <_exit> + +000000a2 <__bad_interrupt>: + a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000a6 : +#include "entryf.h" +#include + +void ledInit() +{ + DDRB |= (1 << PINB5); + a6: 25 9a sbi 0x04, 5 ; 4 + PORTB &= ~(1 << PINB5); + a8: 2d 98 cbi 0x05, 5 ; 5 + aa: 08 95 ret + +000000ac : +} + +void toggleLed() +{ + PORTB ^= (1 << PINB5); + ac: 95 b1 in r25, 0x05 ; 5 + ae: 80 e2 ldi r24, 0x20 ; 32 + b0: 89 27 eor r24, r25 + b2: 85 b9 out 0x05, r24 ; 5 + b4: 08 95 ret + +000000b6 : +} + +void turnOnLed() +{ + PORTB |= (1 << PINB5); + b6: 2d 9a sbi 0x05, 5 ; 5 + b8: 08 95 ret + +000000ba : +} + +void turnOffLed() +{ + PORTB &= ~(1 << PINB5); + ba: 2d 98 cbi 0x05, 5 ; 5 + bc: 08 95 ret + +000000be : +} + +void hal_USART_unregisterTXCallback() +{ + UCSR0B &= ~(1 << TXCIE0); + txCallback = dummy; + be: 08 95 ret + +000000c0 : + c0: 80 91 c6 00 lds r24, 0x00C6 ; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7e00c6> + c4: 08 95 ret + +000000c6 : + c6: e1 ec ldi r30, 0xC1 ; 193 + c8: f0 e0 ldi r31, 0x00 ; 0 + ca: 80 81 ld r24, Z + cc: 80 61 ori r24, 0x10 ; 16 + ce: 80 83 st Z, r24 + d0: 08 95 ret + +000000d2 : + d2: e1 ec ldi r30, 0xC1 ; 193 + d4: f0 e0 ldi r31, 0x00 ; 0 + d6: 80 81 ld r24, Z + d8: 88 60 ori r24, 0x08 ; 8 + da: 80 83 st Z, r24 + dc: 08 95 ret + +000000de : + de: e1 ec ldi r30, 0xC1 ; 193 + e0: f0 e0 ldi r31, 0x00 ; 0 + e2: 90 81 ld r25, Z + e4: 9b 7f andi r25, 0xFB ; 251 + e6: 90 83 st Z, r25 + e8: e2 ec ldi r30, 0xC2 ; 194 + ea: f0 e0 ldi r31, 0x00 ; 0 + ec: 90 81 ld r25, Z + ee: 99 7f andi r25, 0xF9 ; 249 + f0: 90 83 st Z, r25 + f2: 90 81 ld r25, Z + f4: 83 70 andi r24, 0x03 ; 3 + f6: 88 0f add r24, r24 + f8: 98 2b or r25, r24 + fa: 90 83 st Z, r25 + fc: 08 95 ret + +000000fe : + fe: dc 01 movw r26, r24 + 100: cb 01 movw r24, r22 + 102: 88 0f add r24, r24 + 104: 99 1f adc r25, r25 + 106: aa 1f adc r26, r26 + 108: bb 1f adc r27, r27 + 10a: 88 0f add r24, r24 + 10c: 99 1f adc r25, r25 + 10e: aa 1f adc r26, r26 + 110: bb 1f adc r27, r27 + 112: 9c 01 movw r18, r24 + 114: ad 01 movw r20, r26 + 116: 22 0f add r18, r18 + 118: 33 1f adc r19, r19 + 11a: 44 1f adc r20, r20 + 11c: 55 1f adc r21, r21 + 11e: 22 0f add r18, r18 + 120: 33 1f adc r19, r19 + 122: 44 1f adc r20, r20 + 124: 55 1f adc r21, r21 + 126: 60 e0 ldi r22, 0x00 ; 0 + 128: 74 e2 ldi r23, 0x24 ; 36 + 12a: 84 ef ldi r24, 0xF4 ; 244 + 12c: 90 e0 ldi r25, 0x00 ; 0 + 12e: 0e 94 c1 01 call 0x382 ; 0x382 <__udivmodsi4> + 132: 8f ef ldi r24, 0xFF ; 255 + 134: 82 0f add r24, r18 + 136: 80 93 c4 00 sts 0x00C4, r24 ; 0x8000c4 <__TEXT_REGION_LENGTH__+0x7e00c4> + 13a: da 01 movw r26, r20 + 13c: c9 01 movw r24, r18 + 13e: 01 97 sbiw r24, 0x01 ; 1 + 140: a1 09 sbc r26, r1 + 142: b1 09 sbc r27, r1 + 144: 89 2f mov r24, r25 + 146: 9a 2f mov r25, r26 + 148: ab 2f mov r26, r27 + 14a: bb 27 eor r27, r27 + 14c: 80 93 c5 00 sts 0x00C5, r24 ; 0x8000c5 <__TEXT_REGION_LENGTH__+0x7e00c5> + 150: 08 95 ret + +00000152 : + 152: 90 93 05 01 sts 0x0105, r25 ; 0x800105 + 156: 80 93 04 01 sts 0x0104, r24 ; 0x800104 + 15a: e1 ec ldi r30, 0xC1 ; 193 + 15c: f0 e0 ldi r31, 0x00 ; 0 + 15e: 80 81 ld r24, Z + 160: 80 68 ori r24, 0x80 ; 128 + 162: 80 83 st Z, r24 + 164: 08 95 ret + +00000166 : + +void hal_USART_putc(const char send) +{ + // Do nothing for a bit if there is already + // data waiting in the hardware to be sent + while ((UCSR0A & (1 << UDRE0)) == 0); + 166: e0 ec ldi r30, 0xC0 ; 192 + 168: f0 e0 ldi r31, 0x00 ; 0 + 16a: 90 81 ld r25, Z + 16c: 95 ff sbrs r25, 5 + 16e: fd cf rjmp .-6 ; 0x16a + UDR0 = send; + 170: 80 93 c6 00 sts 0x00C6, r24 ; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7e00c6> + 174: 08 95 ret + +00000176 : +} + +void hal_USART_puts(const char *send) +{ + 176: cf 93 push r28 + 178: df 93 push r29 + 17a: ec 01 movw r28, r24 + // Cycle through each character individually + while (*send != '\0') + 17c: 88 81 ld r24, Y + 17e: 88 23 and r24, r24 + 180: 31 f0 breq .+12 ; 0x18e + 182: 21 96 adiw r28, 0x01 ; 1 + { + hal_USART_putc(*send++); + 184: 0e 94 b3 00 call 0x166 ; 0x166 +} + +void hal_USART_puts(const char *send) +{ + // Cycle through each character individually + while (*send != '\0') + 188: 89 91 ld r24, Y+ + 18a: 81 11 cpse r24, r1 + 18c: fb cf rjmp .-10 ; 0x184 + { + hal_USART_putc(*send++); + } +} + 18e: df 91 pop r29 + 190: cf 91 pop r28 + 192: 08 95 ret + +00000194 <__vector_18>: + +////////////////////////////////////////////////////////////////////////// + +ISR (USART_RX_vect) +{ + 194: 1f 92 push r1 + 196: 0f 92 push r0 + 198: 0f b6 in r0, 0x3f ; 63 + 19a: 0f 92 push r0 + 19c: 11 24 eor r1, r1 + 19e: 2f 93 push r18 + 1a0: 3f 93 push r19 + 1a2: 4f 93 push r20 + 1a4: 5f 93 push r21 + 1a6: 6f 93 push r22 + 1a8: 7f 93 push r23 + 1aa: 8f 93 push r24 + 1ac: 9f 93 push r25 + 1ae: af 93 push r26 + 1b0: bf 93 push r27 + 1b2: ef 93 push r30 + 1b4: ff 93 push r31 + rxCallback(); + 1b6: e0 91 04 01 lds r30, 0x0104 ; 0x800104 + 1ba: f0 91 05 01 lds r31, 0x0105 ; 0x800105 + 1be: 09 95 icall +} + 1c0: ff 91 pop r31 + 1c2: ef 91 pop r30 + 1c4: bf 91 pop r27 + 1c6: af 91 pop r26 + 1c8: 9f 91 pop r25 + 1ca: 8f 91 pop r24 + 1cc: 7f 91 pop r23 + 1ce: 6f 91 pop r22 + 1d0: 5f 91 pop r21 + 1d2: 4f 91 pop r20 + 1d4: 3f 91 pop r19 + 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 <__vector_19>: + +ISR(USART_UDRE_vect) +{ + 1e2: 1f 92 push r1 + 1e4: 0f 92 push r0 + 1e6: 0f b6 in r0, 0x3f ; 63 + 1e8: 0f 92 push r0 + 1ea: 11 24 eor r1, r1 + 1ec: 2f 93 push r18 + 1ee: 3f 93 push r19 + 1f0: 4f 93 push r20 + 1f2: 5f 93 push r21 + 1f4: 6f 93 push r22 + 1f6: 7f 93 push r23 + 1f8: 8f 93 push r24 + 1fa: 9f 93 push r25 + 1fc: af 93 push r26 + 1fe: bf 93 push r27 + 200: ef 93 push r30 + 202: ff 93 push r31 + dataRegEmptyCallback(); + 204: e0 91 02 01 lds r30, 0x0102 ; 0x800102 + 208: f0 91 03 01 lds r31, 0x0103 ; 0x800103 + 20c: 09 95 icall +} + 20e: ff 91 pop r31 + 210: ef 91 pop r30 + 212: bf 91 pop r27 + 214: af 91 pop r26 + 216: 9f 91 pop r25 + 218: 8f 91 pop r24 + 21a: 7f 91 pop r23 + 21c: 6f 91 pop r22 + 21e: 5f 91 pop r21 + 220: 4f 91 pop r20 + 222: 3f 91 pop r19 + 224: 2f 91 pop r18 + 226: 0f 90 pop r0 + 228: 0f be out 0x3f, r0 ; 63 + 22a: 0f 90 pop r0 + 22c: 1f 90 pop r1 + 22e: 18 95 reti + +00000230 <__vector_20>: + +ISR(USART_TX_vect) +{ + 230: 1f 92 push r1 + 232: 0f 92 push r0 + 234: 0f b6 in r0, 0x3f ; 63 + 236: 0f 92 push r0 + 238: 11 24 eor r1, r1 + 23a: 2f 93 push r18 + 23c: 3f 93 push r19 + 23e: 4f 93 push r20 + 240: 5f 93 push r21 + 242: 6f 93 push r22 + 244: 7f 93 push r23 + 246: 8f 93 push r24 + 248: 9f 93 push r25 + 24a: af 93 push r26 + 24c: bf 93 push r27 + 24e: ef 93 push r30 + 250: ff 93 push r31 + txCallback(); + 252: e0 91 00 01 lds r30, 0x0100 ; 0x800100 <__data_start> + 256: f0 91 01 01 lds r31, 0x0101 ; 0x800101 <__data_start+0x1> + 25a: 09 95 icall + 25c: ff 91 pop r31 + 25e: ef 91 pop r30 + 260: bf 91 pop r27 + 262: af 91 pop r26 + 264: 9f 91 pop r25 + 266: 8f 91 pop r24 + 268: 7f 91 pop r23 + 26a: 6f 91 pop r22 + 26c: 5f 91 pop r21 + 26e: 4f 91 pop r20 + 270: 3f 91 pop r19 + 272: 2f 91 pop r18 + 274: 0f 90 pop r0 + 276: 0f be out 0x3f, r0 ; 63 + 278: 0f 90 pop r0 + 27a: 1f 90 pop r1 + 27c: 18 95 reti + +0000027e : + {"led t", toggleLed}}; + + +void rxCallback() +{ + char input = hal_USART_readDataReg(); + 27e: 0e 94 60 00 call 0xc0 ; 0xc0 + + if(parse_FLG) return; + 282: 90 91 2a 01 lds r25, 0x012A ; 0x80012a <__data_end> + 286: 91 11 cpse r25, r1 + 288: 27 c0 rjmp .+78 ; 0x2d8 + + // if(input == ) + + // enter + if(input == 13 ){ + 28a: 8d 30 cpi r24, 0x0D ; 13 + 28c: 51 f4 brne .+20 ; 0x2a2 + rx_buff[rx_buff_index] = '\0'; + 28e: e0 91 2b 01 lds r30, 0x012B ; 0x80012b + 292: f0 e0 ldi r31, 0x00 ; 0 + 294: e4 5d subi r30, 0xD4 ; 212 + 296: fe 4f sbci r31, 0xFE ; 254 + 298: 10 82 st Z, r1 + parse_FLG = 1; + 29a: 81 e0 ldi r24, 0x01 ; 1 + 29c: 80 93 2a 01 sts 0x012A, r24 ; 0x80012a <__data_end> + return; + 2a0: 08 95 ret + } + + // backspace + if(input == 8 && rx_buff_index > 0){ + 2a2: 88 30 cpi r24, 0x08 ; 8 + 2a4: a9 f4 brne .+42 ; 0x2d0 + 2a6: e0 91 2b 01 lds r30, 0x012B ; 0x80012b + 2aa: ee 23 and r30, r30 + 2ac: 31 f0 breq .+12 ; 0x2ba + rx_buff_index--; + 2ae: e1 50 subi r30, 0x01 ; 1 + 2b0: e0 93 2b 01 sts 0x012B, r30 ; 0x80012b + hal_USART_putc(input); + 2b4: 0e 94 b3 00 call 0x166 ; 0x166 + return; + 2b8: 08 95 ret + } + + if(rx_buff_index < (RX_BUFF_SIZE - 1) && !parse_FLG){ + rx_buff[rx_buff_index++] = input; + 2ba: 91 e0 ldi r25, 0x01 ; 1 + 2bc: 9e 0f add r25, r30 + 2be: 90 93 2b 01 sts 0x012B, r25 ; 0x80012b + 2c2: f0 e0 ldi r31, 0x00 ; 0 + 2c4: e4 5d subi r30, 0xD4 ; 212 + 2c6: fe 4f sbci r31, 0xFE ; 254 + 2c8: 80 83 st Z, r24 + hal_USART_putc(input); + 2ca: 0e 94 b3 00 call 0x166 ; 0x166 + 2ce: 08 95 ret + rx_buff_index--; + hal_USART_putc(input); + return; + } + + if(rx_buff_index < (RX_BUFF_SIZE - 1) && !parse_FLG){ + 2d0: e0 91 2b 01 lds r30, 0x012B ; 0x80012b + 2d4: e3 36 cpi r30, 0x63 ; 99 + 2d6: 88 f3 brcs .-30 ; 0x2ba + 2d8: 08 95 ret + +000002da : + hal_USART_putc(input); + } +} + +void parser() +{ + 2da: ef 92 push r14 + 2dc: ff 92 push r15 + 2de: 0f 93 push r16 + 2e0: 1f 93 push r17 + 2e2: cf 93 push r28 + 2e4: df 93 push r29 + uint8_t i = 0; + if(!parse_FLG) return; + 2e6: 80 91 2a 01 lds r24, 0x012A ; 0x80012a <__data_end> + 2ea: 88 23 and r24, r24 + 2ec: 59 f1 breq .+86 ; 0x344 + 2ee: 06 e0 ldi r16, 0x06 ; 6 + 2f0: 11 e0 ldi r17, 0x01 ; 1 + 2f2: c0 e0 ldi r28, 0x00 ; 0 + 2f4: d0 e0 ldi r29, 0x00 ; 0 + for(i = 0; i < ENTRY_LIST_SIZE && parse_FLG; i++) { + //if(strncmp(entryList[i].name,rx_buff,rx_buff_index) == 0){ + if(strcmp(entryList[i].name,rx_buff) == 0){ + 2f6: 6c e2 ldi r22, 0x2C ; 44 + 2f8: 71 e0 ldi r23, 0x01 ; 1 + 2fa: f8 01 movw r30, r16 + 2fc: 80 81 ld r24, Z + 2fe: 91 81 ldd r25, Z+1 ; 0x01 + 300: 0e 94 e3 01 call 0x3c6 ; 0x3c6 + 304: 89 2b or r24, r25 + 306: 81 f4 brne .+32 ; 0x328 + entryList[i].callback(); + 308: fe 01 movw r30, r28 + 30a: ee 0f add r30, r30 + 30c: ff 1f adc r31, r31 + 30e: ee 0f add r30, r30 + 310: ff 1f adc r31, r31 + 312: ea 5f subi r30, 0xFA ; 250 + 314: fe 4f sbci r31, 0xFE ; 254 + 316: 02 80 ldd r0, Z+2 ; 0x02 + 318: f3 81 ldd r31, Z+3 ; 0x03 + 31a: e0 2d mov r30, r0 + 31c: 09 95 icall + rx_buff_index = 0; + 31e: 10 92 2b 01 sts 0x012B, r1 ; 0x80012b + parse_FLG = 0; + 322: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a <__data_end> + + #if HUMAN_READABLE + hal_USART_puts("\n\r>>"); + #endif + + return; + 326: 0e c0 rjmp .+28 ; 0x344 + 328: 21 96 adiw r28, 0x01 ; 1 + 32a: 0c 5f subi r16, 0xFC ; 252 + 32c: 1f 4f sbci r17, 0xFF ; 255 + +void parser() +{ + uint8_t i = 0; + if(!parse_FLG) return; + for(i = 0; i < ENTRY_LIST_SIZE && parse_FLG; i++) { + 32e: c3 30 cpi r28, 0x03 ; 3 + 330: d1 05 cpc r29, r1 + 332: 09 f7 brne .-62 ; 0x2f6 + } + #if HUMAN_READABLE + hal_USART_puts("\n\rNo match found!"); + hal_USART_puts("\n\r>>"); + #else + hal_USART_puts("nmf\n\r"); + 334: 82 e1 ldi r24, 0x12 ; 18 + 336: 91 e0 ldi r25, 0x01 ; 1 + 338: 0e 94 bb 00 call 0x176 ; 0x176 + #endif + + rx_buff_index = 0; + 33c: 10 92 2b 01 sts 0x012B, r1 ; 0x80012b + parse_FLG = 0; + 340: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a <__data_end> +} + 344: df 91 pop r29 + 346: cf 91 pop r28 + 348: 1f 91 pop r17 + 34a: 0f 91 pop r16 + 34c: ff 90 pop r15 + 34e: ef 90 pop r14 + 350: 08 95 ret + +00000352
: + +int main(void) +{ + + ledInit(); + 352: 0e 94 53 00 call 0xa6 ; 0xa6 + + cli(); + 356: f8 94 cli + + hal_USART_RxEnable(); + 358: 0e 94 63 00 call 0xc6 ; 0xc6 + hal_USART_TxEnable(); + 35c: 0e 94 69 00 call 0xd2 ; 0xd2 + hal_USART_setCharSize(charSize_8BIT); + 360: 83 e0 ldi r24, 0x03 ; 3 + 362: 0e 94 6f 00 call 0xde ; 0xde + hal_USART_setBaudRate(9600); + 366: 60 e8 ldi r22, 0x80 ; 128 + 368: 75 e2 ldi r23, 0x25 ; 37 + 36a: 80 e0 ldi r24, 0x00 ; 0 + 36c: 90 e0 ldi r25, 0x00 ; 0 + 36e: 0e 94 7f 00 call 0xfe ; 0xfe + hal_USART_registerRxCallback(rxCallback); + 372: 8f e3 ldi r24, 0x3F ; 63 + 374: 91 e0 ldi r25, 0x01 ; 1 + 376: 0e 94 a9 00 call 0x152 ; 0x152 + sei(); + 37a: 78 94 sei + #endif + + while (1) + { + //hal_USART_puts("\n\r>>"); + parser(); + 37c: 0e 94 6d 01 call 0x2da ; 0x2da + 380: fd cf rjmp .-6 ; 0x37c + +00000382 <__udivmodsi4>: + 382: a1 e2 ldi r26, 0x21 ; 33 + 384: 1a 2e mov r1, r26 + 386: aa 1b sub r26, r26 + 388: bb 1b sub r27, r27 + 38a: fd 01 movw r30, r26 + 38c: 0d c0 rjmp .+26 ; 0x3a8 <__udivmodsi4_ep> + +0000038e <__udivmodsi4_loop>: + 38e: aa 1f adc r26, r26 + 390: bb 1f adc r27, r27 + 392: ee 1f adc r30, r30 + 394: ff 1f adc r31, r31 + 396: a2 17 cp r26, r18 + 398: b3 07 cpc r27, r19 + 39a: e4 07 cpc r30, r20 + 39c: f5 07 cpc r31, r21 + 39e: 20 f0 brcs .+8 ; 0x3a8 <__udivmodsi4_ep> + 3a0: a2 1b sub r26, r18 + 3a2: b3 0b sbc r27, r19 + 3a4: e4 0b sbc r30, r20 + 3a6: f5 0b sbc r31, r21 + +000003a8 <__udivmodsi4_ep>: + 3a8: 66 1f adc r22, r22 + 3aa: 77 1f adc r23, r23 + 3ac: 88 1f adc r24, r24 + 3ae: 99 1f adc r25, r25 + 3b0: 1a 94 dec r1 + 3b2: 69 f7 brne .-38 ; 0x38e <__udivmodsi4_loop> + 3b4: 60 95 com r22 + 3b6: 70 95 com r23 + 3b8: 80 95 com r24 + 3ba: 90 95 com r25 + 3bc: 9b 01 movw r18, r22 + 3be: ac 01 movw r20, r24 + 3c0: bd 01 movw r22, r26 + 3c2: cf 01 movw r24, r30 + 3c4: 08 95 ret + +000003c6 : + 3c6: fb 01 movw r30, r22 + 3c8: dc 01 movw r26, r24 + 3ca: 8d 91 ld r24, X+ + 3cc: 01 90 ld r0, Z+ + 3ce: 80 19 sub r24, r0 + 3d0: 01 10 cpse r0, r1 + 3d2: d9 f3 breq .-10 ; 0x3ca + 3d4: 99 0b sbc r25, r25 + 3d6: 08 95 ret + +000003d8 <_exit>: + 3d8: f8 94 cli + +000003da <__stop_program>: + 3da: ff cf rjmp .-2 ; 0x3da <__stop_program> diff --git a/C/comand_parser/Debug/comand_parser.map b/C/comand_parser/Debug/comand_parser.map new file mode 100644 index 0000000..ffcccfd --- /dev/null +++ b/C/comand_parser/Debug/comand_parser.map @@ -0,0 +1,644 @@ +Archive member included to satisfy reference by file (symbol) + +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + hal_usart.o (__udivmodsi4) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + hal_usart.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strcmp.o) + main.o (strcmp) + +Allocating common symbols +Common symbol size file + +rx_buff 0x64 main.o + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .text 0x00000000 0x0 cmdp.o + .data 0x00000000 0x0 cmdp.o + .bss 0x00000000 0x0 cmdp.o + .debug_info 0x00000000 0x56 cmdp.o + .debug_abbrev 0x00000000 0x26 cmdp.o + .debug_aranges + 0x00000000 0x18 cmdp.o + .debug_line 0x00000000 0x1a cmdp.o + .debug_str 0x00000000 0x165 cmdp.o + .comment 0x00000000 0x31 cmdp.o + .text 0x00000000 0x0 entryf.o + .data 0x00000000 0x0 entryf.o + .bss 0x00000000 0x0 entryf.o + .text 0x00000000 0x0 hal_usart.o + .data 0x00000000 0x0 hal_usart.o + .bss 0x00000000 0x0 hal_usart.o + .text.hal_USART_enableModule + 0x00000000 0xc hal_usart.o + .text.hal_USART_dissableModule + 0x00000000 0xc hal_usart.o + .text.hal_USART_readDataReg_9Bit + 0x00000000 0x16 hal_usart.o + .text.hal_USART_writeDataReg + 0x00000000 0x6 hal_usart.o + .text.hal_USART_writeDataReg_9Bit + 0x00000000 0x10 hal_usart.o + .text.hal_USART_checkRxFrameErr + 0x00000000 0xa hal_usart.o + .text.hal_USART_checkRxDataOverRun + 0x00000000 0xc hal_usart.o + .text.hal_USART_checkRxParityErr + 0x00000000 0xc hal_usart.o + .text.hal_USART_enableDoubleTxSpeed + 0x00000000 0xe hal_usart.o + .text.hal_USART_dissableDoubleTxSpeed + 0x00000000 0xc hal_usart.o + .text.hal_USART_enableMultiProcessorComMode + 0x00000000 0xe hal_usart.o + .text.hal_USART_dissableMultiProcessorComMode + 0x00000000 0xc hal_usart.o + .text.hal_USART_RxDissable + 0x00000000 0xc hal_usart.o + .text.hal_USART_TxDissable + 0x00000000 0xc hal_usart.o + .text.hal_USART_setMode + 0x00000000 0x1a hal_usart.o + .text.hal_USART_setParityMode + 0x00000000 0x1a hal_usart.o + .text.hal_USART_setStopBits + 0x00000000 0x1a hal_usart.o + .text.hal_USART_setClockPolarity + 0x00000000 0x12 hal_usart.o + .text.hal_USART_unregisterRXCallback + 0x00000000 0x18 hal_usart.o + .text.hal_USART_registerDataRegEmptyCallback + 0x00000000 0x14 hal_usart.o + .text.hal_USART_unregisterDataRegEmptCallback + 0x00000000 0x18 hal_usart.o + .text.hal_USART_registerTxCallback + 0x00000000 0x14 hal_usart.o + .text.hal_USART_unregisterTXCallback + 0x00000000 0x18 hal_usart.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .bss.entryListIndex + 0x00000000 0x1 main.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strcmp.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strcmp.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strcmp.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000003 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +user_signatures 0x00850000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o +LOAD cmdp.o +LOAD entryf.o +LOAD hal_usart.o +LOAD main.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5\libatmega328p.a +END GROUP + 0x00020000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000 + 0x0000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x00010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x00000400 __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 0x00000000 0x3dc + *(.vectors) + .vectors 0x00000000 0x68 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000068 . = ALIGN (0x2) + 0x00000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000068 0x0 linker stubs + *(.trampolines*) + 0x00000068 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x00000068 . = ALIGN (0x2) + *(.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 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x00000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000068 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000074 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + 0x00000074 __do_copy_data + .init4 0x0000008a 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + 0x0000008a __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000009a 0x8 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + *(.init9) + *(.text) + .text 0x000000a2 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x000000a2 __vector_22 + 0x000000a2 __vector_1 + 0x000000a2 __vector_24 + 0x000000a2 __vector_12 + 0x000000a2 __bad_interrupt + 0x000000a2 __vector_6 + 0x000000a2 __vector_3 + 0x000000a2 __vector_23 + 0x000000a2 __vector_25 + 0x000000a2 __vector_11 + 0x000000a2 __vector_13 + 0x000000a2 __vector_17 + 0x000000a2 __vector_7 + 0x000000a2 __vector_5 + 0x000000a2 __vector_4 + 0x000000a2 __vector_9 + 0x000000a2 __vector_2 + 0x000000a2 __vector_21 + 0x000000a2 __vector_15 + 0x000000a2 __vector_8 + 0x000000a2 __vector_14 + 0x000000a2 __vector_10 + 0x000000a2 __vector_16 + 0x000000a6 . = ALIGN (0x2) + *(.text.*) + .text.ledInit 0x000000a6 0x6 entryf.o + 0x000000a6 ledInit + .text.toggleLed + 0x000000ac 0xa entryf.o + 0x000000ac toggleLed + .text.turnOnLed + 0x000000b6 0x4 entryf.o + 0x000000b6 turnOnLed + .text.turnOffLed + 0x000000ba 0x4 entryf.o + 0x000000ba turnOffLed + .text.dummy 0x000000be 0x2 hal_usart.o + .text.hal_USART_readDataReg + 0x000000c0 0x6 hal_usart.o + 0x000000c0 hal_USART_readDataReg + .text.hal_USART_RxEnable + 0x000000c6 0xc hal_usart.o + 0x000000c6 hal_USART_RxEnable + .text.hal_USART_TxEnable + 0x000000d2 0xc hal_usart.o + 0x000000d2 hal_USART_TxEnable + .text.hal_USART_setCharSize + 0x000000de 0x20 hal_usart.o + 0x000000de hal_USART_setCharSize + .text.hal_USART_setBaudRate + 0x000000fe 0x54 hal_usart.o + 0x000000fe hal_USART_setBaudRate + .text.hal_USART_registerRxCallback + 0x00000152 0x14 hal_usart.o + 0x00000152 hal_USART_registerRxCallback + .text.hal_USART_putc + 0x00000166 0x10 hal_usart.o + 0x00000166 hal_USART_putc + .text.hal_USART_puts + 0x00000176 0x1e hal_usart.o + 0x00000176 hal_USART_puts + .text.__vector_18 + 0x00000194 0x4e hal_usart.o + 0x00000194 __vector_18 + .text.__vector_19 + 0x000001e2 0x4e hal_usart.o + 0x000001e2 __vector_19 + .text.__vector_20 + 0x00000230 0x4e hal_usart.o + 0x00000230 __vector_20 + .text.rxCallback + 0x0000027e 0x5c main.o + 0x0000027e rxCallback + .text.parser 0x000002da 0x78 main.o + 0x000002da parser + .text.main 0x00000352 0x30 main.o + 0x00000352 main + .text.libgcc.div + 0x00000382 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x00000382 __udivmodsi4 + .text.avr-libc + 0x000003c6 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strcmp.o) + 0x000003c6 strcmp + 0x000003d8 . = ALIGN (0x2) + *(.fini9) + .fini9 0x000003d8 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + 0x000003d8 _exit + 0x000003d8 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000003d8 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + *(.fini0) + 0x000003dc _etext = . + +.data 0x00800100 0x2a load address 0x000003dc + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + .data.txCallback + 0x00800100 0x2 hal_usart.o + .data.dataRegEmptyCallback + 0x00800102 0x2 hal_usart.o + .data.rxCallback + 0x00800104 0x2 hal_usart.o + .data.entryList + 0x00800106 0xc main.o + 0x00800106 entryList + *(.gnu.linkonce.d*) + *(.rodata) + *(.rodata*) + .rodata.str1.1 + 0x00800112 0x18 main.o + *(.gnu.linkonce.r*) + 0x0080012a . = ALIGN (0x2) + 0x0080012a _edata = . + 0x0080012a PROVIDE (__data_end, .) + +.bss 0x0080012a 0x66 + 0x0080012a PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.parse_FLG + 0x0080012a 0x1 main.o + 0x0080012a parse_FLG + .bss.rx_buff_index + 0x0080012b 0x1 main.o + 0x0080012b rx_buff_index + *(COMMON) + COMMON 0x0080012c 0x64 main.o + 0x0080012c rx_buff + 0x00800190 PROVIDE (__bss_end, .) + 0x000003dc __data_load_start = LOADADDR (.data) + 0x00000406 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800190 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800190 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __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 0x00000000 0x30 + *(.comment) + .comment 0x00000000 0x30 entryf.o + 0x31 (size before relaxing) + .comment 0x00000030 0x31 hal_usart.o + .comment 0x00000030 0x31 main.o + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x198 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x38 entryf.o + .debug_aranges + 0x00000038 0x130 hal_usart.o + .debug_aranges + 0x00000168 0x30 main.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0xfa7 + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_info 0x000005f4 0xc1 entryf.o + .debug_info 0x000006b5 0x5cb hal_usart.o + .debug_info 0x00000c80 0x327 main.o + +.debug_abbrev 0x00000000 0x8a7 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_abbrev 0x000005a2 0x4f entryf.o + .debug_abbrev 0x000005f1 0x14f hal_usart.o + .debug_abbrev 0x00000740 0x167 main.o + +.debug_line 0x00000000 0x889 + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_line 0x00000133 0xeb entryf.o + .debug_line 0x0000021e 0x4ad hal_usart.o + .debug_line 0x000006cb 0x1be main.o + +.debug_frame 0x00000000 0x3e0 + *(.debug_frame) + .debug_frame 0x00000000 0x54 entryf.o + .debug_frame 0x00000054 0x328 hal_usart.o + .debug_frame 0x0000037c 0x64 main.o + +.debug_str 0x00000000 0x8f8 + *(.debug_str) + .debug_str 0x00000000 0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_str 0x00000208 0x162 entryf.o + 0x196 (size before relaxing) + .debug_str 0x0000036a 0x50f hal_usart.o + 0x675 (size before relaxing) + .debug_str 0x00000879 0x7f main.o + 0x2ea (size before relaxing) + +.debug_loc 0x00000000 0x4aa + *(.debug_loc) + .debug_loc 0x00000000 0x3dc hal_usart.o + .debug_loc 0x000003dc 0xce main.o + +.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 0x00000000 0x168 + *(.debug_ranges) + .debug_ranges 0x00000000 0x28 entryf.o + .debug_ranges 0x00000028 0x120 hal_usart.o + .debug_ranges 0x00000148 0x20 main.o + +.debug_macro + *(.debug_macro) +OUTPUT(comand_parser.elf elf32-avr) +LOAD linker stubs diff --git a/C/comand_parser/Debug/comand_parser.srec b/C/comand_parser/Debug/comand_parser.srec new file mode 100644 index 0000000..6edf2a5 --- /dev/null +++ b/C/comand_parser/Debug/comand_parser.srec @@ -0,0 +1,67 @@ +S0150000636F6D616E645F7061727365722E73726563B1 +S11300000C9434000C9451000C9451000C94510045 +S11300100C9451000C9451000C9451000C94510018 +S11300200C9451000C9451000C9451000C94510008 +S11300300C9451000C9451000C9451000C945100F8 +S11300400C9451000C9451000C94CA000C94F100CF +S11300500C9418010C9451000C9451000C94510010 +S11300600C9451000C94510011241FBECFEFD8E022 +S1130070DEBFCDBF11E0A0E0B1E0ECEDF3E002C0E3 +S113008005900D92AA32B107D9F721E0AAE2B1E0B6 +S113009001C01D92A039B207E1F70E94A9010C9496 +S11300A0EC010C940000259A2D98089595B180E2F6 +S11300B0892785B908952D9A08952D98089508954E +S11300C08091C6000895E1ECF0E080818061808336 +S11300D00895E1ECF0E08081886080830895E1EC8C +S11300E0F0E090819B7F9083E2ECF0E09081997F37 +S11300F0908390818370880F982B90830895DC01FE +S1130100CB01880F991FAA1FBB1F880F991FAA1F15 +S1130110BB1F9C01AD01220F331F441F551F220F2B +S1130120331F441F551F60E074E284EF90E00E9487 +S1130130C1018FEF820F8093C400DA01C9010197D6 +S1130140A109B109892F9A2FAB2FBB278093C50032 +S113015008959093050180930401E1ECF0E080811F +S1130160806880830895E0ECF0E0908195FFFDCFF6 +S11301708093C6000895CF93DF93EC018881882390 +S113018031F021960E94B30089918111FBCFDF9158 +S1130190CF9108951F920F920FB60F9211242F93AF +S11301A03F934F935F936F937F938F939F93AF93FB +S11301B0BF93EF93FF93E0910401F091050109953A +S11301C0FF91EF91BF91AF919F918F917F916F912B +S11301D05F914F913F912F910F900FBE0F901F9001 +S11301E018951F920F920FB60F9211242F933F93DD +S11301F04F935F936F937F938F939F93AF93BF932B +S1130200EF93FF93E0910201F09103010995FF91AF +S1130210EF91BF91AF919F918F917F916F915F917A +S11302204F913F912F910F900FBE0F901F901895F3 +S11302301F920F920FB60F9211242F933F934F9357 +S11302405F936F937F938F939F93AF93BF93EF933A +S1130250FF93E0910001F09101010995FF91EF9165 +S1130260BF91AF919F918F917F916F915F914F91CA +S11302703F912F910F900FBE0F901F9018950E94E1 +S1130280600090912A01911127C08D3051F4E091C2 +S11302902B01F0E0E45DFE4F108281E080932A019F +S11302A008958830A9F4E0912B01EE2331F0E15058 +S11302B0E0932B010E94B300089591E09E0F909368 +S11302C02B01F0E0E45DFE4F80830E94B3000895AB +S11302D0E0912B01E33688F30895EF92FF920F9398 +S11302E01F93CF93DF9380912A01882359F106E06D +S11302F011E0C0E0D0E06CE271E0F801808191810E +S11303000E94E301892B81F4FE01EE0FFF1FEE0F23 +S1130310FF1FEA5FFE4F0280F381E02D09951092E2 +S11303202B0110922A010EC021960C5F1F4FC3307F +S1130330D10509F782E191E00E94BB0010922B01E4 +S113034010922A01DF91CF911F910F91FF90EF90AE +S113035008950E945300F8940E9463000E9469006B +S113036083E00E946F0060E875E280E090E00E9404 +S11303707F008FE391E00E94A90078940E946D01B0 +S1130380FDCFA1E21A2EAA1BBB1BFD010DC0AA1FA3 +S1130390BB1FEE1FFF1FA217B307E407F50720F0EA +S11303A0A21BB30BE40BF50B661F771F881F991F65 +S11303B01A9469F760957095809590959B01AC01AE +S11303C0BD01CF010895FB01DC018D9101908019DD +S10F03D00110D9F3990B0895F894FFCFA5 +S11303DC5F005F005F0018015B001E015D002401DB +S11303EC56006E6D660A0D006C65642031006C65F8 +S10D03FC642030006C656420740076 +S9030000FC diff --git a/C/comand_parser/Debug/entryf.d b/C/comand_parser/Debug/entryf.d new file mode 100644 index 0000000..11702f1 --- /dev/null +++ b/C/comand_parser/Debug/entryf.d @@ -0,0 +1,36 @@ +entryf.d entryf.o: .././entryf.c .././entryf.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h + +.././entryf.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: diff --git a/C/comand_parser/Debug/hal_usart.d b/C/comand_parser/Debug/hal_usart.d new file mode 100644 index 0000000..89b6fdc --- /dev/null +++ b/C/comand_parser/Debug/hal_usart.d @@ -0,0 +1,42 @@ +hal_usart.d hal_usart.o: .././hal_usart.c .././hal_usart.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + .././dummy.h + +.././hal_usart.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +.././dummy.h: diff --git a/C/comand_parser/Debug/main.d b/C/comand_parser/Debug/main.d new file mode 100644 index 0000000..e5e1044 --- /dev/null +++ b/C/comand_parser/Debug/main.d @@ -0,0 +1,48 @@ +main.d main.o: .././main.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + .././entryf.h .././hal_usart.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +.././entryf.h: + +.././hal_usart.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: diff --git a/C/comand_parser/Debug/makedep.mk b/C/comand_parser/Debug/makedep.mk new file mode 100644 index 0000000..796491f --- /dev/null +++ b/C/comand_parser/Debug/makedep.mk @@ -0,0 +1,12 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +cmdp.c + +entryf.c + +hal_usart.c + +main.c + diff --git a/C/comand_parser/cmdp.c b/C/comand_parser/cmdp.c new file mode 100644 index 0000000..cc3232c --- /dev/null +++ b/C/comand_parser/cmdp.c @@ -0,0 +1,29 @@ +/* + * cmdp.c + * + * Created: 23-Feb-19 18:00:00 + * Author: Edwin + */ + +#include "cmdp.h" +/* +void output() +{ + +} + +void parse(char *input) +{ + uint8_t i = 0; + uint8_t t = 0; + + for(i = 0; i < cmbd_ENTRY_LIST_SIZE; i++) { + if(strcmp(entryList[i].name,input)){ + entryList[i].callback(); + break; + } + } + + output("\n\r command unknown!"); +} +*/ \ No newline at end of file diff --git a/C/comand_parser/cmdp.h b/C/comand_parser/cmdp.h new file mode 100644 index 0000000..f9e426b --- /dev/null +++ b/C/comand_parser/cmdp.h @@ -0,0 +1,30 @@ +/* + * cmdp.h + * + * Created: 23-Feb-19 17:59:45 + * Author: Edwin + */ + + +#ifndef CMDP_H_ +#define CMDP_H_ + +#define cmbd_ENTRY_LIST_SIZE 1 + +#include "entryf.h" +#include +#include +/* +typedef (*callback_t)(); + +typedef struct +{ + char *name; + callback_t callback; +}entry_t; + +entry_t entryList[cmbd_ENTRY_LIST_SIZE] = {"led on", turnOnLed, "led off",turnOffLed}; + +void parse(char *input); +*/ +#endif /* CMDP_H_ */ \ No newline at end of file diff --git a/C/comand_parser/comand_parser.atsln b/C/comand_parser/comand_parser.atsln new file mode 100644 index 0000000..ff942d0 --- /dev/null +++ b/C/comand_parser/comand_parser.atsln @@ -0,0 +1,24 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "comand_parser", "comand_parser.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A61A100B-079D-465D-B569-BEAA4261E86D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/C/comand_parser/comand_parser.componentinfo.xml b/C/comand_parser/comand_parser.componentinfo.xml new file mode 100644 index 0000000..24924b6 --- /dev/null +++ b/C/comand_parser/comand_parser.componentinfo.xml @@ -0,0 +1,86 @@ + + + + + + + Device + Startup + + + Atmel + 1.2.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include + + include + C + + + include + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include\avr\iom328p.h + + header + C + UMk4QUzkkuShabuoYtNl/Q== + + include/avr/iom328p.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.c + template + source + C Exe + YCL0fKcKSr7CQv35kj43yw== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.cpp + template + source + C Exe + YXFphlh0CtZJU+ebktABgQ== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p + + libraryPrefix + GCC + + + gcc/dev/atmega328p + + + + + ATmega_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/Atmel.ATmega_DFP.pdsc + 1.2.209 + true + ATmega328P + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/C/comand_parser/comand_parser.cproj b/C/comand_parser/comand_parser.cproj new file mode 100644 index 0000000..1848855 --- /dev/null +++ b/C/comand_parser/comand_parser.cproj @@ -0,0 +1,163 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + dce6c7e3-ee26-4d79-826b-08594b9ad897 + ATmega328P + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + comand_parser + comand_parser + comand_parser + Native + true + false + true + true + 0x20000000 + + true + exception_table + 2 + 0 + 1 + + + + + + + + + + + + + + com.atmel.avrdbg.tool.medbg + ATML2323041800001239 + 0x1E950F + + + + + debugWIRE + + com.atmel.avrdbg.tool.medbg + ATML2323041800001239 + mEDBG + + debugWIRE + + + + + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + + + + + + + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + + \ No newline at end of file diff --git a/C/comand_parser/dummy.h b/C/comand_parser/dummy.h new file mode 100644 index 0000000..39654f6 --- /dev/null +++ b/C/comand_parser/dummy.h @@ -0,0 +1,17 @@ +/* + * dummy.h + * + * Created: 26-Oct-18 08:49:49 + * Author: Edwin + */ + + +#ifndef DUMMY_H_ +#define DUMMY_H_ + +static void dummy() +{ + +} + +#endif /* DUMMY_H_ */ \ No newline at end of file diff --git a/C/comand_parser/entryf.c b/C/comand_parser/entryf.c new file mode 100644 index 0000000..e00d62c --- /dev/null +++ b/C/comand_parser/entryf.c @@ -0,0 +1,29 @@ +/* + * entryf.c + * + * Created: 23-Feb-19 18:03:36 + * Author: Edwin + */ +#include "entryf.h" +#include + +void ledInit() +{ + DDRB |= (1 << PINB5); + PORTB &= ~(1 << PINB5); +} + +void toggleLed() +{ + PORTB ^= (1 << PINB5); +} + +void turnOnLed() +{ + PORTB |= (1 << PINB5); +} + +void turnOffLed() +{ + PORTB &= ~(1 << PINB5); +} \ No newline at end of file diff --git a/C/comand_parser/entryf.h b/C/comand_parser/entryf.h new file mode 100644 index 0000000..bc83810 --- /dev/null +++ b/C/comand_parser/entryf.h @@ -0,0 +1,20 @@ +/* + * entryf.h + * + * Created: 23-Feb-19 18:03:14 + * Author: Edwin + */ + + +#ifndef ENTRYF_H_ +#define ENTRYF_H_ + +void ledInit(); + +void turnOnLed(); + +void turnOffLed(); + +void toggleLed(); + +#endif /* ENTRYF_H_ */ \ No newline at end of file diff --git a/C/comand_parser/hal_usart.c b/C/comand_parser/hal_usart.c new file mode 100644 index 0000000..bedba43 --- /dev/null +++ b/C/comand_parser/hal_usart.c @@ -0,0 +1,235 @@ +/* + * hal_usart.c + * + * Created: 08-Nov-18 17:40:43 + * Author: Edwin + */ + + +// http://ee-classes.usc.edu/ee459/library/documents/avr_intr_vectors/ + +#define BAUD_PRESCALE(baude_val) (((F_CPU / (baude_val * 16UL))) - 1) + +////////////////////////////////////////////////////////////////////////// + +#include "hal_usart.h" +#include "dummy.h" + +////////////////////////////////////////////////////////////////////////// +static charSize_t charakterSize = charSize_8BIT; + +static fptr_t rxCallback = dummy; +static fptr_t dataRegEmptyCallback = dummy; +static fptr_t txCallback = dummy; + + +////////////////////////////////////////////////////////////////////////// +void hal_USART_enableModule() +{ + PRR &= ~(1 <> 8); + UDR0 = data; +} + +// not sure yet +uint8_t hal_USART_checkRxFrameErr() +{ + return ((UCSR0A & (1 << FE0)) >> FE0); +} +// not sure yet +uint8_t hal_USART_checkRxDataOverRun() +{ + return ((UCSR0A & (1 << DOR0)) >> DOR0); +} + +uint8_t hal_USART_checkRxParityErr() +{ + return ((UCSR0A & (1 << UPE0)) >> UPE0); +} + +void hal_USART_enableDoubleTxSpeed() +{ + UCSR0A = (UCSR0A & (1 << MPCM0)) | (1 << U2X0); +} + +void hal_USART_dissableDoubleTxSpeed() +{ + UCSR0A = (UCSR0A & (1 << MPCM0)); +} + +void hal_USART_enableMultiProcessorComMode() +{ + UCSR0A = (UCSR0A & (1 << U2X0)) | (1 << MPCM0); +} + +void hal_USART_dissableMultiProcessorComMode() +{ + UCSR0A = (UCSR0A & (1 << U2X0)); +} + +void hal_USART_RxEnable() +{ + UCSR0B |= (1 << RXEN0); +} + +void hal_USART_RxDissable() +{ + UCSR0B &= ~(1 << RXEN0); +} + +void hal_USART_TxEnable() +{ + UCSR0B |= (1 << TXEN0); +} + +void hal_USART_TxDissable() +{ + UCSR0B &= ~(1 << TXEN0); +} + +void hal_USART_setMode(mode_t mode) +{ + UCSR0C &= ~((1 << UMSEL00) | (1 << UMSEL01)); + UCSR0C |= (mode << UMSEL00); +} + +void hal_USART_setParityMode(parityMode_t mode) +{ + UCSR0C &= ~((1 << UPM00) | (1 << UPM01)); + UCSR0C |= (mode << UPM00); +} + +void hal_USART_setStopBits(stopBit_t bit) +{ + UCSR0C &= ~(1 << USBS0); + UCSR0C |= (bit << USBS0); +} + +void hal_USART_setCharSize(charSize_t size) +{ + /* + UCSR0C &= ~((1 << UCSZ00) | (1 << UCSZ01)); + //UCSR0C |= (1 << UCSZ00) | (1 << UCSZ01); + UCSR0C |= (size & 0x03) << 1; + */ + charakterSize = size; + size &= 0x07; + + UCSR0B &= ~(1 << UCSZ02); + UCSR0C &= ~((1 << UCSZ00) | (1 << UCSZ01)); + + //UCSR0B |= size & 0x04; + UCSR0C |= (size & 0x03) << 1; + +} + +void hal_USART_setClockPolarity(clkPol_t polarity) +{ + UCSR0C &= ~(1 << UCPOL0); + UCSR0C |= (polarity << UCPOL0); +} + +void hal_USART_setBaudRate(uint32_t baudRate) +{ + //baudRate &= 0x0FFF; + UBRR0L = ((((F_CPU / (baudRate * 16UL))) - 1)); + UBRR0H = (((((F_CPU / (baudRate * 16UL))) - 1)) >> 8); +} + +////////////////////////////////////////////////////////////////////////// + +void hal_USART_registerRxCallback(fptr_t callback) +{ + rxCallback = callback; + UCSR0B |= (1 << RXCIE0); +} + +void hal_USART_unregisterRXCallback() +{ + UCSR0B &= ~(1 << RXCIE0); + rxCallback = dummy; +} + +void hal_USART_registerDataRegEmptyCallback(fptr_t callback) +{ + UCSR0B |= (1 << UDRIE0); + dataRegEmptyCallback = callback; +} + +void hal_USART_unregisterDataRegEmptCallback() +{ + UCSR0B &= ~(1 << UDRIE0); + dataRegEmptyCallback = dummy; +} + +void hal_USART_registerTxCallback(fptr_t callback) +{ + UCSR0B |= (1 << TXCIE0); + txCallback = callback; +} + +void hal_USART_unregisterTXCallback() +{ + UCSR0B &= ~(1 << TXCIE0); + txCallback = dummy; +} + +////////////////////////////////////////////////////////////////////////// + +void hal_USART_putc(const char send) +{ + // Do nothing for a bit if there is already + // data waiting in the hardware to be sent + while ((UCSR0A & (1 << UDRE0)) == 0); + UDR0 = send; +} + +void hal_USART_puts(const char *send) +{ + // Cycle through each character individually + while (*send != '\0') + { + hal_USART_putc(*send++); + } +} + +////////////////////////////////////////////////////////////////////////// + +ISR (USART_RX_vect) +{ + rxCallback(); +} + +ISR(USART_UDRE_vect) +{ + dataRegEmptyCallback(); +} + +ISR(USART_TX_vect) +{ + txCallback(); +} \ No newline at end of file diff --git a/C/comand_parser/hal_usart.h b/C/comand_parser/hal_usart.h new file mode 100644 index 0000000..e3bd587 --- /dev/null +++ b/C/comand_parser/hal_usart.h @@ -0,0 +1,133 @@ +/* + * hal_usart.h + * + * Created: 08-Nov-18 17:40:59 + * Author: Edwin + */ + +#ifndef HAL_USART_H_ +#define HAL_USART_H_ + +////////////////////////////////////////////////////////////////////////// + +#include +#include +#include + +////////////////////////////////////////////////////////////////////////// +#define F_CPU 16000000UL +////////////////////////////////////////////////////////////////////////// + +//#define BAUD_PRESCALER(BAUD,CLK) (((CLK / (BAUD * 16UL))) - 1) + + +////////////////////////////////////////////////////////////////////////// + +typedef void (*fptr_t) (); /*<*/ + +typedef enum +{ + mode_ASYNCHRON_USART, + mode_SYNCHRONOUS_USART + //mode_MASTER_SPI = 3 + +}mode_t; + +typedef enum +{ + parityMode_DISSABELD, + parityMode_EVEN_PARITY = 2, + parityMode_ODD_PARITY +}parityMode_t; + + +typedef enum +{ + stopBit_1_BIT, + stopBit_2_BIT +}stopBit_t; + +typedef enum +{ + charSize_5BIT = 0, + charSize_6BIT = 1, + charSize_7BIT = 2, + charSize_8BIT = 3, + charSize_9BIT = 7 +}charSize_t; + +typedef enum +{ + clkPol_NONINVERTED, + clkPol_INVERTED +}clkPol_t; + +////////////////////////////////////////////////////////////////////////// + +void hal_USART_enableModule(); + +void hal_USART_dissableModule(); + +uint8_t hal_USART_readDataReg(); + +uint16_t hal_USART_readDataReg_9Bit(); + +void hal_USART_writeDataReg(uint8_t data); + +void hal_USART_writeDataReg_9Bit(uint16_t data); + +uint8_t hal_USART_checkRxFrameErr(); + +uint8_t hal_USART_checkRxDataOverRun(); + +uint8_t hal_USART_checkRxParityErr(); + +void hal_USART_enableDoubleTxSpeed(); + +void hal_USART_dissableDoubleTxSpeed(); + +void hal_USART_enableMultiProcessorComMode(); + +void hal_USART_dissableMultiProcessorComMode(); + +void hal_USART_RxEnable(); + +void hal_USART_RxDissable(); + +void hal_USART_TxEnable(); + +void hal_USART_TxDissable(); + +void hal_USART_setMode(mode_t mode); + +void hal_USART_setParityMode(parityMode_t mode); + +void hal_USART_setStopBits(stopBit_t bit); + +void hal_USART_setCharSize(charSize_t size); + +void hal_USART_setClockPolarity(clkPol_t polarity); + +void hal_USART_setBaudRate(uint32_t baudRate); + +////////////////////////////////////////////////////////////////////////// + +void hal_USART_registerRxCallback(fptr_t callback); + +void hal_USART_unregisterRXCallback(); + +void hal_USART_registerDataRegEmptyCallback(fptr_t callback); + +void hal_USART_unregisterDataRegEmptCallback(); + +void hal_USART_registerTxCallback(fptr_t callback); + +void hal_USART_unregisterTXCallback(); + +////////////////////////////////////////////////////////////////////////// + +void hal_USART_putc (const char send); + +void hal_USART_puts (const char *send); + +#endif /* HAL_USART_H_ */ \ No newline at end of file diff --git a/C/comand_parser/main.c b/C/comand_parser/main.c new file mode 100644 index 0000000..e6a394a --- /dev/null +++ b/C/comand_parser/main.c @@ -0,0 +1,117 @@ +/* + * comand_parser.c + * + * Created: 23-Feb-19 17:58:28 + * Author : Edwin + */ + +#include +#include +#include +#include "entryf.h" +#include "hal_usart.h" +#include + +#define RX_BUFF_SIZE 100 +#define ENTRY_LIST_SIZE 3 +#define HUMAN_READABLE 0 + +char rx_buff[RX_BUFF_SIZE]; +uint8_t rx_buff_index = 0; +uint8_t parse_FLG = 0; + +typedef (*callback_t)(); + +typedef struct +{ + char *name; + callback_t callback; +}entry_t; + +uint8_t entryListIndex = 0; +entry_t entryList[ENTRY_LIST_SIZE]={{"led 1", turnOnLed}, + {"led 0", turnOffLed}, + {"led t", toggleLed}}; + + +void rxCallback() +{ + char input = hal_USART_readDataReg(); + + if(parse_FLG) return; + + // if(input == ) + + // enter + if(input == 13 ){ + rx_buff[rx_buff_index] = '\0'; + parse_FLG = 1; + return; + } + + // backspace + if(input == 8 && rx_buff_index > 0){ + rx_buff_index--; + hal_USART_putc(input); + return; + } + + if(rx_buff_index < (RX_BUFF_SIZE - 1) && !parse_FLG){ + rx_buff[rx_buff_index++] = input; + hal_USART_putc(input); + } +} + +void parser() +{ + uint8_t i = 0; + if(!parse_FLG) return; + for(i = 0; i < ENTRY_LIST_SIZE && parse_FLG; i++) { + //if(strncmp(entryList[i].name,rx_buff,rx_buff_index) == 0){ + if(strcmp(entryList[i].name,rx_buff) == 0){ + entryList[i].callback(); + rx_buff_index = 0; + parse_FLG = 0; + + #if HUMAN_READABLE + hal_USART_puts("\n\r>>"); + #endif + + return; + } + } + #if HUMAN_READABLE + hal_USART_puts("\n\rNo match found!"); + hal_USART_puts("\n\r>>"); + #else + hal_USART_puts("nmf\n\r"); + #endif + + rx_buff_index = 0; + parse_FLG = 0; +} + +int main(void) +{ + + ledInit(); + + cli(); + + hal_USART_RxEnable(); + hal_USART_TxEnable(); + hal_USART_setCharSize(charSize_8BIT); + hal_USART_setBaudRate(9600); + hal_USART_registerRxCallback(rxCallback); + sei(); + + #if HUMAN_READABLE + hal_USART_puts("\n\r>>"); + #endif + + while (1) + { + parser(); + } +} + diff --git a/CPP/pImpl_Idom/Makefile b/CPP/pImpl_Idom/Makefile new file mode 100644 index 0000000..c516ac5 --- /dev/null +++ b/CPP/pImpl_Idom/Makefile @@ -0,0 +1,20 @@ +cpp_src = $(wildcard *.cpp) + +cpp_obj = $(cpp_src:.cpp=.o) +c_obj = $(c_src:.c=.o) +CC = g++ +CFLAGS = -Wall -pedantic -li2c +LDFLAGS = +EXEC = runtest + + +all : $(EXEC) + +$(EXEC): $(cpp_obj) $(c_obj) + $(CC) -o $@ $^ $(LDFLAGS) + +clean: + rm -rf $(c_obj) $(cpp_obj) $(EXEC) + +cleanall: + rm -rf $(c_obj) $(cpp_obj) $(EXEC) diff --git a/CPP/pImpl_Idom/gyroscope.hpp b/CPP/pImpl_Idom/gyroscope.hpp new file mode 100644 index 0000000..fea76b0 --- /dev/null +++ b/CPP/pImpl_Idom/gyroscope.hpp @@ -0,0 +1,21 @@ +#ifndef _GYROSCOPE_HPP_ +#define _GYROSCOPE_HPP_ + +#include + +class Gyroscope +{ + public: + Gyroscope(); + ~Gyroscope(); + + void getOrientation(); + + private: + class GyroscopeImpl; // forward declaration + std::unique_ptr impl; + +}; + + +#endif // _GYROSCOPE_HPP_ diff --git a/CPP/pImpl_Idom/gyroscopeImpl.cpp b/CPP/pImpl_Idom/gyroscopeImpl.cpp new file mode 100644 index 0000000..db23034 --- /dev/null +++ b/CPP/pImpl_Idom/gyroscopeImpl.cpp @@ -0,0 +1,44 @@ +// based on https://www.youtube.com/watch?v=lETcZQuKQBs +#include "gyroscope.hpp" +#include +// +// definition of gyroscope +// + +class Gyroscope::GyroscopeImpl +{ + public: + GyroscopeImpl() + { + std::cout << "Ctor GyroscopeImpl" << std::endl; + } + + void getOrientation() + { + std::cout << "GyroscopeImpl::getOrientation()" << std::endl; + } + + private: + +}; + +// +// +// + +Gyroscope::Gyroscope() : + impl{std::make_unique()} +{ + +} + +Gyroscope::~Gyroscope() +{ + +} + +void Gyroscope::getOrientation() +{ + impl->getOrientation(); +} + diff --git a/CPP/pImpl_Idom/main.cpp b/CPP/pImpl_Idom/main.cpp new file mode 100644 index 0000000..589f0ed --- /dev/null +++ b/CPP/pImpl_Idom/main.cpp @@ -0,0 +1,14 @@ +#include +#include "gyroscope.hpp" + + +int main(void) +{ + std::cout << "pImpl Idom" << std::endl; + + Gyroscope gyroscope; + + gyroscope.getOrientation(); + + return 0; +} diff --git a/CPP/pImpl_Idom/runtest b/CPP/pImpl_Idom/runtest new file mode 100644 index 0000000000000000000000000000000000000000..d3d2a45c8827ad20f38597d27383dfbd045b1840 GIT binary patch literal 22360 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 literal 0 HcmV?d00001 diff --git a/CPP/portable_bitfields/BitField.h b/CPP/portable_bitfields/BitField.h new file mode 100644 index 0000000..c63eeb0 --- /dev/null +++ b/CPP/portable_bitfields/BitField.h @@ -0,0 +1,73 @@ +/** + * @file BitField.h + * @author Edwin Koch (eddyed.k@gmail.com) + * @brief + * @version 0.1 + * @date 2020-12-19 + * + * @copyright Copyright (c) 2020 + * + */ + +// Based on: +// https://www.youtube.com/watch?v=TYqbgvHfxjM +// https://stackoverflow.com/questions/31726191/is-there-a-portable-alternative-to-c-bitfields +// https://stackoverflow.com/questions/1392059/algorithm-to-generate-bit-mask + + +/** + * @brief Template class for portable Bitfields + * + * @tparam T type of variable in which the bitfield resides + * @tparam START bit index starting from LSB where the bitfield starts + * @tparam SIZE number of bits + */ +template +struct BitField +{ + /** + * @brief Construct a new Bit Field object + * + */ + BitField() + { + static_assert(SIZE != 0, "Bitfield SIZE must be > 0!"); + static_assert(START < sizeof(T) * 8, "START exceeds number of bits of the chosen typename T!"); + } + + /** + * @brief assignment operator + * + * @param v value to be written in the bitfield + * @return BitField& + */ + BitField& operator =(T v) + { + // mask creation for v : https://stackoverflow.com/questions/1392059/algorithm-to-generate-bit-mask + _raw = ((v & ((1ULL << SIZE)-1)) << START) ; + return *this; + } + + /** + * @brief return the value inside the bitfield + * + * @return T + */ + operator T() const + { + return _raw >> START; + } + + /** + * @brief return the raw value + * + * @return T + */ + T operator ()() const + { + return _raw; + } + + private: + T _raw; +}; diff --git a/CPP/portable_bitfields/Bits.h b/CPP/portable_bitfields/Bits.h new file mode 100644 index 0000000..e7a8d55 --- /dev/null +++ b/CPP/portable_bitfields/Bits.h @@ -0,0 +1,67 @@ +// Based on: +// https://www.youtube.com/watch?v=TYqbgvHfxjM +// https://stackoverflow.com/questions/31726191/is-there-a-portable-alternative-to-c-bitfields +// https://stackoverflow.com/questions/1392059/algorithm-to-generate-bit-mask + +#include +#include + +template +struct Bits +{ + Bits() + { + static_assert(SIZE != 0, "Bitfield SIZE must be > 0!"); + static_assert(START < sizeof(T) * 8, "START exceeds number of bits of the chosen typename T!"); + } + + Bits& operator =(T v) + { + // mask creation for v : https://stackoverflow.com/questions/1392059/algorithm-to-generate-bit-mask + _raw = ((v & ((1ULL << SIZE)-1)) << START) ; + return *this; + } + + operator T() const + { + return _raw >> START; + } + + T operator ()() const + { + return _raw; + } + + private: + T _raw; +}; + + +int main() +{ + uint8_t d = 0; + Bits bitField; + + + std::cout << "out 1" << std::endl; + std::cout << +bitField << std::endl; + + bitField = 3; + + std::cout << +bitField << std::endl; + + bitField = 5; + + std::cout << +bitField << std::endl; + std::cout << +bitField() << std::endl; + std::cout << "done!" << std::endl; + + uint8_t mask; + uint8_t param = 3; + mask = (1 << param) - 1; + std::cout << +mask << std::endl; + + + + return 0; +} diff --git a/CPP/register_modeling/reg_modeling_in_cpp_example.h b/CPP/register_modeling/reg_modeling_in_cpp_example.h new file mode 100644 index 0000000..d2fae06 --- /dev/null +++ b/CPP/register_modeling/reg_modeling_in_cpp_example.h @@ -0,0 +1,53 @@ +// https://www.youtube.com/watch?v=TYqbgvHfxjM + +// Deeply Embedded C++ - John Hinke - Meeting C++ 2015 + +template +struct Bits { + Bits& operator=(T v) + { + this._raw |= v << START; + return this; + } + + operator T() const {} + + private: + T _raw; +}; + +union Control { + struct OPM{ + typedef Bits bits; + enum { NO_CHANGE = 0, AS_STANDBY = 1}; + }; + struct CTRL_BR{ + enum { NO_CHANGE = 0, BRANCH_NORMAL = 1}; + }; + struct CTRL_BR1 : CTRL_BR{ + typedef Bits bits; + }; + struct CTRL_BR2 : CTRL_BR{ + typedef Bits bits; + }; + + union Bits { + Control::OPM::bits OPM; + Control::CTRL_BR1::bits CTRL_BR1; + Control::CTRL_BR2::bits CTRL_BR2; + } bits; + uint16_t raw; +}; + + +Control r; + +r.bits.OPM = Control::OPM::AS_STANDBY; + + +Control r; +device.read(r); + +if(r.bits.OPM == Control::OPM::AS_STANDBY) { + // ... +} \ No newline at end of file diff --git a/CPP/yt_link.txt b/CPP/register_modeling/yt_link.txt similarity index 100% rename from CPP/yt_link.txt rename to CPP/register_modeling/yt_link.txt