Added test dictionary: djhgfjh. Changed LED driver.

This commit is contained in:
Max Braungardt 2018-03-26 21:22:43 +02:00
parent abafc41530
commit 4c816c87bf
41 changed files with 28330 additions and 20 deletions

View File

@ -0,0 +1,3 @@
WS2812B_Atmega.o: WS2812B_Atmega.c WS2812B_Atmega.h
WS2812B_Atmega.h:

View File

@ -0,0 +1,3 @@
color_hsv.o: color_hsv.c color_hsv.h
color_hsv.h:

View File

@ -0,0 +1,7 @@
led-driver.o: led-driver.c WS2812B_Atmega.h color_hsv.h colors.h
WS2812B_Atmega.h:
color_hsv.h:
colors.h:

View File

@ -0,0 +1,5 @@
party.o: party.c WS2812B_Atmega.h party.h
WS2812B_Atmega.h:
party.h:

621
sketches/djhgfjh/Makefile Normal file
View File

@ -0,0 +1,621 @@
# $ cat ~/windows/Makefile.glove
# Hey Emacs, this is a -*- makefile -*-
#----------------------------------------------------------------------------
# WinAVR Makefile Template written by Eric B. Weddington, J<>rg Wunsch, et al.
#
# Released to the Public Domain
#
# Additional material for this makefile was written by:
# Peter Fleury
# Tim Henigan
# Colin O'Flynn
# Reiner Patommel
# Markus Pfaff
# Sander Pool
# Frederik Rouleau
# Carlos Lamas
#
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device, using avrdude.
# Please customize the avrdude settings below first!
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# MCU name
MCU = atmega328p
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
# Typical values are:
# F_CPU = 1000000
# F_CPU = 1843200
# F_CPU = 2000000
# F_CPU = 3686400
# F_CPU = 4000000
# F_CPU = 7372800
# F_CPU = 8000000
# F_CPU = 11059200
# F_CPU = 14745600
# F_CPU = 16000000
# F_CPU = 18432000
# F_CPU = 20000000
F_CPU = 20000000
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
# Target file name (without extension).
TARGET = virtualglove
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
OBJDIR = .
# List C source files here. (C dependencies are automatically generated.)
SRC = ${wildcard *.c}
# List C++ source files here. (C dependencies are automatically generated.)
CPPSRC =
# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC =
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
# Debugging format.
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
# AVR Studio 4.10 requires dwarf-2.
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
DEBUG =
# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
# Use forward slashes for directory separators.
# For a directory that has spaces, enclose it in quotes.
EXTRAINCDIRS =
# Compiler flag to set the C Standard level.
# c89 = "ANSI" C
# gnu89 = c89 plus GCC extensions
# c99 = ISO C99 standard (not yet fully implemented)
# gnu99 = c99 plus GCC extensions
CSTANDARD = -std=c11
# Place -D or -U options here for C sources
CDEFS = -DF_CPU=$(F_CPU)UL
# Place -D or -U options here for ASM sources
ADEFS = -DF_CPU=$(F_CPU)
# Place -D or -U options here for C++ sources
CPPDEFS = -DF_CPU=$(F_CPU)UL
#CPPDEFS += -D__STDC_LIMIT_MACROS
#CPPDEFS += -D__STDC_CONSTANT_MACROS
#---------------- Compiler Options C ----------------
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns...: create assembler listing
CFLAGS = -g$(DEBUG)
CFLAGS += $(CDEFS)
CFLAGS += -O$(OPT)
CFLAGS += -funsigned-char
CFLAGS += -funsigned-bitfields
CFLAGS += -fpack-struct
CFLAGS += -fshort-enums
CFLAGS += -Wall
CFLAGS += -Wstrict-prototypes
#CFLAGS += -mshort-calls
#CFLAGS += -fno-unit-at-a-time
#CFLAGS += -Wundef
#CFLAGS += -Wunreachable-code
#CFLAGS += -Wsign-compare
CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
CFLAGS += $(CSTANDARD)
#---------------- Compiler Options C++ ----------------
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns...: create assembler listing
CPPFLAGS = -g$(DEBUG)
CPPFLAGS += $(CPPDEFS)
CPPFLAGS += -O$(OPT)
CPPFLAGS += -funsigned-char
CPPFLAGS += -funsigned-bitfields
CPPFLAGS += -fpack-struct
CPPFLAGS += -fshort-enums
CPPFLAGS += -fno-exceptions
CPPFLAGS += -Wall
CPPFLAGS += -Wundef
#CPPFLAGS += -mshort-calls
#CPPFLAGS += -fno-unit-at-a-time
#CPPFLAGS += -Wstrict-prototypes
#CPPFLAGS += -Wunreachable-code
#CPPFLAGS += -Wsign-compare
CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
#CPPFLAGS += $(CSTANDARD)
#---------------- Assembler Options ----------------
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns: create listing
# -gstabs: have the assembler create line number information; note that
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
# -listing-cont-lines: Sets the maximum number of continuation lines of hex
# dump that will be displayed for a given single line of source input.
ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
# Floating point printf version (requires MATH_LIB = -lm below)
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
# If this is left blank, then it will use the Standard printf version.
PRINTF_LIB =
#PRINTF_LIB = $(PRINTF_LIB_MIN)
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
# Minimalistic scanf version
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
# If this is left blank, then it will use the Standard scanf version.
SCANF_LIB =
#SCANF_LIB = $(SCANF_LIB_MIN)
#SCANF_LIB = $(SCANF_LIB_FLOAT)
MATH_LIB = -lm
# List any extra directories to look for libraries here.
# Each directory must be seperated by a space.
# Use forward slashes for directory separators.
# For a directory that has spaces, enclose it in quotes.
EXTRALIBDIRS =
#---------------- External Memory Options ----------------
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# used for variables (.data/.bss) and heap (malloc()).
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# only used for heap (malloc()).
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
EXTMEMOPTS =
#---------------- Linker Options ----------------
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
#LDFLAGS += -T linker_script.x
#---------------- Programming Options (avrdude) ----------------
# Programming hardware
# Type: avrdude -c ?
# to get a full listing.
#
AVRDUDE_PROGRAMMER = stk500v2
# com1 = serial port. Use lpt1 to connect to parallel port.
AVRDUDE_PORT = com1 # programmer connected to serial device
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE_COUNTER = -y
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
#AVRDUDE_NO_VERIFY = -V
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_VERBOSE = -v -v
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
#---------------- Debugging Options ----------------
# For simulavr only - target MCU frequency.
DEBUG_MFREQ = $(F_CPU)
# Set the DEBUG_UI to either gdb or insight.
# DEBUG_UI = gdb
DEBUG_UI = insight
# Set the debugging back-end to either avarice, simulavr.
DEBUG_BACKEND = avarice
#DEBUG_BACKEND = simulavr
# GDB Init Filename.
GDBINIT_FILE = __avr_gdbinit
# When using avarice settings for the JTAG
JTAG_DEV = /dev/com1
# Debugging port used to communicate between GDB / avarice / simulavr.
DEBUG_PORT = 4242
# Debugging host used to communicate between GDB / avarice / simulavr, normally
# just set to localhost unless doing some sort of crazy debugging when
# avarice is running on a different computer.
DEBUG_HOST = localhost
#============================================================================
# Define programs and commands.
SHELL = sh
CC = avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
AR = avr-ar rcs
NM = avr-nm
AVRDUDE = avrdude
REMOVE = rm -f
REMOVEDIR = rm -rf
COPY = cp
WINSHELL = cmd
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_COFF = Converting to AVR COFF:
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
MSG_FLASH = Creating load file for Flash:
MSG_EEPROM = Creating load file for EEPROM:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling C:
MSG_COMPILING_CPP = Compiling C++:
MSG_ASSEMBLING = Assembling:
MSG_CLEANING = Cleaning project:
MSG_CREATING_LIBRARY = Creating library:
# Define all object files.
OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
# Define all listing files.
LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
# Compiler flags to generate dependency files.
GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: begin gccversion sizebefore build sizeafter end
# Change the build target to build a HEX file or a library.
build: elf hex eep lss sym
#build: lib
elf: $(TARGET).elf
hex: $(TARGET).hex
eep: $(TARGET).eep
lss: $(TARGET).lss
sym: $(TARGET).sym
LIBNAME=lib$(TARGET).a
lib: $(LIBNAME)
# Eye candy.
# AVR Studio 3.x does not check make's exit code but relies on
# the following magic strings to be generated by the compile job.
begin:
@echo
@echo $(MSG_BEGIN)
end:
@echo $(MSG_END)
@echo
# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf
sizebefore:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
2>/dev/null; echo; fi
sizeafter:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
2>/dev/null; echo; fi
# Display compiler version information.
gccversion :
@$(CC) --version
# Program the device.
program: $(TARGET).hex $(TARGET).eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
# Generate avr-gdb config/init file which does the following:
# define the reset signal, load the target file, connect to target, and set
# a breakpoint at main().
gdb-config:
@$(REMOVE) $(GDBINIT_FILE)
@echo define reset >> $(GDBINIT_FILE)
@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
@echo end >> $(GDBINIT_FILE)
@echo file $(TARGET).elf >> $(GDBINIT_FILE)
@echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
ifeq ($(DEBUG_BACKEND),simulavr)
@echo load >> $(GDBINIT_FILE)
endif
@echo break main >> $(GDBINIT_FILE)
debug: gdb-config $(TARGET).elf
ifeq ($(DEBUG_BACKEND), avarice)
@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
@$(WINSHELL) /c pause
else
@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
$(DEBUG_MFREQ) --port $(DEBUG_PORT)
endif
@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
COFFCONVERT = $(OBJCOPY) --debugging
COFFCONVERT += --change-section-address .data-0x800000
COFFCONVERT += --change-section-address .bss-0x800000
COFFCONVERT += --change-section-address .noinit-0x800000
COFFCONVERT += --change-section-address .eeprom-0x810000
coff: $(TARGET).elf
@echo
@echo $(MSG_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
extcoff: $(TARGET).elf
@echo
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
# Create extended listing file from ELF output file.
%.lss: %.elf
@echo
@echo $(MSG_EXTENDED_LISTING) $@
$(OBJDUMP) -h -S -z $< > $@
# Create a symbol table from ELF output file.
%.sym: %.elf
@echo
@echo $(MSG_SYMBOL_TABLE) $@
$(NM) -n $< > $@
# Create library from object files.
.SECONDARY : $(TARGET).a
.PRECIOUS : $(OBJ)
%.a: $(OBJ)
@echo
@echo $(MSG_CREATING_LIBRARY) $@
$(AR) $@ $(OBJ)
# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
@echo
@echo $(MSG_LINKING) $@
$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
# Compile: create object files from C source files.
$(OBJDIR)/%.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $< -o $@
# Compile: create object files from C++ source files.
$(OBJDIR)/%.o : %.cpp
@echo
@echo $(MSG_COMPILING_CPP) $<
$(CC) -c $(ALL_CPPFLAGS) $< -o $@
# Compile: create assembler files from C source files.
%.s : %.c
$(CC) -S $(ALL_CFLAGS) $< -o $@
# Compile: create assembler files from C++ source files.
%.s : %.cpp
$(CC) -S $(ALL_CPPFLAGS) $< -o $@
# Assemble: create object files from assembler source files.
$(OBJDIR)/%.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Create preprocessed source for use in sending a bug report.
%.i : %.c
$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
# Target: clean project.
clean: begin clean_list end
clean_list :
@echo
@echo $(MSG_CLEANING)
$(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).eep
$(REMOVE) $(TARGET).cof
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) $(TARGET).sym
$(REMOVE) $(TARGET).lss
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)
$(REMOVE) $(SRC:.c=.i)
$(REMOVEDIR) .dep
flash: virtualglove.hex
avrdude -p $(MCU) -c arduino -B 115200 -P /dev/ttyACM0 -v -v -e -Uflash:w:virtualglove.hex:a
# Create object files directory
$(shell mkdir $(OBJDIR) 2>/dev/null)
# Include the dependency files.
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion \
build elf hex eep lss sym coff extcoff \
clean clean_list program debug gdb-config

View File

@ -0,0 +1,31 @@
CFLAGS = -Os -Wall --std=c11 -g
CHIP = atmega328p
SOURCE_FILES = $(wildcard *.c)
OBJ_FILES = $(SOURCE_FILES:%.c=%.o)
BIN = led-driver.bin
HEX = virtualglove.hex
ASM = led-driver.asm
default: $(HEX)
%.o: %.c
avr-gcc $(CFLAGS) -mmcu=$(CHIP) -o $@ $<
$(BIN): $(OBJ_FILES)
avr-gcc $(CFLAGS) -o $@ $^
$(ASM): $(BIN)
avr-objdump -d -g -l -S $^ > $@
$(HEX): $(BIN)
avr-objcopy -O ihex -j .text -j .data $^ $@
asm: $(ASM)
flash: $(HEX)
avrdude -p $(CHIP) -c arduino -B 115200 -P /dev/ttyACM0 -v -v -e -Uflash:w:$(HEX):a
clean:
$(RM) $(OBJ_FILES) $(BIN) $(HEX) $(ASM)

View File

@ -0,0 +1,43 @@
#include "WS2812B_Atmega.h"
inline void writeZero() {
DATAPIN = 1;
wait6;
DATAPIN = 0;
wait15;
}
inline void writeOne() {
DATAPIN = 1;
wait14;
DATAPIN = 0;
wait8;
}
void writeRGB(uint8_t r, uint8_t g, uint8_t b) {
int i;
for( i = 128; i > 0; i >>= 1 ) {
if( g & i ){
writeOne();
} else {
writeZero();
}
}
for( i = 128; i > 0; i >>= 1 ) {
if( r & i ){
writeOne();
} else {
writeZero();
}
}
for( i = 128; i > 0; i >>= 1 ) {
if( b & i ){
writeOne();
} else {
writeZero();
}
}
}

View File

@ -0,0 +1,34 @@
/**
* This header files includes all function for the LEDs WS2812B.
* It uses assambler for the PWM-Protocol and is designed for
* a 20 MHz external oscillator.
*/
#ifndef WS2812B_ATMEGA
#define WS2812B_ATMEGA
#define F_CPU 20000000UL
#include <util/delay.h>
#include <avr/io.h>
#include <stdint.h>
#define DATAPIN PORTC
// https://github.com/cpldcpu/light_ws2812/blob/master/light_ws2812_AVR/Light_WS2812/light_ws2812.c
#define w_nop1 __asm__("nop \n\t")
#define w_nop2 __asm__("rjmp .+0 \n\t")
#define w_nop4 w_nop2; w_nop2
// f=20MHz -> T=0,05 µs
#define wait6 w_nop2; w_nop4 // == 0.3 µs ~ 0.4 µs (+- 150ns) == [0.25, 0.55] µs
#define wait8 w_nop4; w_nop4 // == 0.4 µs ~ 0.45µs (+- 150ns) == [0.30, 0.60] µs
#define wait14 wait8; wait6 // == 0.7 µs ~ 0.8 µs (+- 150ns) == [0.65, 0.95] µs
#define wait15 wait14; w_nop1 // == 0.75 µs ~ 0.85µs (+- 150ns) == [0.70, 1.00] µs
#define waitRES _delay_us(51) // > 50 µs
void writeZero(void);
void writeOne(void);
void writeRGB(uint8_t r, uint8_t g, uint8_t b);
#endif

View File

@ -0,0 +1,313 @@
1 .file "WS2812B_Atmega.c"
2 __SP_H__ = 0x3e
3 __SP_L__ = 0x3d
4 __SREG__ = 0x3f
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
9 .text
10 .Ltext0:
103 .global writeZero
105 writeZero:
106 .stabd 46,0,0
1:WS2812B_Atmega.c **** #include "WS2812B_Atmega.h"
2:WS2812B_Atmega.c ****
3:WS2812B_Atmega.c **** inline void writeZero() {
108 .LM0:
109 .LFBB1:
110 /* prologue: function */
111 /* frame size = 0 */
112 /* stack size = 0 */
113 .L__stack_usage = 0
4:WS2812B_Atmega.c **** DATAPIN = 1;
115 .LM1:
116 0000 81E0 ldi r24,lo8(1)
117 0002 88B9 out 0x8,r24
5:WS2812B_Atmega.c **** wait6;
119 .LM2:
120 /* #APP */
121 ; 5 "WS2812B_Atmega.c" 1
122 0004 00C0 rjmp .+0
123
124 ; 0 "" 2
125 ; 5 "WS2812B_Atmega.c" 1
126 0006 00C0 rjmp .+0
127
128 ; 0 "" 2
129 ; 5 "WS2812B_Atmega.c" 1
130 0008 00C0 rjmp .+0
131
132 ; 0 "" 2
6:WS2812B_Atmega.c **** DATAPIN = 0;
134 .LM3:
135 /* #NOAPP */
136 000a 18B8 out 0x8,__zero_reg__
7:WS2812B_Atmega.c **** wait15;
138 .LM4:
139 /* #APP */
140 ; 7 "WS2812B_Atmega.c" 1
141 000c 00C0 rjmp .+0
142
143 ; 0 "" 2
144 ; 7 "WS2812B_Atmega.c" 1
145 000e 00C0 rjmp .+0
146
147 ; 0 "" 2
148 ; 7 "WS2812B_Atmega.c" 1
149 0010 00C0 rjmp .+0
150
151 ; 0 "" 2
152 ; 7 "WS2812B_Atmega.c" 1
153 0012 00C0 rjmp .+0
154
155 ; 0 "" 2
156 ; 7 "WS2812B_Atmega.c" 1
157 0014 00C0 rjmp .+0
158
159 ; 0 "" 2
160 ; 7 "WS2812B_Atmega.c" 1
161 0016 00C0 rjmp .+0
162
163 ; 0 "" 2
164 ; 7 "WS2812B_Atmega.c" 1
165 0018 00C0 rjmp .+0
166
167 ; 0 "" 2
168 ; 7 "WS2812B_Atmega.c" 1
169 001a 0000 nop
170
171 ; 0 "" 2
172 /* #NOAPP */
173 001c 0895 ret
175 .Lscope1:
177 .stabd 78,0,0
179 .global writeOne
181 writeOne:
182 .stabd 46,0,0
8:WS2812B_Atmega.c **** }
9:WS2812B_Atmega.c ****
10:WS2812B_Atmega.c **** inline void writeOne() {
184 .LM5:
185 .LFBB2:
186 /* prologue: function */
187 /* frame size = 0 */
188 /* stack size = 0 */
189 .L__stack_usage = 0
11:WS2812B_Atmega.c **** DATAPIN = 1;
191 .LM6:
192 001e 81E0 ldi r24,lo8(1)
193 0020 88B9 out 0x8,r24
12:WS2812B_Atmega.c **** wait14;
195 .LM7:
196 /* #APP */
197 ; 12 "WS2812B_Atmega.c" 1
198 0022 00C0 rjmp .+0
199
200 ; 0 "" 2
201 ; 12 "WS2812B_Atmega.c" 1
202 0024 00C0 rjmp .+0
203
204 ; 0 "" 2
205 ; 12 "WS2812B_Atmega.c" 1
206 0026 00C0 rjmp .+0
207
208 ; 0 "" 2
209 ; 12 "WS2812B_Atmega.c" 1
210 0028 00C0 rjmp .+0
211
212 ; 0 "" 2
213 ; 12 "WS2812B_Atmega.c" 1
214 002a 00C0 rjmp .+0
215
216 ; 0 "" 2
217 ; 12 "WS2812B_Atmega.c" 1
218 002c 00C0 rjmp .+0
219
220 ; 0 "" 2
221 ; 12 "WS2812B_Atmega.c" 1
222 002e 00C0 rjmp .+0
223
224 ; 0 "" 2
13:WS2812B_Atmega.c **** DATAPIN = 0;
226 .LM8:
227 /* #NOAPP */
228 0030 18B8 out 0x8,__zero_reg__
14:WS2812B_Atmega.c **** wait8;
230 .LM9:
231 /* #APP */
232 ; 14 "WS2812B_Atmega.c" 1
233 0032 00C0 rjmp .+0
234
235 ; 0 "" 2
236 ; 14 "WS2812B_Atmega.c" 1
237 0034 00C0 rjmp .+0
238
239 ; 0 "" 2
240 ; 14 "WS2812B_Atmega.c" 1
241 0036 00C0 rjmp .+0
242
243 ; 0 "" 2
244 ; 14 "WS2812B_Atmega.c" 1
245 0038 00C0 rjmp .+0
246
247 ; 0 "" 2
248 /* #NOAPP */
249 003a 0895 ret
251 .Lscope2:
253 .stabd 78,0,0
258 .global writeRGB
260 writeRGB:
261 .stabd 46,0,0
15:WS2812B_Atmega.c **** }
16:WS2812B_Atmega.c ****
17:WS2812B_Atmega.c **** void writeRGB(uint8_t r, uint8_t g, uint8_t b) {
263 .LM10:
264 .LFBB3:
265 003c AF92 push r10
266 003e BF92 push r11
267 0040 CF92 push r12
268 0042 DF92 push r13
269 0044 EF92 push r14
270 0046 FF92 push r15
271 0048 0F93 push r16
272 004a 1F93 push r17
273 004c CF93 push r28
274 004e DF93 push r29
275 /* prologue: function */
276 /* frame size = 0 */
277 /* stack size = 10 */
278 .L__stack_usage = 10
279 0050 C82E mov r12,r24
280 0052 E42E mov r14,r20
282 .LM11:
283 0054 C8E0 ldi r28,lo8(8)
284 0056 D0E0 ldi r29,0
18:WS2812B_Atmega.c **** int i;
19:WS2812B_Atmega.c ****
20:WS2812B_Atmega.c **** for( i = 128; i > 0; i >>= 1 ) {
286 .LM12:
287 0058 00E8 ldi r16,lo8(-128)
288 005a 10E0 ldi r17,0
21:WS2812B_Atmega.c **** if( g & i ){
290 .LM13:
291 005c A62E mov r10,r22
292 005e B12C mov r11,__zero_reg__
293 .L6:
294 0060 C801 movw r24,r16
295 0062 8A21 and r24,r10
296 0064 9B21 and r25,r11
297 0066 892B or r24,r25
298 0068 01F0 breq .L4
22:WS2812B_Atmega.c **** writeOne();
300 .LM14:
301 006a 0E94 0000 call writeOne
302 006e 00C0 rjmp .L5
303 .L4:
23:WS2812B_Atmega.c **** } else {
24:WS2812B_Atmega.c **** writeZero();
305 .LM15:
306 0070 0E94 0000 call writeZero
307 .L5:
20:WS2812B_Atmega.c **** if( g & i ){
309 .LM16:
310 0074 1595 asr r17
311 0076 0795 ror r16
312 0078 2197 sbiw r28,1
313 007a 01F4 brne .L6
314 007c C8E0 ldi r28,lo8(8)
315 007e D0E0 ldi r29,0
316 0080 00E8 ldi r16,lo8(-128)
317 0082 10E0 ldi r17,0
25:WS2812B_Atmega.c **** }
26:WS2812B_Atmega.c **** }
27:WS2812B_Atmega.c ****
28:WS2812B_Atmega.c **** for( i = 128; i > 0; i >>= 1 ) {
29:WS2812B_Atmega.c **** if( r & i ){
319 .LM17:
320 0084 D12C mov r13,__zero_reg__
321 .L9:
322 0086 C801 movw r24,r16
323 0088 8C21 and r24,r12
324 008a 9D21 and r25,r13
325 008c 892B or r24,r25
326 008e 01F0 breq .L7
30:WS2812B_Atmega.c **** writeOne();
328 .LM18:
329 0090 0E94 0000 call writeOne
330 0094 00C0 rjmp .L8
331 .L7:
31:WS2812B_Atmega.c **** } else {
32:WS2812B_Atmega.c **** writeZero();
333 .LM19:
334 0096 0E94 0000 call writeZero
335 .L8:
28:WS2812B_Atmega.c **** if( r & i ){
337 .LM20:
338 009a 1595 asr r17
339 009c 0795 ror r16
340 009e 2197 sbiw r28,1
341 00a0 01F4 brne .L9
342 00a2 C8E0 ldi r28,lo8(8)
343 00a4 D0E0 ldi r29,0
344 00a6 00E8 ldi r16,lo8(-128)
345 00a8 10E0 ldi r17,0
33:WS2812B_Atmega.c **** }
34:WS2812B_Atmega.c **** }
35:WS2812B_Atmega.c ****
36:WS2812B_Atmega.c **** for( i = 128; i > 0; i >>= 1 ) {
37:WS2812B_Atmega.c **** if( b & i ){
347 .LM21:
348 00aa F12C mov r15,__zero_reg__
349 .L12:
350 00ac C801 movw r24,r16
351 00ae 8E21 and r24,r14
352 00b0 9F21 and r25,r15
353 00b2 892B or r24,r25
354 00b4 01F0 breq .L10
38:WS2812B_Atmega.c **** writeOne();
356 .LM22:
357 00b6 0E94 0000 call writeOne
358 00ba 00C0 rjmp .L11
359 .L10:
39:WS2812B_Atmega.c **** } else {
40:WS2812B_Atmega.c **** writeZero();
361 .LM23:
362 00bc 0E94 0000 call writeZero
363 .L11:
36:WS2812B_Atmega.c **** if( b & i ){
365 .LM24:
366 00c0 1595 asr r17
367 00c2 0795 ror r16
368 00c4 2197 sbiw r28,1
369 00c6 01F4 brne .L12
370 /* epilogue start */
41:WS2812B_Atmega.c **** }
42:WS2812B_Atmega.c **** }
43:WS2812B_Atmega.c **** }
372 .LM25:
373 00c8 DF91 pop r29
374 00ca CF91 pop r28
375 00cc 1F91 pop r17
376 00ce 0F91 pop r16
377 00d0 FF90 pop r15
378 00d2 EF90 pop r14
379 00d4 DF90 pop r13
380 00d6 CF90 pop r12
381 00d8 BF90 pop r11
382 00da AF90 pop r10
383 00dc 0895 ret
385 .Lscope3:
387 .stabd 78,0,0
389 .Letext0:
390 .ident "GCC: (GNU) 4.9.2"
DEFINED SYMBOLS
*ABS*:0000000000000000 WS2812B_Atmega.c
/tmp/cc4evma8.s:2 *ABS*:000000000000003e __SP_H__
/tmp/cc4evma8.s:3 *ABS*:000000000000003d __SP_L__
/tmp/cc4evma8.s:4 *ABS*:000000000000003f __SREG__
/tmp/cc4evma8.s:5 *ABS*:0000000000000000 __tmp_reg__
/tmp/cc4evma8.s:6 *ABS*:0000000000000001 __zero_reg__
/tmp/cc4evma8.s:105 .text:0000000000000000 writeZero
/tmp/cc4evma8.s:181 .text:000000000000001e writeOne
/tmp/cc4evma8.s:260 .text:000000000000003c writeRGB
NO UNDEFINED SYMBOLS

Binary file not shown.

81
sketches/djhgfjh/a.hex Normal file
View File

@ -0,0 +1,81 @@
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C9477020C940000BC
:1000800081E087B988B9000000000000000000008E
:10009000000018B800000000000000000000000090
:1000A0000000000000000000000000000000000050
:1000B000000088B9000000000000000000000000FF
:1000C00018B8000000000000000000000000000060
:1000D0000000000000000000000000000000000020
:1000E00088B900000000000000000000000018B8FF
:1000F0000000000000000000000000000000000000
:10010000000000000000000000000000000088B9AE
:1001100000000000000000000000000018B800000F
:1001200000000000000000000000000000000000CF
:1001300000000000000000000000000088B900007E
:100140000000000000000000000018B800000000DF
:10015000000000000000000000000000000000009F
:100160000000000000000000000088B9000000004E
:10017000000000000000000018B8000000000000AF
:10018000000000000000000000000000000000006F
:10019000000000000000000088B90000000000001E
:1001A00000000000000018B800000000000000007F
:1001B000000000000000000000000000000000003F
:1001C00000000000000088B90000000000000000EE
:1001D0000000000018B8000000000000000000004F
:1001E000000000000000000000000000000000000F
:1001F0000000000088B900000000000000000000BE
:10020000000018B80000000000000000000000001E
:1002100000000000000000000000000000000000DE
:10022000000088B90000000000000000000000008D
:1002300018B80000000000000000000000000000EE
:1002400000000000000000000000000000000000AE
:1002500088B900000000000000000000000018B88D
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000088B93D
:1002800000000000000000000000000018B800009E
:10029000000000000000000000000000000000005E
:1002A00000000000000000000000000088B900000D
:1002B0000000000000000000000018B8000000006E
:1002C000000000000000000000000000000000002E
:1002D0000000000000000000000088B900000000DD
:1002E000000000000000000018B80000000000003E
:1002F00000000000000000000000000000000000FE
:10030000000000000000000088B9000000000000AC
:1003100000000000000018B800000000000000000D
:1003200000000000000000000000000000000000CD
:1003300000000000000088B900000000000000007C
:100340000000000018B800000000000000000000DD
:10035000000000000000000000000000000000009D
:100360000000000088B9000000000000000000004C
:10037000000000000000000000000000000000007D
:10038000000018B80000000000000000000000009D
:100390000000000088B9000000000000000000001C
:1003A000000000000000000000000000000000004D
:1003B000000018B80000000000000000000000006D
:1003C0000000000088B900000000000000000000EC
:1003D000000000000000000000000000000000001D
:1003E000000018B80000000000000000000000003D
:1003F0000000000088B900000000000000000000BC
:1004000000000000000000000000000000000000EC
:10041000000018B80000000000000000000000000C
:100420000000000088B9000000000000000000008B
:1004300000000000000000000000000000000000BC
:10044000000018B8000000000000000000000000DC
:100450000000000088B9000000000000000000005B
:10046000000000000000000000000000000000008C
:10047000000018B8000000000000000000000000AC
:100480000000000088B9000000000000000000002B
:10049000000000000000000000000000000000005C
:1004A000000018B80000000000000000000000007C
:1004B0000000000088B900000000000000000000FB
:1004C000000000000000000000000000000000002C
:1004D000000018B80000000000000000000000004C
:1004E0000000000090E19A95F1F700C0CBCDF894A0
:0204F000FFCF3C
:00000001FF

View File

@ -0,0 +1,62 @@
#include "color_hsv.h"
void interpolateLinearly(hsv_t start, hsv_t end, size_t steps, hsv_t *colors) {
if( steps == 1 ) {
colors[0] = start;
return;
}
for( size_t i = 0; i < steps; i++ ) {
hsv_t tmp;
tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1));
tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ((int16_t)steps-1));
tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1));
colors[i] = tmp;
}
}
void hsv2rgbList(hsv_t* hsvList, rgb_t* rgbList, size_t count) {
for(size_t i = 0; i < count; ++i) {
rgbList[i] = hsv2rgb(&hsvList[i]);
}
}
rgb_t hsv2rgb(hsv_t* hsv) {
rgb_t res;
if(hsv->sat == 0) {
res.r = res.g = res.b = hsv->val;
} else {
float hue = (float) (hsv->hue<360?hsv->hue:hsv->hue-360);
float val = ((float) hsv->val ) / 100.0;
float sat = ((float) hsv->sat ) / 100.0;
uint8_t h = hue / 60;
float f = ( hue / 60 ) - h;
uint8_t p = RGB_MAX * ( val * ( 1 - sat ));
uint8_t q = RGB_MAX * ( val * ( 1 - sat * f ));
uint8_t t = RGB_MAX * ( val * ( 1 - sat * ( 1 - f )));
switch(h) {
case 0:
case 6: res.r = hsv->val; res.g = t; res.b = p; break;
case 1: res.r = q; res.g = hsv->val; res.b = p; break;
case 2: res.r = p; res.g = hsv->val; res.b = t; break;
case 3: res.r = p; res.g = q; res.b = hsv->val; break;
case 4: res.r = t; res.g = p; res.b = hsv->val; break;
case 5: res.r = hsv->hue; res.g = p; res.b = q; break;
}
}
return res;
}
hsv_t init_hsv_t(uint16_t hue, uint8_t sat, uint8_t val) {
hsv_t tmp;
tmp.hue = hue;
tmp.sat = sat;
tmp.val = val;
return tmp;
}

View File

@ -0,0 +1,26 @@
#ifndef _COLOR_HSV_H_
#define _COLOR_HSV_H_
#include <stddef.h>
#include <stdint.h>
#define RGB_MAX 128
typedef struct {
uint8_t r;
uint8_t g;
uint8_t b;
} rgb_t;
typedef struct {
uint16_t hue;
uint8_t sat;
uint8_t val;
} hsv_t;
hsv_t init_hsv_t(uint16_t hue, uint8_t sat, uint8_t val);
rgb_t hsv2rgb(hsv_t* hsv);
void hsv2rgbList(hsv_t* hsvList, rgb_t* rgbList, size_t count);
void interpolateLinearly(hsv_t start, hsv_t end, size_t steps, hsv_t *colors);
#endif

View File

@ -0,0 +1,662 @@
1 .file "color_hsv.c"
2 __SP_H__ = 0x3e
3 __SP_L__ = 0x3d
4 __SREG__ = 0x3f
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
9 .text
10 .Ltext0:
103 .global interpolateLinearly
105 interpolateLinearly:
106 .stabd 46,0,0
1:color_hsv.c **** #include "color_hsv.h"
2:color_hsv.c ****
3:color_hsv.c **** void interpolateLinearly(hsv_t start, hsv_t end, size_t steps, hsv_t *colors) {
108 .LM0:
109 .LFBB1:
110 0000 2F92 push r2
111 0002 3F92 push r3
112 0004 4F92 push r4
113 0006 5F92 push r5
114 0008 6F92 push r6
115 000a 7F92 push r7
116 000c 8F92 push r8
117 000e 9F92 push r9
118 0010 AF92 push r10
119 0012 BF92 push r11
120 0014 CF92 push r12
121 0016 DF92 push r13
122 0018 EF92 push r14
123 001a FF92 push r15
124 001c 0F93 push r16
125 001e 1F93 push r17
126 0020 CF93 push r28
127 0022 DF93 push r29
128 0024 CDB7 in r28,__SP_L__
129 0026 DEB7 in r29,__SP_H__
130 0028 2A97 sbiw r28,10
131 002a 0FB6 in __tmp_reg__,__SREG__
132 002c F894 cli
133 002e DEBF out __SP_H__,r29
134 0030 0FBE out __SREG__,__tmp_reg__
135 0032 CDBF out __SP_L__,r28
136 /* prologue: function */
137 /* frame size = 10 */
138 /* stack size = 28 */
139 .L__stack_usage = 28
140 0034 D82E mov r13,r24
141 0036 C92E mov r12,r25
142 0038 F701 movw r30,r14
4:color_hsv.c **** if( steps == 1 ) {
144 .LM1:
145 003a 0130 cpi r16,1
146 003c 1105 cpc r17,__zero_reg__
147 003e 01F0 breq .L2
148 .LBB2:
149 .LBB3:
5:color_hsv.c **** colors[0] = start;
6:color_hsv.c **** return;
7:color_hsv.c **** }
8:color_hsv.c ****
9:color_hsv.c **** for( size_t i = 0; i < steps; i++ ) {
10:color_hsv.c **** hsv_t tmp;
11:color_hsv.c **** tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i /
151 .LM2:
152 0040 3B01 movw r6,r22
153 0042 2901 movw r4,r18
154 0044 461A sub r4,r22
155 0046 570A sbc r5,r23
156 0048 842F mov r24,r20
157 004a 90E0 ldi r25,0
12:color_hsv.c **** tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / (
159 .LM3:
160 004c BC01 movw r22,r24
161 004e 6D19 sub r22,r13
162 0050 7109 sbc r23,__zero_reg__
163 0052 7E83 std Y+6,r23
164 0054 6D83 std Y+5,r22
165 0056 852F mov r24,r21
166 0058 90E0 ldi r25,0
13:color_hsv.c **** tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / (
168 .LM4:
169 005a 9C01 movw r18,r24
170 005c 2C19 sub r18,r12
171 005e 3109 sbc r19,__zero_reg__
172 0060 3887 std Y+8,r19
173 0062 2F83 std Y+7,r18
174 0064 3396 adiw r30,3
175 0066 1A86 std Y+10,__zero_reg__
176 0068 1986 std Y+9,__zero_reg__
177 006a E12C mov r14,__zero_reg__
178 006c F12C mov r15,__zero_reg__
179 006e 80E0 ldi r24,0
180 0070 90E0 ldi r25,0
181 0072 20E0 ldi r18,0
182 0074 30E0 ldi r19,0
11:color_hsv.c **** tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / (
184 .LM5:
185 0076 5801 movw r10,r16
186 0078 41E0 ldi r20,1
187 007a A41A sub r10,r20
188 007c B108 sbc r11,__zero_reg__
189 007e 00C0 rjmp .L3
190 .L2:
191 .LBE3:
192 .LBE2:
5:color_hsv.c **** return;
194 .LM6:
195 0080 6083 st Z,r22
196 0082 7183 std Z+1,r23
197 0084 8283 std Z+2,r24
198 0086 9383 std Z+3,r25
6:color_hsv.c **** }
200 .LM7:
201 0088 00C0 rjmp .L1
202 .L3:
203 008a 1C01 movw r2,r24
204 008c 240C add r2,r4
205 008e 351C adc r3,r5
206 0090 4D81 ldd r20,Y+5
207 0092 5E81 ldd r21,Y+6
208 0094 4E0D add r20,r14
209 0096 5F1D adc r21,r15
210 0098 5A83 std Y+2,r21
211 009a 4983 std Y+1,r20
212 009c 4F81 ldd r20,Y+7
213 009e 5885 ldd r21,Y+8
214 00a0 6985 ldd r22,Y+9
215 00a2 7A85 ldd r23,Y+10
216 00a4 460F add r20,r22
217 00a6 571F adc r21,r23
218 00a8 5C83 std Y+4,r21
219 00aa 4B83 std Y+3,r20
220 .LBB5:
9:color_hsv.c **** hsv_t tmp;
222 .LM8:
223 00ac 2017 cp r18,r16
224 00ae 3107 cpc r19,r17
225 00b0 01F0 breq .L1
226 00b2 4F01 movw r8,r30
227 00b4 53E0 ldi r21,3
228 00b6 851A sub r8,r21
229 00b8 9108 sbc r9,__zero_reg__
230 .LBB4:
11:color_hsv.c **** tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / (
232 .LM9:
233 00ba B501 movw r22,r10
234 00bc 0E94 0000 call __divmodhi4
235 00c0 660D add r22,r6
236 00c2 771D adc r23,r7
14:color_hsv.c **** colors[i] = tmp;
238 .LM10:
239 00c4 D401 movw r26,r8
240 00c6 6D93 st X+,r22
241 00c8 7C93 st X,r23
242 00ca 4F01 movw r8,r30
243 00cc B1E0 ldi r27,1
244 00ce 8B1A sub r8,r27
245 00d0 9108 sbc r9,__zero_reg__
12:color_hsv.c **** tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / (
247 .LM11:
248 00d2 C701 movw r24,r14
249 00d4 B501 movw r22,r10
250 00d6 0E94 0000 call __divmodhi4
251 00da 6D0D add r22,r13
253 .LM12:
254 00dc D401 movw r26,r8
255 00de 6C93 st X,r22
13:color_hsv.c **** colors[i] = tmp;
257 .LM13:
258 00e0 8985 ldd r24,Y+9
259 00e2 9A85 ldd r25,Y+10
260 00e4 B501 movw r22,r10
261 00e6 0E94 0000 call __divmodhi4
262 00ea 6C0D add r22,r12
264 .LM14:
265 00ec 6083 st Z,r22
266 .LBE4:
9:color_hsv.c **** hsv_t tmp;
268 .LM15:
269 00ee 2F5F subi r18,-1
270 00f0 3F4F sbci r19,-1
271 00f2 3496 adiw r30,4
272 00f4 4B81 ldd r20,Y+3
273 00f6 5C81 ldd r21,Y+4
274 00f8 5A87 std Y+10,r21
275 00fa 4987 std Y+9,r20
276 00fc E980 ldd r14,Y+1
277 00fe FA80 ldd r15,Y+2
278 0100 C101 movw r24,r2
279 0102 00C0 rjmp .L3
280 .L1:
281 /* epilogue start */
282 .LBE5:
15:color_hsv.c **** }
16:color_hsv.c **** }
284 .LM16:
285 0104 2A96 adiw r28,10
286 0106 0FB6 in __tmp_reg__,__SREG__
287 0108 F894 cli
288 010a DEBF out __SP_H__,r29
289 010c 0FBE out __SREG__,__tmp_reg__
290 010e CDBF out __SP_L__,r28
291 0110 DF91 pop r29
292 0112 CF91 pop r28
293 0114 1F91 pop r17
294 0116 0F91 pop r16
295 0118 FF90 pop r15
296 011a EF90 pop r14
297 011c DF90 pop r13
298 011e CF90 pop r12
299 0120 BF90 pop r11
300 0122 AF90 pop r10
301 0124 9F90 pop r9
302 0126 8F90 pop r8
303 0128 7F90 pop r7
304 012a 6F90 pop r6
305 012c 5F90 pop r5
306 012e 4F90 pop r4
307 0130 3F90 pop r3
308 0132 2F90 pop r2
309 0134 0895 ret
317 .Lscope1:
319 .stabd 78,0,0
320 .global __floatunsisf
321 .global __divsf3
322 .global __fixunssfsi
323 .global __floatsisf
324 .global __subsf3
325 .global __mulsf3
328 .global hsv2rgb
330 hsv2rgb:
331 .stabd 46,0,0
17:color_hsv.c ****
18:color_hsv.c **** void hsv2rgbList(hsv_t* hsvList, rgb_t* rgbList, size_t count) {
19:color_hsv.c **** for(size_t i = 0; i < count; ++i) {
20:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]);
21:color_hsv.c **** }
22:color_hsv.c **** }
23:color_hsv.c ****
24:color_hsv.c **** rgb_t hsv2rgb(hsv_t* hsv) {
333 .LM17:
334 .LFBB2:
335 0136 2F92 push r2
336 0138 3F92 push r3
337 013a 4F92 push r4
338 013c 5F92 push r5
339 013e 6F92 push r6
340 0140 7F92 push r7
341 0142 8F92 push r8
342 0144 9F92 push r9
343 0146 AF92 push r10
344 0148 BF92 push r11
345 014a CF92 push r12
346 014c DF92 push r13
347 014e EF92 push r14
348 0150 FF92 push r15
349 0152 0F93 push r16
350 0154 1F93 push r17
351 0156 CF93 push r28
352 0158 DF93 push r29
353 015a 00D0 rcall .
354 015c 00D0 rcall .
355 015e CDB7 in r28,__SP_L__
356 0160 DEB7 in r29,__SP_H__
357 /* prologue: function */
358 /* frame size = 4 */
359 /* stack size = 22 */
360 .L__stack_usage = 22
25:color_hsv.c **** rgb_t res;
26:color_hsv.c ****
27:color_hsv.c **** if(hsv->sat == 0) {
362 .LM18:
363 0162 FC01 movw r30,r24
364 0164 B280 ldd r11,Z+2
365 0166 3380 ldd r3,Z+3
366 0168 B110 cpse r11,__zero_reg__
367 016a 00C0 rjmp .L8
28:color_hsv.c **** res.r = res.g = res.b = hsv->val;
369 .LM19:
370 016c 232C mov r2,r3
371 016e 3B82 std Y+3,r3
372 0170 3C82 std Y+4,r3
373 0172 00C0 rjmp .L9
374 .L8:
375 0174 FC01 movw r30,r24
376 .LBB6:
29:color_hsv.c **** } else {
30:color_hsv.c **** float hue = (float) (hsv->hue<360?hsv->hue:hsv->hue-360);
378 .LM20:
379 0176 0081 ld r16,Z
380 0178 1181 ldd r17,Z+1
381 017a B801 movw r22,r16
382 017c 0836 cpi r16,104
383 017e F1E0 ldi r31,1
384 0180 1F07 cpc r17,r31
385 0182 00F0 brlo .L20
387 .LM21:
388 0184 6856 subi r22,104
389 0186 7140 sbci r23,1
390 .L20:
391 0188 80E0 ldi r24,0
392 018a 90E0 ldi r25,0
393 018c 0E94 0000 call __floatunsisf
394 0190 2B01 movw r4,r22
395 0192 3C01 movw r6,r24
31:color_hsv.c **** float val = ((float) hsv->val ) / 100.0;
397 .LM22:
398 0194 632D mov r22,r3
399 0196 70E0 ldi r23,0
400 0198 80E0 ldi r24,0
401 019a 90E0 ldi r25,0
402 019c 0E94 0000 call __floatunsisf
403 01a0 20E0 ldi r18,0
404 01a2 30E0 ldi r19,0
405 01a4 48EC ldi r20,lo8(-56)
406 01a6 52E4 ldi r21,lo8(66)
407 01a8 0E94 0000 call __divsf3
408 01ac 6B01 movw r12,r22
409 01ae 7C01 movw r14,r24
32:color_hsv.c **** float sat = ((float) hsv->sat ) / 100.0;
411 .LM23:
412 01b0 6B2D mov r22,r11
413 01b2 70E0 ldi r23,0
414 01b4 80E0 ldi r24,0
415 01b6 90E0 ldi r25,0
416 01b8 0E94 0000 call __floatunsisf
417 01bc 20E0 ldi r18,0
418 01be 30E0 ldi r19,0
419 01c0 48EC ldi r20,lo8(-56)
420 01c2 52E4 ldi r21,lo8(66)
421 01c4 0E94 0000 call __divsf3
422 01c8 4B01 movw r8,r22
423 01ca 5C01 movw r10,r24
33:color_hsv.c ****
34:color_hsv.c **** uint8_t h = hue / 60;
425 .LM24:
426 01cc 20E0 ldi r18,0
427 01ce 30E0 ldi r19,0
428 01d0 40E7 ldi r20,lo8(112)
429 01d2 52E4 ldi r21,lo8(66)
430 01d4 C301 movw r24,r6
431 01d6 B201 movw r22,r4
432 01d8 0E94 0000 call __divsf3
433 01dc 2B01 movw r4,r22
434 01de 3C01 movw r6,r24
435 01e0 0E94 0000 call __fixunssfsi
436 01e4 6A83 std Y+2,r22
35:color_hsv.c **** float f = ( hue / 60 ) - h;
438 .LM25:
439 01e6 70E0 ldi r23,0
440 01e8 80E0 ldi r24,0
441 01ea 90E0 ldi r25,0
442 01ec 0E94 0000 call __floatsisf
443 01f0 9B01 movw r18,r22
444 01f2 AC01 movw r20,r24
445 01f4 C301 movw r24,r6
446 01f6 B201 movw r22,r4
447 01f8 0E94 0000 call __subsf3
448 01fc 2B01 movw r4,r22
449 01fe 3C01 movw r6,r24
36:color_hsv.c ****
37:color_hsv.c **** uint8_t p = RGB_MAX * ( val * ( 1 - sat ));
451 .LM26:
452 0200 A501 movw r20,r10
453 0202 9401 movw r18,r8
454 0204 60E0 ldi r22,0
455 0206 70E0 ldi r23,0
456 0208 80E8 ldi r24,lo8(-128)
457 020a 9FE3 ldi r25,lo8(63)
458 020c 0E94 0000 call __subsf3
459 0210 9B01 movw r18,r22
460 0212 AC01 movw r20,r24
461 0214 C701 movw r24,r14
462 0216 B601 movw r22,r12
463 0218 0E94 0000 call __mulsf3
464 021c 20E0 ldi r18,0
465 021e 30E0 ldi r19,0
466 0220 40E0 ldi r20,0
467 0222 53E4 ldi r21,lo8(67)
468 0224 0E94 0000 call __mulsf3
469 0228 0E94 0000 call __fixunssfsi
470 022c 262E mov r2,r22
38:color_hsv.c **** uint8_t q = RGB_MAX * ( val * ( 1 - sat * f ));
472 .LM27:
473 022e A301 movw r20,r6
474 0230 9201 movw r18,r4
475 0232 C501 movw r24,r10
476 0234 B401 movw r22,r8
477 0236 0E94 0000 call __mulsf3
478 023a 9B01 movw r18,r22
479 023c AC01 movw r20,r24
480 023e 60E0 ldi r22,0
481 0240 70E0 ldi r23,0
482 0242 80E8 ldi r24,lo8(-128)
483 0244 9FE3 ldi r25,lo8(63)
484 0246 0E94 0000 call __subsf3
485 024a 9B01 movw r18,r22
486 024c AC01 movw r20,r24
487 024e C701 movw r24,r14
488 0250 B601 movw r22,r12
489 0252 0E94 0000 call __mulsf3
490 0256 20E0 ldi r18,0
491 0258 30E0 ldi r19,0
492 025a 40E0 ldi r20,0
493 025c 53E4 ldi r21,lo8(67)
494 025e 0E94 0000 call __mulsf3
495 0262 0E94 0000 call __fixunssfsi
496 0266 6983 std Y+1,r22
39:color_hsv.c **** uint8_t t = RGB_MAX * ( val * ( 1 - sat * ( 1 - f )));
498 .LM28:
499 0268 A301 movw r20,r6
500 026a 9201 movw r18,r4
501 026c 60E0 ldi r22,0
502 026e 70E0 ldi r23,0
503 0270 80E8 ldi r24,lo8(-128)
504 0272 9FE3 ldi r25,lo8(63)
505 0274 0E94 0000 call __subsf3
506 0278 9B01 movw r18,r22
507 027a AC01 movw r20,r24
508 027c C501 movw r24,r10
509 027e B401 movw r22,r8
510 0280 0E94 0000 call __mulsf3
511 0284 9B01 movw r18,r22
512 0286 AC01 movw r20,r24
513 0288 60E0 ldi r22,0
514 028a 70E0 ldi r23,0
515 028c 80E8 ldi r24,lo8(-128)
516 028e 9FE3 ldi r25,lo8(63)
517 0290 0E94 0000 call __subsf3
518 0294 9B01 movw r18,r22
519 0296 AC01 movw r20,r24
520 0298 C701 movw r24,r14
521 029a B601 movw r22,r12
522 029c 0E94 0000 call __mulsf3
523 02a0 20E0 ldi r18,0
524 02a2 30E0 ldi r19,0
525 02a4 40E0 ldi r20,0
526 02a6 53E4 ldi r21,lo8(67)
527 02a8 0E94 0000 call __mulsf3
528 02ac 0E94 0000 call __fixunssfsi
40:color_hsv.c ****
41:color_hsv.c **** switch(h) {
530 .LM29:
531 02b0 2A81 ldd r18,Y+2
532 02b2 822F mov r24,r18
533 02b4 90E0 ldi r25,0
534 02b6 8730 cpi r24,7
535 02b8 9105 cpc r25,__zero_reg__
536 02ba 00F4 brsh .L19
538 .LM30:
539 02bc FC01 movw r30,r24
540 02be E050 subi r30,lo8(-(gs(.L13)))
541 02c0 F040 sbci r31,hi8(-(gs(.L13)))
542 02c2 0C94 0000 jmp __tablejump2__
543 .section .progmem.gcc_sw_table,"a",@progbits
544 .p2align 1
545 .L13:
546 0000 0000 .word gs(.L12)
547 0002 0000 .word gs(.L14)
548 0004 0000 .word gs(.L15)
549 0006 0000 .word gs(.L16)
550 0008 0000 .word gs(.L17)
551 000a 0000 .word gs(.L18)
552 000c 0000 .word gs(.L12)
553 .text
554 .L12:
42:color_hsv.c **** case 0:
43:color_hsv.c **** case 6: res.r = hsv->val; res.g = t; res.b = p; break;
556 .LM31:
557 02c6 2B82 std Y+3,r2
558 02c8 6C83 std Y+4,r22
559 02ca 232C mov r2,r3
560 02cc 00C0 rjmp .L9
561 .L14:
44:color_hsv.c **** case 1: res.r = q; res.g = hsv->val; res.b = p; break;
563 .LM32:
564 02ce 2B82 std Y+3,r2
565 02d0 3C82 std Y+4,r3
566 02d2 2980 ldd r2,Y+1
567 02d4 00C0 rjmp .L9
568 .L15:
45:color_hsv.c **** case 2: res.r = p; res.g = hsv->val; res.b = t; break;
570 .LM33:
571 02d6 6B83 std Y+3,r22
572 02d8 3C82 std Y+4,r3
573 02da 00C0 rjmp .L9
574 .L16:
46:color_hsv.c **** case 3: res.r = p; res.g = q; res.b = hsv->val; break;
576 .LM34:
577 02dc 3B82 std Y+3,r3
578 02de 8981 ldd r24,Y+1
579 02e0 8C83 std Y+4,r24
580 02e2 00C0 rjmp .L9
581 .L17:
47:color_hsv.c **** case 4: res.r = t; res.g = p; res.b = hsv->val; break;
583 .LM35:
584 02e4 3B82 std Y+3,r3
585 02e6 2C82 std Y+4,r2
586 02e8 262E mov r2,r22
587 02ea 00C0 rjmp .L9
588 .L18:
48:color_hsv.c **** case 5: res.r = hsv->hue; res.g = p; res.b = q; break;
590 .LM36:
591 02ec E981 ldd r30,Y+1
592 02ee EB83 std Y+3,r30
593 02f0 2C82 std Y+4,r2
594 02f2 202E mov r2,r16
595 02f4 00C0 rjmp .L9
596 .L19:
41:color_hsv.c **** case 0:
598 .LM37:
599 02f6 212C mov r2,__zero_reg__
600 .L9:
601 .LBE6:
49:color_hsv.c ****
50:color_hsv.c **** }
51:color_hsv.c **** }
52:color_hsv.c **** return res;
53:color_hsv.c **** }
603 .LM38:
604 02f8 622D mov r22,r2
605 02fa 7C81 ldd r23,Y+4
606 02fc 8B81 ldd r24,Y+3
607 /* epilogue start */
608 02fe 0F90 pop __tmp_reg__
609 0300 0F90 pop __tmp_reg__
610 0302 0F90 pop __tmp_reg__
611 0304 0F90 pop __tmp_reg__
612 0306 DF91 pop r29
613 0308 CF91 pop r28
614 030a 1F91 pop r17
615 030c 0F91 pop r16
616 030e FF90 pop r15
617 0310 EF90 pop r14
618 0312 DF90 pop r13
619 0314 CF90 pop r12
620 0316 BF90 pop r11
621 0318 AF90 pop r10
622 031a 9F90 pop r9
623 031c 8F90 pop r8
624 031e 7F90 pop r7
625 0320 6F90 pop r6
626 0322 5F90 pop r5
627 0324 4F90 pop r4
628 0326 3F90 pop r3
629 0328 2F90 pop r2
630 032a 0895 ret
635 .Lscope2:
637 .stabd 78,0,0
641 .global hsv2rgbList
643 hsv2rgbList:
644 .stabd 46,0,0
18:color_hsv.c **** for(size_t i = 0; i < count; ++i) {
646 .LM39:
647 .LFBB3:
648 032c CF92 push r12
649 032e DF92 push r13
650 0330 EF92 push r14
651 0332 FF92 push r15
652 0334 0F93 push r16
653 0336 1F93 push r17
654 0338 CF93 push r28
655 033a DF93 push r29
656 /* prologue: function */
657 /* frame size = 0 */
658 /* stack size = 8 */
659 .L__stack_usage = 8
660 033c 6A01 movw r12,r20
661 033e EB01 movw r28,r22
662 0340 7C01 movw r14,r24
663 .LBB7:
19:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]);
665 .LM40:
666 0342 00E0 ldi r16,0
667 0344 10E0 ldi r17,0
668 .L22:
19:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]);
670 .LM41:
671 0346 0C15 cp r16,r12
672 0348 1D05 cpc r17,r13
673 034a 01F0 breq .L24
20:color_hsv.c **** }
675 .LM42:
676 034c C701 movw r24,r14
677 034e 0E94 0000 call hsv2rgb
678 0352 6993 st Y+,r22
679 0354 7993 st Y+,r23
680 0356 8993 st Y+,r24
19:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]);
682 .LM43:
683 0358 0F5F subi r16,-1
684 035a 1F4F sbci r17,-1
685 035c 84E0 ldi r24,4
686 035e E80E add r14,r24
687 0360 F11C adc r15,__zero_reg__
688 0362 00C0 rjmp .L22
689 .L24:
690 /* epilogue start */
691 .LBE7:
22:color_hsv.c ****
693 .LM44:
694 0364 DF91 pop r29
695 0366 CF91 pop r28
696 0368 1F91 pop r17
697 036a 0F91 pop r16
698 036c FF90 pop r15
699 036e EF90 pop r14
700 0370 DF90 pop r13
701 0372 CF90 pop r12
702 0374 0895 ret
707 .Lscope3:
709 .stabd 78,0,0
713 .global init_hsv_t
715 init_hsv_t:
716 .stabd 46,0,0
54:color_hsv.c ****
55:color_hsv.c **** hsv_t init_hsv_t(uint16_t hue, uint8_t sat, uint8_t val) {
718 .LM45:
719 .LFBB4:
720 /* prologue: function */
721 /* frame size = 0 */
722 /* stack size = 0 */
723 .L__stack_usage = 0
724 0376 282F mov r18,r24
725 0378 862F mov r24,r22
56:color_hsv.c **** hsv_t tmp;
57:color_hsv.c **** tmp.hue = hue;
58:color_hsv.c **** tmp.sat = sat;
59:color_hsv.c **** tmp.val = val;
60:color_hsv.c ****
61:color_hsv.c **** return tmp;
62:color_hsv.c **** }
727 .LM46:
728 037a 622F mov r22,r18
729 037c 792F mov r23,r25
730 037e 942F mov r25,r20
731 0380 0895 ret
733 .Lscope4:
735 .stabd 78,0,0
737 .Letext0:
738 .ident "GCC: (GNU) 4.9.2"
DEFINED SYMBOLS
*ABS*:0000000000000000 color_hsv.c
/tmp/cc9SIoOd.s:2 *ABS*:000000000000003e __SP_H__
/tmp/cc9SIoOd.s:3 *ABS*:000000000000003d __SP_L__
/tmp/cc9SIoOd.s:4 *ABS*:000000000000003f __SREG__
/tmp/cc9SIoOd.s:5 *ABS*:0000000000000000 __tmp_reg__
/tmp/cc9SIoOd.s:6 *ABS*:0000000000000001 __zero_reg__
/tmp/cc9SIoOd.s:105 .text:0000000000000000 interpolateLinearly
/tmp/cc9SIoOd.s:330 .text:0000000000000136 hsv2rgb
/tmp/cc9SIoOd.s:643 .text:000000000000032c hsv2rgbList
/tmp/cc9SIoOd.s:715 .text:0000000000000376 init_hsv_t
UNDEFINED SYMBOLS
__divmodhi4
__floatunsisf
__divsf3
__fixunssfsi
__floatsisf
__subsf3
__mulsf3
__tablejump2__

Binary file not shown.

4172
sketches/djhgfjh/colors.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
#include "color_hsv.h"
void interpolateLinearly(hsv_t start, hsv_t end, size_t steps, hsv_t *colors) {
if( steps == 1 ) {
colors[0] = start;
return;
}
for( size_t i = 0; i < steps; i++ ) {
hsv_t tmp;
tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1));
tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ((int16_t)steps-1));
tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1));
colors[i] = tmp;
}
}
void hsv2rgbList(hsv_t* hsv, rgb_t* rgb, size_t count) {
for(size_t i = 0; i < count; ++i) {
rgb[i] = hsv2rgb(&hsv[i]);
}
}
rgb_t hsv2rgb(hsv_t* hsv) {
rgb_t res;
if(hsv->sat == 0) {
res.r = res.g = res.b = hsv->val;
} else {
float hue = (float) (hsv->hue<360?hsv->hue:hsv->hue-360);
float val = ((float) hsv->val ) / 100.0;
float sat = ((float) hsv->sat ) / 100.0;
uint8_t h = hue / 60;
float f = ( hue / 60 ) - h;
uint8_t p = RGB_MAX * ( val * ( 1 - sat ));
uint8_t q = RGB_MAX * ( val * ( 1 - sat * f ));
uint8_t t = RGB_MAX * ( val * ( 1 - sat * ( 1 - f )));
switch(h) {
case 0:
case 6: res.r = hsv->val; res.g = t; res.b = p; break;
case 1: res.r = q; res.g = hsv->val; res.b = p; break;
case 2: res.r = p; res.g = hsv->val; res.b = t; break;
case 3: res.r = p; res.g = q; res.b = hsv->val; break;
case 4: res.r = t; res.g = p; res.b = hsv->val; break;
case 5: res.r = hsv->hue; res.g = p; res.b = q; break;
}
}
return res;
}
hsv_t makeHSV(uint16_t hue, uint8_t sat, uint8_t val) {
hsv_t tmp;
tmp.hue = hue;
tmp.sat = sat;
tmp.val = val;
return tmp;
}

BIN
sketches/djhgfjh/colors.o Normal file

Binary file not shown.

BIN
sketches/djhgfjh/led-driver Executable file

Binary file not shown.

BIN
sketches/djhgfjh/led-driver.bin Executable file

Binary file not shown.

View File

@ -0,0 +1,85 @@
#include <stdint.h>
#include <stddef.h>
#include <avr/io.h>
//~ #include <avr/pgmspace.h>
#include <stdbool.h>
#include "WS2812B_Atmega.h"
#include "color_hsv.h"
//~ #include "party.h"
#include <stdio.h>
#include "colors.h"
#define LEDS 30
#define HUE_MAX 610 // pink red
#define HUE_MIN 350 // dark blue
#define HUE_STEPS 1
//~ const size_t cols = LEDS;
//~ const size_t rows = (HUE_MAX - HUE_MIN) / (HUE_STEPS * 2);
//~ void init_rgbLookup(rgb_t lut[rows][cols], size_t rows, size_t cols, uint16_t hueMin, uint16_t hueMax, uint16_t steps) {
//~ uint8_t sat = 100, val = 30;
//~ hsv_t colorsHSV[cols];
//~ for( int row = 0; row < rows; row++) {
//~ interpolateLinearly(init_hsv_t(hueMin, sat, val), init_hsv_t(hueMax, sat, val), cols, colorsHSV);
//~ hsv2rgbList(colorsHSV, lut[row],cols);
//~ hueMin += steps;
//~ hueMax -= steps;
//~ }
//~ }
int main(void){
//~ partyHard(LEDS);
//const static uint64_t poo[] = {884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884};
//~ rgb_t rgbLookup[rows][cols]; // = 11700 Byte
//~ init_rgbLookup(rgbLookup, rows, cols, HUE_MIN, HUE_MAX, HUE_STEPS);
//~ printf("const static uint8_t rgbLookup = {\t// begin matrix\n");
//~ for(int i = 0; i < rows; i++) {
//~ printf("\t{\t// begin row #%d\n", i);
//~ for( int j = 0; j < cols; j++) {
//~ printf("\t\t{%d,%d,%d},\t// col #%d\n", rgbLookup[i][j].r, rgbLookup[i][j].g, rgbLookup[i][j].b, j);
//~ }
//~ printf("\t},\t// end row #%d\n",i);
//~ }
//~ printf("};\t end matrix");
//~ uint64_t test = poo[27] + 3 * poo[10];
//~ test += 5 - poo[12];
DDRC = 0x01; // PORT C0 output
size_t row = 0;
size_t col = 0;
int8_t sign = 1;
while(true) {
if( sign == 1) {
for(col = 0; col < COLS; col++){
writeRGB(rgbTable[row][col][0], rgbTable[row][col][1], rgbTable[row][col][2]);
}
} else if( sign == -1) {
size_t index = COLS - 1 - col;
for(col = 0; col < COLS; col++){
writeRGB(rgbTable[row][index][0], rgbTable[row][index][1], rgbTable[row][index][2]);
}
}
_delay_ms(50);
row += sign;
if(row == ROWS - 1) {
sign = -1;
} else if(row == 0) {
sign = 1;
}
}
}

View File

@ -0,0 +1,187 @@
:100000000C943B000C9450000C9450000C94500045
:100010000C9450000C9450000C9450000C94500020
:100020000C9450000C9450000C9450000C94500010
:100030000C9450000C9450000C9450000C94500000
:100040000C9450000C9450000C9450000C945000F0
:100050000C9450000C9450000C9450000C945000E0
:100060000C9450000C945000DA02DE02E202E50229
:10007000E902ED02DA0211241FBECFEFD8E0DEBFA5
:10008000CDBF11E0A0E0B1E0ECE8FBE002C00590DC
:100090000D92A430B107D9F70E9438030C94C4051F
:1000A0000C9400008C0181E087B9C0E0D0E0C0175B
:1000B000D1073CF440E060E085E50E9426012196EE
:1000C000F6CF2FEF86EB90E2215080409040E1F791
:1000D00000C00000C0E0D0E0C017D1073CF445E507
:1000E00060E080E00E9426012196F6CF2FEF86EB9C
:1000F00090E2215080409040E1F700C00000D5CF51
:100100002F923F924F925F926F927F928F929F9227
:10011000AF92BF92CF92DF92EF92FF920F931F9315
:10012000CF93DF93CDB7DEB72A970FB6F894DEBF33
:100130000FBECDBF78876F834A01190128013701AF
:100140002DB73EB73A8729879A01220F331F220F16
:10015000331F4DB75EB7421B530B0FB6F8945EBF0B
:100160000FBE4DBF2DB73EB72F5F3F4F3A83298358
:100170005C01C12CD12C8F819885C816D90641F11C
:100180004EE164E6C2010E9432036B837C838D835F
:100190009E834EE164E6C1010E943203E980FA8049
:1001A00084012B813C814D815E810E947701A401F5
:1001B000B50189819A810E940D03260C371C4618CF
:1001C00057083FEFC31AD30A4AE5A40EB11CD3CF98
:1001D00029853A850FB6F8943EBF0FBE2DBF2A96EB
:1001E0000FB6F894DEBF0FBECDBFDF91CF911F9148
:1001F0000F91FF90EF90DF90CF90BF90AF909F90C6
:100200008F907F906F905F904F903F902F900895C8
:1002100081E088B900C000C000C018B800C000C0AC
:1002200000C000C000C000C000C00000089581E010
:1002300088B900C000C000C000C000C000C000C03D
:1002400018B800C000C000C000C00895AF92BF92AF
:10025000CF92DF92EF92FF920F931F93CF93DF9392
:10026000C82EE42EC8E0D0E000E810E0A62EB12CA5
:10027000C8018A219B21892B19F00E94170102C015
:100280000E94080115950795219791F7C8E0D0E0E5
:1002900000E810E0D12CC8018C219D21892B19F098
:1002A0000E94170102C00E94080115950795219729
:1002B00091F7C8E0D0E000E810E0F12CC8018E21F1
:1002C0009F21892B19F00E94170102C00E9408018A
:1002D00015950795219791F7DF91CF911F910F9178
:1002E000FF90EF90DF90CF90BF90AF9008952F9246
:1002F0003F924F925F926F927F928F929F92AF92B6
:10030000BF92CF92DF92EF92FF920F931F93CF9302
:10031000DF93CDB7DEB72A970FB6F894DEBF0FBED6
:10032000CDBFD82EC92EF7010130110501F13B01D7
:100330002901461A570A842F90E0BC016D197109F2
:100340007E836D83852F90E09C012C1931093887BD
:100350002F8333961A861986E12CF12C80E090E0E9
:1003600020E030E0580141E0A41AB10805C06083E4
:100370007183828393833DC01C01240C351C4D8105
:100380005E814E0D5F1D5A8349834F815885698573
:100390007A85460F571F5C834B832017310749F13D
:1003A0004F0153E0851A9108B5010E949605660D2C
:1003B000771DD4016D937C934F01B1E08B1A9108A6
:1003C000C701B5010E9496056D0DD4016C93898516
:1003D0009A85B5010E9496056C0D60832F5F3F4F93
:1003E00034964B815C815A874987E980FA80C10144
:1003F000C3CF2A960FB6F894DEBF0FBECDBFDF91F4
:10040000CF911F910F91FF90EF90DF90CF90BF9011
:10041000AF909F908F907F906F905F904F903F90A4
:100420002F9008952F923F924F925F926F927F92FA
:100430008F929F92AF92BF92CF92DF92EF92FF92F4
:100440000F931F93CF93DF9300D000D0CDB7DEB7CB
:10045000FC01B2803380B11004C0232C3B823C826B
:10046000C2C0FC0100811181B8010836F1E01F070C
:1004700010F06856714080E090E00E949B042B01D0
:100480003C01632D70E080E090E00E949B0420E03E
:1004900030E048EC52E40E94FA036B017C016B2DC2
:1004A00070E080E090E00E949B0420E030E048ECA7
:1004B00052E40E94FA034B015C0120E030E040E787
:1004C00052E4C301B2010E94FA032B013C010E94D5
:1004D0006C046A8370E080E090E00E949D049B01C0
:1004E000AC01C301B2010E948D032B013C01A501A7
:1004F000940160E070E080E89FE30E948D039B011F
:10050000AC01C701B6010E94290520E030E040E0BF
:1005100053E40E9429050E946C04262EA301920137
:10052000C501B4010E9429059B01AC0160E070E0A7
:1005300080E89FE30E948D039B01AC01C701B601D7
:100540000E94290520E030E040E053E40E942905A4
:100550000E946C046983A301920160E070E080E86E
:100560009FE30E948D039B01AC01C501B4010E9471
:1005700029059B01AC0160E070E080E89FE30E94E8
:100580008D039B01AC01C701B6010E94290520E043
:1005900030E040E053E40E9429050E946C042A8167
:1005A000822F90E087309105E8F4FC01EC5CFF4F6E
:1005B0000C94AA052B826C83232C15C02B823C82C1
:1005C000298011C06B833C820EC03B8289818C8361
:1005D0000AC03B822C82262E06C0E981EB832C8246
:1005E000202E01C0212C622D7C818B810F900F90D9
:1005F0000F900F90DF91CF911F910F91FF90EF908F
:10060000DF90CF90BF90AF909F908F907F906F9032
:100610005F904F903F902F900895CF92DF92EF928E
:10062000FF920F931F93CF93DF936A01EB017C013D
:1006300000E010E00C151D0561F0C7010E941202D8
:100640006993799389930F5F1F4F84E0E80EF11C43
:10065000F1CFDF91CF911F910F91FF90EF90DF903D
:10066000CF900895282F862F622F792F942F0895E9
:10067000CF93DF931F92CDB7DEB78DB79EB7845B64
:100680009D420FB6F8949EBF0FBE8DBFEDB7FEB76B
:1006900031966F01EE24E394F12C02E612E02EE590
:1006A00031E04EE150E062E870E0CF010E9480004E
:1006B00081E087B991E000E010E02AE5922E909E5B
:1006C0005001919EB00C1124E12CF12CF701EA0DA0
:1006D000FB1DEC0DFD1D42816181808199830E948B
:1006E0002601F3E0EF0EF11C99818AE5E816F1048A
:1006F00069F7E7E8F3E13197F1F700C00000090F6F
:10070000111D97FD1A950238110511F49FEFD7CFEF
:1007100001151105A1F691E0D2CF5058BB27AA27A9
:100720000E94A5030C94EF040E94E10438F00E949B
:10073000E80420F039F49F3F19F426F40C94DE0409
:100740000EF4E095E7FB0C94D804E92F0E94000515
:1007500058F3BA17620773078407950720F079F4F6
:10076000A6F50C9422050EF4E0950B2EBA2FA02DC1
:100770000B01B90190010C01CA01A0011124FF274E
:10078000591B99F0593F50F4503E68F11A16F04049
:10079000A22F232F342F4427585FF3CF4695379548
:1007A0002795A795F0405395C9F77EF41F16BA0B0D
:1007B000620B730B840BBAF09150A1F0FF0FBB1FBB
:1007C000661F771F881FC2F70EC0BA0F621F731F04
:1007D000841F48F4879577956795B795F7959E3F61
:1007E00008F0B0CF9395880F08F09927EE0F9795F2
:1007F000879508950E940E040C94EF040E94E8046B
:1008000058F00E94E10440F029F45F3F29F00C9475
:10081000D80451110C9423050C94DE040E940005A9
:1008200068F39923B1F3552391F3951B550BBB271F
:10083000AA2762177307840738F09F5F5F4F220F64
:10084000331F441FAA1FA9F335D00E2E3AF0E0E85B
:1008500032D091505040E695001CCAF72BD0FE2FA5
:1008600029D0660F771F881FBB1F26173707480739
:10087000AB07B0E809F0BB0B802DBF01FF279358F1
:100880005F4F3AF09E3F510578F00C94D8040C94D9
:1008900023055F3FE4F3983ED4F3869577956795FB
:1008A000B795F7959F5FC9F7880F911D9695879526
:1008B00097F90895E1E0660F771F881FBB1F621745
:1008C00073078407BA0720F0621B730B840BBA0B03
:1008D000EE1F88F7E09508950E94080588F09F575D
:1008E00098F0B92F9927B751B0F0E1F0660F771F54
:1008F000881F991F1AF0BA95C9F714C0B13091F04A
:100900000E942205B1E008950C942205672F782FEC
:100910008827B85F39F0B93FCCF38695779567950E
:10092000B395D9F73EF490958095709561957F4F7A
:100930008F4F9F4F0895E89409C097FB3EF4909520
:100940008095709561957F4F8F4F9F4F9923A9F0A8
:10095000F92F96E9BB279395F69587957795679537
:10096000B795F111F8CFFAF4BB0F11F460FF1BC07B
:100970006F5F7F4F8F4F9F4F16C0882311F096E90E
:1009800011C0772321F09EE8872F762F05C06623BC
:1009900071F096E8862F70E060E02AF09A95660F75
:1009A000771F881FDAF7880F9695879597F908952E
:1009B00097F99F6780E870E060E008959FEF80EC12
:1009C000089500240A9416161706180609060895B5
:1009D00000240A9412161306140605060895092E1B
:1009E0000394000C11F4882352F0BB0F40F4BF2B8A
:1009F00011F460FF04C06F5F7F4F8F4F9F4F0895CA
:100A000057FD9058440F551F59F05F3F71F04795BF
:100A1000880F97FB991F61F09F3F79F087950895A4
:100A2000121613061406551FF2CF4695F1DF08C0C3
:100A3000161617061806991FF1CF869571056105E0
:100A400008940895E894BB2766277727CB0197F988
:100A500008950E943C050C94EF040E94E10438F0D4
:100A60000E94E80420F0952311F00C94D8040C9413
:100A7000DE0411240C9423050E94000570F3959F59
:100A8000C1F3950F50E0551F629FF001729FBB2785
:100A9000F00DB11D639FAA27F00DB11DAA1F649F21
:100AA0006627B00DA11D661F829F2227B00DA11DD4
:100AB000621F739FB00DA11D621F839FA00D611D5A
:100AC000221F749F3327A00D611D231F849F600D7B
:100AD000211D822F762F6A2F11249F5750409AF0A4
:100AE000F1F088234AF0EE0FFF1FBB1F661F771F30
:100AF000881F91505040A9F79E3F510580F00C94FB
:100B0000D8040C9423055F3FE4F3983ED4F3869514
:100B100077956795B795F795E7959F5FC1F7FE2B9A
:100B2000880F911D9695879597F9089597FB072E45
:100B300016F4009407D077FD09D00E94B00507FC99
:100B400005D03EF4909581959F4F089570956195DD
:100B50007F4F0895EE0FFF1F0590F491E02D09944B
:100B6000AA1BBB1B51E107C0AA1FBB1FA617B707D3
:100B700010F0A61BB70B881F991F5A95A9F78095EF
:0C0B80009095BC01CD010895F894FFCFC2
:040B8C0082001E00C5
:00000001FF

View File

@ -0,0 +1,62 @@
/*
#include <stdint.h>
uint8_t dataPin = 13;
uint8_t red = 200;
uint8_t green = 200;
uint8_t blue = 200;
// f=16MHz -> T=0,0625µs
uint8_t T0H = 5; // == 0.3125µs ~ 0.4 µs (+- 150ns) == [0.25, 0.55] µs
uint8_t T1H = 11; // == 0.6875µs ~ 0.8 µs (+- 150ns) == [0.65, 0.95] µs
uint8_t T0L = 12; // == 0.7500µs ~ 0.85µs (+- 150ns) == [0.70, 1.00] µs
uint8_t T1L = 6; // == 0.3750µs ~ 0.45µs (+- 150ns) == [0.30, 0.60] µs
uint8_t RES = 51; // > 50 µs
*/
#define dataPin 13
#define red 0
#define green 0
#define blue 255
#define ONE ({digitalWrite(dataPin, HIGH); wait5; digitalWrite(dataPin, LOW); wait12;})
#define ZER ({digitalWrite(dataPin, HIGH); wait11; digitalWrite(dataPin, LOW); wait6;})
#define RESET ({digitalWrite(dataPin, LOW); delayMicroseconds(51);})
#define wait5 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
#define wait6 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
#define wait11 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
#define wait12 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
void setup()
{
pinMode(dataPin, OUTPUT);
digitalWrite(dataPin, LOW);
}
void loop()
{
(red & B1000000) ? ONE : ZER;
(red & B0100000) ? ONE : ZER;
(red & B0010000) ? ONE : ZER;
(red & B0001000) ? ONE : ZER;
(red & B0000100) ? ONE : ZER;
(red & B0000010) ? ONE : ZER;
(red & B0000001) ? ONE : ZER;
(green & B1000000) ? ONE : ZER;
(green & B0100000) ? ONE : ZER;
(green & B0010000) ? ONE : ZER;
(green & B0001000) ? ONE : ZER;
(green & B0000100) ? ONE : ZER;
(green & B0000010) ? ONE : ZER;
(green & B0000001) ? ONE : ZER;
(blue & B1000000) ? ONE : ZER;
(blue & B0100000) ? ONE : ZER;
(blue & B0010000) ? ONE : ZER;
(blue & B0001000) ? ONE : ZER;
(blue & B0000100) ? ONE : ZER;
(blue & B0000010) ? ONE : ZER;
(blue & B0000001) ? ONE : ZER;
RESET;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,203 @@
#define F_CPU 20000000UL
#include <stdint.h>
#include <avr/io.h>
#include <util/delay.h>
#define BAUD 9600
#include <util/setbaud.h>
void uart_init(void) {
#define BAUDRATE ((F_CPU)/(BAUD*8UL)-1) // set baud rate value for UBRR
UBRR0H = (BAUDRATE>>8); // shift the register right by 8 bits to get the upper 8 bits
UBRR0L = BAUDRATE; // set baud rate
// UCSR0A |= (1 << U2X0); // double transmission speed
// UCSR0B = (1 << TXEN0) | (1 << RXEN0);
// UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
// UBRR0H = UBRRH_VALUE;
// UBRR0L = UBRRL_VALUE;
UCSR0A |= _BV(U2X0);
// UCSR0A &= ~(_BV(U2X0));
// UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); /* 8-bit data */
UCSR0C = 0x06; /* 8-bit data */
UCSR0B = _BV(RXEN0) | _BV(TXEN0) | _BV(RXCIE0); /* Enable RX and TX */
}
/*
// f=20MHz -> T=0,05 µs
uint8_t T0H = 6; // == 0.3 µs ~ 0.4 µs (+- 150ns) == [0.25, 0.55] µs
uint8_t T1H = 14; // == 0.7 µs ~ 0.8 µs (+- 150ns) == [0.65, 0.95] µs
uint8_t T0L = 15; // == 0.75 µs ~ 0.85µs (+- 150ns) == [0.70, 1.00] µs
uint8_t T1L = 8; // == 0.35 µs ~ 0.45µs (+- 150ns) == [0.30, 0.60] µs
uint8_t RES = 51; // > 50 µs
*/
#define nop __asm__("nop\n\t")
#define wait6 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
#define wait8 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
#define wait14 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
#define wait15 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
uint8_t const CMAX = 32;
uint8_t const STEPWIDTH = 4;
void writeZero();
void writeOne();
void writeRGB(uint8_t red, uint8_t green, uint8_t blue);
static uint8_t dNext[] = {1,2,0};
int main() {
DDRC = 1; // PORT C0 output
// uart_init();
uint8_t d = 0;
uint8_t r = 120, g = 120, b = 0;
/*
255 0 0
255 255 0
0 0 255
*/
do{
for(uint8_t i = 120; i > 0; i -= STEPWIDTH) {
if( i >= 60 )
writeRGB( 120, (120-i)*2 , 0 );
if( i <= 60 )
writeRGB( i, (60+i)/2, 120-i);
}
_delay_ms(500);
/*if( d == 0 ) {
do{
for( uint8_t i = 0; i < 10; i++) {
writeRGB(r,g,b);
}
for( uint8_t i = 0; i < 10; i++) {
writeRGB(b,g,r);
}
for( uint8_t i = 0; i < 10; i++) {
writeRGB(g,r,b);
}
_delay_ms(1);
r -=1;
b +=1;
}while(r > 0);
}
if( d == 1 ) {
do{
for( uint8_t i = 0; i < 10; i++) {
writeRGB(r,g,b);
}
for( uint8_t i = 0; i < 10; i++) {
writeRGB(b,g,r);
}
for( uint8_t i = 0; i < 10; i++) {
writeRGB(g,r,b);
}
_delay_ms(1);
r +=1;
g -=1;
}while(g > 0);
}
if( d == 2 ) {
do{
for( uint8_t i = 0; i < 10; i++) {
writeRGB(r,g,b);
}
for( uint8_t i = 0; i < 10; i++) {
writeRGB(b,g,r);
}
for( uint8_t i = 0; i < 10; i++) {
writeRGB(g,r,b);
}
_delay_ms(1);
b -=1;
g +=1;
}while(b > 0);
}
/* for( int i = 0; i<30; i++) {
// if( d == 0 )
writeRGB(r,g,b);
if( d == 1 )
writeRGB(0,128,0);
if( d == 2 )
writeRGB(0,0,128);
d = dNext[d];
}*/
// _delay_ms(500);
d = dNext[d];
// loop_until_bit_is_set(UCSR0A, UDRE0);
// UDR0 = 'D';
}while(1);
}
int main2( void )
{
DDRC = 0xff; // (1 << PC0);
while(1) {
PORTC ^= 0xff; //(1 << PC0);
_delay_ms(1000);
}
return 0;
}
void writeZero() {
PORTC = 1;
wait6;
PORTC = 0;
wait15;
}
void writeOne() {
PORTC = 1;
wait14;
PORTC = 0;
wait8;
}
void writeRGB(uint8_t red, uint8_t green, uint8_t blue) {
int i,j;
for( i = 128; i > 0; i >>= 1 ) {
if( green & i ){
writeOne();
} else {
writeZero();
}
}
for( i = 128; i > 0; i >>= 1 ) {
if( red & i ){
writeOne();
} else {
writeZero();
}
}
for( i = 128; i > 0; i >>= 1 ) {
if( blue & i ){
writeOne();
} else {
writeZero();
}
}
}

BIN
sketches/djhgfjh/old-but-gold.o Executable file

Binary file not shown.

18
sketches/djhgfjh/party.c Normal file
View File

@ -0,0 +1,18 @@
#include "WS2812B_Atmega.h"
#include "party.h"
#define PARTY_DELAY 536
void partyHard(int LEDS){
DDRC = 0x01; // Declare PORTC0 as output
while(1){
for(int i = 0; i < LEDS; i += 1)
writeRGB(85,0,0);
_delay_ms(PARTY_DELAY);
for(int i = 0; i < LEDS; i += 1)
writeRGB(0,0,85);
_delay_ms(PARTY_DELAY);
}
}

6
sketches/djhgfjh/party.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef PARTY_H
#define PARTY_H
void partyHard(int LEDS);
#endif

287
sketches/djhgfjh/party.lst Normal file
View File

@ -0,0 +1,287 @@
1 .file "party.c"
2 __SP_H__ = 0x3e
3 __SP_L__ = 0x3d
4 __SREG__ = 0x3f
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
9 .text
10 .Ltext0:
104 .global partyHard
106 partyHard:
107 .stabd 46,0,0
1:party.c **** #include "WS2812B_Atmega.h"
2:party.c **** #include "party.h"
3:party.c ****
4:party.c **** #define PARTY_DELAY 536
5:party.c ****
6:party.c **** void partyHard(int LEDS){
109 .LM0:
110 .LFBB1:
111 /* prologue: function */
112 /* frame size = 0 */
113 /* stack size = 0 */
114 .L__stack_usage = 0
115 0000 8C01 movw r16,r24
7:party.c **** DDRC = 0x01; // Declare PORTC0 as output
117 .LM1:
118 0002 81E0 ldi r24,lo8(1)
119 0004 87B9 out 0x7,r24
120 .L6:
121 .LBB8:
8:party.c ****
9:party.c **** while(1){
10:party.c **** for(int i = 0; i < LEDS; i += 1)
123 .LM2:
124 0006 C0E0 ldi r28,0
125 0008 D0E0 ldi r29,0
126 .L2:
128 .LM3:
129 000a C017 cp r28,r16
130 000c D107 cpc r29,r17
131 000e 04F4 brge .L8
11:party.c **** writeRGB(85,0,0);
133 .LM4:
134 0010 40E0 ldi r20,0
135 0012 60E0 ldi r22,0
136 0014 85E5 ldi r24,lo8(85)
137 0016 0E94 0000 call writeRGB
10:party.c **** writeRGB(85,0,0);
139 .LM5:
140 001a 2196 adiw r28,1
141 001c 00C0 rjmp .L2
142 .L8:
143 .LBE8:
144 .LBB9:
145 .LBB10:
147 .Ltext1:
1:/usr/lib/avr/include/util/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:/usr/lib/avr/include/util/delay.h **** Copyright (c) 2004,2005,2007 Joerg Wunsch
3:/usr/lib/avr/include/util/delay.h **** Copyright (c) 2007 Florin-Viorel Petrov
4:/usr/lib/avr/include/util/delay.h **** All rights reserved.
5:/usr/lib/avr/include/util/delay.h ****
6:/usr/lib/avr/include/util/delay.h **** Redistribution and use in source and binary forms, with or without
7:/usr/lib/avr/include/util/delay.h **** modification, are permitted provided that the following conditions are met:
8:/usr/lib/avr/include/util/delay.h ****
9:/usr/lib/avr/include/util/delay.h **** * Redistributions of source code must retain the above copyright
10:/usr/lib/avr/include/util/delay.h **** notice, this list of conditions and the following disclaimer.
11:/usr/lib/avr/include/util/delay.h ****
12:/usr/lib/avr/include/util/delay.h **** * Redistributions in binary form must reproduce the above copyright
13:/usr/lib/avr/include/util/delay.h **** notice, this list of conditions and the following disclaimer in
14:/usr/lib/avr/include/util/delay.h **** the documentation and/or other materials provided with the
15:/usr/lib/avr/include/util/delay.h **** distribution.
16:/usr/lib/avr/include/util/delay.h ****
17:/usr/lib/avr/include/util/delay.h **** * Neither the name of the copyright holders nor the names of
18:/usr/lib/avr/include/util/delay.h **** contributors may be used to endorse or promote products derived
19:/usr/lib/avr/include/util/delay.h **** from this software without specific prior written permission.
20:/usr/lib/avr/include/util/delay.h ****
21:/usr/lib/avr/include/util/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22:/usr/lib/avr/include/util/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23:/usr/lib/avr/include/util/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24:/usr/lib/avr/include/util/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25:/usr/lib/avr/include/util/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26:/usr/lib/avr/include/util/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27:/usr/lib/avr/include/util/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28:/usr/lib/avr/include/util/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29:/usr/lib/avr/include/util/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30:/usr/lib/avr/include/util/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31:/usr/lib/avr/include/util/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
32:/usr/lib/avr/include/util/delay.h ****
33:/usr/lib/avr/include/util/delay.h **** /* $Id$ */
34:/usr/lib/avr/include/util/delay.h ****
35:/usr/lib/avr/include/util/delay.h **** #ifndef _UTIL_DELAY_H_
36:/usr/lib/avr/include/util/delay.h **** #define _UTIL_DELAY_H_ 1
37:/usr/lib/avr/include/util/delay.h ****
38:/usr/lib/avr/include/util/delay.h **** #ifndef __HAS_DELAY_CYCLES
39:/usr/lib/avr/include/util/delay.h **** #define __HAS_DELAY_CYCLES 1
40:/usr/lib/avr/include/util/delay.h **** #endif
41:/usr/lib/avr/include/util/delay.h ****
42:/usr/lib/avr/include/util/delay.h **** #include <inttypes.h>
43:/usr/lib/avr/include/util/delay.h **** #include <util/delay_basic.h>
44:/usr/lib/avr/include/util/delay.h **** #include <math.h>
45:/usr/lib/avr/include/util/delay.h ****
46:/usr/lib/avr/include/util/delay.h **** /** \file */
47:/usr/lib/avr/include/util/delay.h **** /** \defgroup util_delay <util/delay.h>: Convenience functions for busy-wait delay loops
48:/usr/lib/avr/include/util/delay.h **** \code
49:/usr/lib/avr/include/util/delay.h **** #define F_CPU 1000000UL // 1 MHz
50:/usr/lib/avr/include/util/delay.h **** //#define F_CPU 14.7456E6
51:/usr/lib/avr/include/util/delay.h **** #include <util/delay.h>
52:/usr/lib/avr/include/util/delay.h **** \endcode
53:/usr/lib/avr/include/util/delay.h ****
54:/usr/lib/avr/include/util/delay.h **** \note As an alternative method, it is possible to pass the
55:/usr/lib/avr/include/util/delay.h **** F_CPU macro down to the compiler from the Makefile.
56:/usr/lib/avr/include/util/delay.h **** Obviously, in that case, no \c \#define statement should be
57:/usr/lib/avr/include/util/delay.h **** used.
58:/usr/lib/avr/include/util/delay.h ****
59:/usr/lib/avr/include/util/delay.h **** The functions in this header file are wrappers around the basic
60:/usr/lib/avr/include/util/delay.h **** busy-wait functions from <util/delay_basic.h>. They are meant as
61:/usr/lib/avr/include/util/delay.h **** convenience functions where actual time values can be specified
62:/usr/lib/avr/include/util/delay.h **** rather than a number of cycles to wait for. The idea behind is
63:/usr/lib/avr/include/util/delay.h **** that compile-time constant expressions will be eliminated by
64:/usr/lib/avr/include/util/delay.h **** compiler optimization so floating-point expressions can be used
65:/usr/lib/avr/include/util/delay.h **** to calculate the number of delay cycles needed based on the CPU
66:/usr/lib/avr/include/util/delay.h **** frequency passed by the macro F_CPU.
67:/usr/lib/avr/include/util/delay.h ****
68:/usr/lib/avr/include/util/delay.h **** \note In order for these functions to work as intended, compiler
69:/usr/lib/avr/include/util/delay.h **** optimizations <em>must</em> be enabled, and the delay time
70:/usr/lib/avr/include/util/delay.h **** <em>must</em> be an expression that is a known constant at
71:/usr/lib/avr/include/util/delay.h **** compile-time. If these requirements are not met, the resulting
72:/usr/lib/avr/include/util/delay.h **** delay will be much longer (and basically unpredictable), and
73:/usr/lib/avr/include/util/delay.h **** applications that otherwise do not use floating-point calculations
74:/usr/lib/avr/include/util/delay.h **** will experience severe code bloat by the floating-point library
75:/usr/lib/avr/include/util/delay.h **** routines linked into the application.
76:/usr/lib/avr/include/util/delay.h ****
77:/usr/lib/avr/include/util/delay.h **** The functions available allow the specification of microsecond, and
78:/usr/lib/avr/include/util/delay.h **** millisecond delays directly, using the application-supplied macro
79:/usr/lib/avr/include/util/delay.h **** F_CPU as the CPU clock frequency (in Hertz).
80:/usr/lib/avr/include/util/delay.h ****
81:/usr/lib/avr/include/util/delay.h **** */
82:/usr/lib/avr/include/util/delay.h ****
83:/usr/lib/avr/include/util/delay.h **** #if !defined(__DOXYGEN__)
84:/usr/lib/avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline));
85:/usr/lib/avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline));
86:/usr/lib/avr/include/util/delay.h **** #endif
87:/usr/lib/avr/include/util/delay.h ****
88:/usr/lib/avr/include/util/delay.h **** #ifndef F_CPU
89:/usr/lib/avr/include/util/delay.h **** /* prevent compiler error by supplying a default */
90:/usr/lib/avr/include/util/delay.h **** # warning "F_CPU not defined for <util/delay.h>"
91:/usr/lib/avr/include/util/delay.h **** # define F_CPU 1000000UL
92:/usr/lib/avr/include/util/delay.h **** #endif
93:/usr/lib/avr/include/util/delay.h ****
94:/usr/lib/avr/include/util/delay.h **** #ifndef __OPTIMIZE__
95:/usr/lib/avr/include/util/delay.h **** # warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
96:/usr/lib/avr/include/util/delay.h **** #endif
97:/usr/lib/avr/include/util/delay.h ****
98:/usr/lib/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \
99:/usr/lib/avr/include/util/delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \
100:/usr/lib/avr/include/util/delay.h **** __STDC_HOSTED__
101:/usr/lib/avr/include/util/delay.h **** # include <math.h>
102:/usr/lib/avr/include/util/delay.h **** #endif
103:/usr/lib/avr/include/util/delay.h ****
104:/usr/lib/avr/include/util/delay.h **** /**
105:/usr/lib/avr/include/util/delay.h **** \ingroup util_delay
106:/usr/lib/avr/include/util/delay.h ****
107:/usr/lib/avr/include/util/delay.h **** Perform a delay of \c __ms milliseconds, using _delay_loop_2().
108:/usr/lib/avr/include/util/delay.h ****
109:/usr/lib/avr/include/util/delay.h **** The macro F_CPU is supposed to be defined to a
110:/usr/lib/avr/include/util/delay.h **** constant defining the CPU clock frequency (in Hertz).
111:/usr/lib/avr/include/util/delay.h ****
112:/usr/lib/avr/include/util/delay.h **** The maximal possible delay is 262.14 ms / F_CPU in MHz.
113:/usr/lib/avr/include/util/delay.h ****
114:/usr/lib/avr/include/util/delay.h **** When the user request delay which exceed the maximum possible one,
115:/usr/lib/avr/include/util/delay.h **** _delay_ms() provides a decreased resolution functionality. In this
116:/usr/lib/avr/include/util/delay.h **** mode _delay_ms() will work with a resolution of 1/10 ms, providing
117:/usr/lib/avr/include/util/delay.h **** delays up to 6.5535 seconds (independent from CPU frequency). The
118:/usr/lib/avr/include/util/delay.h **** user will not be informed about decreased resolution.
119:/usr/lib/avr/include/util/delay.h ****
120:/usr/lib/avr/include/util/delay.h **** If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long)
121:/usr/lib/avr/include/util/delay.h **** support, maximal possible delay is 4294967.295 ms/ F_CPU in MHz. For
122:/usr/lib/avr/include/util/delay.h **** values greater than the maximal possible delay, overflows results in
123:/usr/lib/avr/include/util/delay.h **** no delay i.e., 0ms.
124:/usr/lib/avr/include/util/delay.h ****
125:/usr/lib/avr/include/util/delay.h **** Conversion of __us into clock cycles may not always result in integer.
126:/usr/lib/avr/include/util/delay.h **** By default, the clock cycles rounded up to next integer. This ensures that
127:/usr/lib/avr/include/util/delay.h **** the user gets atleast __us microseconds of delay.
128:/usr/lib/avr/include/util/delay.h ****
129:/usr/lib/avr/include/util/delay.h **** Alternatively, user can define __DELAY_ROUND_DOWN__ and __DELAY_ROUND_CLOSEST__
130:/usr/lib/avr/include/util/delay.h **** to round down and round to closest integer.
131:/usr/lib/avr/include/util/delay.h ****
132:/usr/lib/avr/include/util/delay.h **** Note: The new implementation of _delay_ms(double __ms) with
133:/usr/lib/avr/include/util/delay.h **** __builtin_avr_delay_cycles(unsigned long) support is not backward compatible.
134:/usr/lib/avr/include/util/delay.h **** User can define __DELAY_BACKWARD_COMPATIBLE__ to get a backward compatible delay.
135:/usr/lib/avr/include/util/delay.h **** Also, the backward compatible
136:/usr/lib/avr/include/util/delay.h **** algorithm will be chosen if the code is compiled in a <em>freestanding
137:/usr/lib/avr/include/util/delay.h **** environment</em> (GCC option \c -ffreestanding), as the math functions
138:/usr/lib/avr/include/util/delay.h **** required for rounding are not available to the compiler then.
139:/usr/lib/avr/include/util/delay.h ****
140:/usr/lib/avr/include/util/delay.h **** */
141:/usr/lib/avr/include/util/delay.h **** void
142:/usr/lib/avr/include/util/delay.h **** _delay_ms(double __ms)
143:/usr/lib/avr/include/util/delay.h **** {
144:/usr/lib/avr/include/util/delay.h **** double __tmp ;
145:/usr/lib/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \
146:/usr/lib/avr/include/util/delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \
147:/usr/lib/avr/include/util/delay.h **** __STDC_HOSTED__
148:/usr/lib/avr/include/util/delay.h **** uint32_t __ticks_dc;
149:/usr/lib/avr/include/util/delay.h **** extern void __builtin_avr_delay_cycles(unsigned long);
150:/usr/lib/avr/include/util/delay.h **** __tmp = ((F_CPU) / 1e3) * __ms;
151:/usr/lib/avr/include/util/delay.h ****
152:/usr/lib/avr/include/util/delay.h **** #if defined(__DELAY_ROUND_DOWN__)
153:/usr/lib/avr/include/util/delay.h **** __ticks_dc = (uint32_t)fabs(__tmp);
154:/usr/lib/avr/include/util/delay.h ****
155:/usr/lib/avr/include/util/delay.h **** #elif defined(__DELAY_ROUND_CLOSEST__)
156:/usr/lib/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(fabs(__tmp)+0.5);
157:/usr/lib/avr/include/util/delay.h ****
158:/usr/lib/avr/include/util/delay.h **** #else
159:/usr/lib/avr/include/util/delay.h **** //round up by default
160:/usr/lib/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
161:/usr/lib/avr/include/util/delay.h **** #endif
162:/usr/lib/avr/include/util/delay.h ****
163:/usr/lib/avr/include/util/delay.h **** __builtin_avr_delay_cycles(__ticks_dc);
149 .LM6:
150 001e 2FEF ldi r18,lo8(2143999)
151 0020 86EB ldi r24,hi8(2143999)
152 0022 90E2 ldi r25,hlo8(2143999)
153 0024 2150 1: subi r18,1
154 0026 8040 sbci r24,0
155 0028 9040 sbci r25,0
156 002a 01F4 brne 1b
157 002c 00C0 rjmp .
158 002e 0000 nop
159 .LBE10:
160 .LBE9:
161 .LBB11:
163 .Ltext2:
12:party.c **** _delay_ms(PARTY_DELAY);
13:party.c ****
14:party.c **** for(int i = 0; i < LEDS; i += 1)
165 .LM7:
166 0030 C0E0 ldi r28,0
167 0032 D0E0 ldi r29,0
168 .L4:
170 .LM8:
171 0034 C017 cp r28,r16
172 0036 D107 cpc r29,r17
173 0038 04F4 brge .L9
15:party.c **** writeRGB(0,0,85);
175 .LM9:
176 003a 45E5 ldi r20,lo8(85)
177 003c 60E0 ldi r22,0
178 003e 80E0 ldi r24,0
179 0040 0E94 0000 call writeRGB
14:party.c **** writeRGB(0,0,85);
181 .LM10:
182 0044 2196 adiw r28,1
183 0046 00C0 rjmp .L4
184 .L9:
185 .LBE11:
186 .LBB12:
187 .LBB13:
189 .Ltext3:
191 .LM11:
192 0048 2FEF ldi r18,lo8(2143999)
193 004a 86EB ldi r24,hi8(2143999)
194 004c 90E2 ldi r25,hlo8(2143999)
195 004e 2150 1: subi r18,1
196 0050 8040 sbci r24,0
197 0052 9040 sbci r25,0
198 0054 01F4 brne 1b
199 0056 00C0 rjmp .
200 0058 0000 nop
201 005a 00C0 rjmp .L6
202 .LBE13:
203 .LBE12:
211 .Lscope1:
213 .stabd 78,0,0
215 .Letext0:
216 .ident "GCC: (GNU) 4.9.2"
DEFINED SYMBOLS
*ABS*:0000000000000000 party.c
/tmp/ccQ6h11V.s:2 *ABS*:000000000000003e __SP_H__
/tmp/ccQ6h11V.s:3 *ABS*:000000000000003d __SP_L__
/tmp/ccQ6h11V.s:4 *ABS*:000000000000003f __SREG__
/tmp/ccQ6h11V.s:5 *ABS*:0000000000000000 __tmp_reg__
/tmp/ccQ6h11V.s:6 *ABS*:0000000000000001 __zero_reg__
/tmp/ccQ6h11V.s:106 .text:0000000000000000 partyHard
UNDEFINED SYMBOLS
writeRGB

BIN
sketches/djhgfjh/party.o Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
:00000001FF

BIN
sketches/djhgfjh/virtualglove.elf Executable file

Binary file not shown.

View File

@ -0,0 +1,901 @@
:100000000C9415170C941F170C941F170C941F17A2
:100010000C941F170C941F170C941F170C941F1788
:100020000C941F170C941F170C941F170C941F1778
:100030000C941F170C941F170C941F170C941F1768
:100040000C941F170C941F170C941F170C941F1758
:100050000C941F170C941F170C941F170C941F1748
:100060000C941F170C941F172119251929192C19E5
:100070003019341921195E00066600011E04001EA5
:100080000A001E0F001E15001E1B001E2100251E4B
:1000900000201E001A1E00141E000E1E00081E0066
:1000A000031E00001E02001E08001E0E001E13008C
:1000B0001E19001E1F001E2500211E001C1E0016FA
:1000C0001E00101E000A1E00051E00001E06001E57
:1000D0005F00056700001E05001E0A001E10001EBE
:1000E00016001E1C001E2100251E001F1E001A1EC9
:1000F00000141E000E1E00081E00031E00001E023B
:10010000001E08001E0E001E13001E19001E1E00F9
:100110001E2400221E001C1E00171E00111E000BB4
:100120001E00051E00001E05001E6000051E0000CA
:100130001E05001E0B001E11001E17001E1C001EB7
:100140002100251E001F1E00191E00131E000E1E7A
:1001500000081E00031E00001E02001E08001E0EE6
:10016000001E13001E18001E1E001E2400221E006A
:100170001C1E00171E00111E000C1E00061E000093
:100180001E05001E6100041E00001E06001E0C005D
:100190001E11001E17001E1C001E2200241E001F20
:1001A0001E00191E00131E000E1E00081E00031E56
:1001B00000001E02001E08001E0D001E13001E1867
:1001C000001E1E001E2300231E001D1E00171E0001
:1001D000121E000C1E00071E00011E04001E6200FD
:1001E000031E01001E07001E0C001E11001E17003A
:1001F0001E1D001E2200241E001E1E00191E0013BC
:100200001E000E1E00081E00031E00001E02001E1F
:1002100008001E0D001E13001E18001E1E001E23C7
:1002200000231E001E1E00181E00121E000D1E00C0
:10023000071E00011E03001E6300031E01001E07AF
:10024000001E0C001E12001E18001E1D001E2300A2
:10025000241E001E1E00181E00131E000E1E000885
:100260001E00031E00001E02001E07001E0D001EC1
:1002700013001E18001E1E001E2300231E001E1E3B
:1002800000181E00131E000D1E00081E00021E0393
:10029000001E6400021E02001E08001E0D001E1338
:1002A000001E18001E1E001E2300231E001E1E001E
:1002B000181E00131E000E1E00081E00031E000064
:1002C0001E02001E07001E0D001E12001E18001E3A
:1002D0001E001E2300231E001E1E00181E00131EDB
:1002E000000E1E00081E00031E02001E6500011EF7
:1002F00003001E08001E0E001E13001E18001E1E06
:10030000001E2300231E001E1E00181E00131E00C8
:100310000E1E00081E00031E00001E02001E070025
:100320001E0D001E12001E18001E1D001E2300249C
:100330001E001E1E00191E00131E000E1E00081EA9
:1003400000031E01001E6600011E03001E08001EA1
:100350000E001E13001E19001E1E001E2300231E69
:10036000001E1E00181E00131E000E1E00081E0098
:10037000031E00001E02001E07001E0D001E1200BC
:100380001E17001E1D001E2200241E001F1E001A24
:100390001E00141E000F1E00091E00041E01001E78
:1003A0006700001E04001E09001E0F001E14001E20
:1003B00019001E1F001E2400231E001D1E00181EF3
:1003C00000131E000D1E00081E00031E00001E026A
:1003D000001E07001E0C001E12001E17001E1C002F
:1003E0001E2200251E001F1E001A1E00151E0010D2
:1003F0001E000A1E00051E00001E1E00001E050035
:100400001E0A001E0F001E15001E1A001E1F001ED1
:100410002400221E001D1E00181E00121E000D1EAC
:1004200000081E00031E00001E02001E07001E0C16
:10043000001E11001E17001E1C001E2100251E009C
:100440001F1E001A1E00151E00101E000A1E0005A9
:100450001E00001E1E00001E05001E0A001E0F00CA
:100460001E15001E1A001E20001E2500221E001D43
:100470001E00171E00121E000D1E00081E00031E87
:1004800000001E02001E07001E0C001E11001E1799
:10049000001E1C001E2100251E00201E001B1E0029
:1004A000151E00101E000B1E00061E00001E1E0161
:1004B000001E06001E0B001E10001E15001E1A0056
:1004C0001E20001E2500211E001C1E00171E0012EB
:1004D0001E000D1E00081E00031E00001E02001E4E
:1004E00007001E0C001E11001E17001E1C001E21FE
:1004F00000251E00201E001B1E00161E00111E00DF
:100500000C1E00071E00011E1E01001E07001E0C0F
:10051000001E11001E16001E1B001E20001E2500BE
:10052000211E001C1E00171E00121E000D1E0008BA
:100530001E00031E00001E02001E07001E0C001EEF
:1005400011001E17001E1C001E2100261E00211E69
:10055000001C1E00171E00111E000C1E00071E00AE
:10056000011E1E02001E07001E0C001E11001E1799
:10057000001E1C001E2100261E00211E001C1E0045
:10058000171E00111E000C1E00071E00021E000098
:100590001E02001E07001E0C001E11001E17001E6A
:1005A0001C001E2100261E00211E001C1E00171EFE
:1005B00000111E000C1E00071E00021E1E03001E5E
:1005C00007001E0C001E11001E17001E1C001E211D
:1005D00000261E00211E001C1E00171E00111E00FA
:1005E0000C1E00071E00021E00001E01001E070058
:1005F0001E0C001E11001E16001E1B001E20001ED9
:100600002500211E001C1E00171E00121E000D1EBC
:1006100000081E00031E1E03001E08001E0D001E03
:1006200012001E17001E1C001E2100251E00211E88
:10063000001C1E00171E00111E000C1E00071E00CD
:10064000021E00001E01001E07001E0C001E1100ED
:100650001E16001E1B001E20001E2500221E001D4F
:100660001E00181E00131E000E1E00081E00031E92
:100670001E04001E08001E0E001E13001E18001E81
:100680001C001E2100251E00201E001B1E00171E20
:1006900000111E000C1E00071E00021E00001E019D
:1006A000001E07001E0C001E11001E16001E1A0060
:1006B0001E1F001E2500221E001D1E00181E0013F6
:1006C0001E000E1E00091E00041E1E05001E09004D
:1006D0001E0E001E13001E18001E1D001E220025E7
:1006E0001E00201E001B1E00161E00111E000C1EE8
:1006F00000071E00021E00001E01001E07001E0C47
:10070000001E11001E15001E1A001E1F001E2400D0
:10071000231E001E1E00181E00141E000F1E000ABD
:100720001E00051E1E05001E0A001E0F001E1300DF
:100730001E18001E1E001E2200251E00201E001B6B
:100740001E00161E00111E000C1E00071E00021EB9
:1007500000001E01001E07001E0C001E10001E15CA
:10076000001E1A001E1F001E2400231E001E1E0055
:10077000191E00141E00101E000A1E00051E1E0673
:10078000001E0A001E0F001E14001E19001E1E006F
:100790001E2300241E00201E001A1E00161E00111B
:1007A0001E000C1E00071E00021E00001E01001E7F
:1007B00007001E0B001E10001E15001E1A001E1F33
:1007C000001E2300231E001E1E001A1E00151E0000
:1007D000101E000B1E00061E1E07001E0B001E1022
:1007E000001E15001E1A001E1E001E2300241E00DF
:1007F0001F1E001A1E00151E00111E000C1E0007F1
:100800001E00021E00001E01001E07001E0B001E1F
:1008100010001E15001E1A001E1E001E2300241E9E
:10082000001F1E001A1E00151E00111E000C1E00C7
:10083000071E1E07001E0C001E10001E15001E1AAB
:10084000001E1F001E2300231E001F1E001A1E0074
:10085000151E00111E000C1E00071E00021E0000C7
:100860001E01001E07001E0B001E10001E15001E9C
:1008700019001E1E001E2300241E001F1E001A1E2B
:1008800000161E00111E000C1E00071E1E08001E72
:100890000C001E11001E16001E1A001E1F001E2432
:1008A00000231E001E1E001A1E00151E00101E0032
:1008B0000C1E00071E00021E00001E01001E070085
:1008C0001E0B001E10001E15001E19001E1E001E0D
:1008D0002300251E001F1E001B1E00171E00111ED8
:1008E000000D1E00081E1E08001E0D001E11001E19
:1008F00016001E1B001E20001E2400231E001E1EAC
:10090000001A1E00151E00101E000C1E00071E00FF
:10091000021E00001E01001E06001E0B001E10001D
:100920001E14001E19001E1E001E2200251E00207F
:100930001E001C1E00171E00121E000E1E00081EA8
:100940001E09001E0E001E12001E17001E1B001E98
:1009500020001E2500231E001E1E00191E00151E4D
:1009600000101E000C1E00071E00021E00001E01CB
:10097000001E06001E0B001E10001E14001E180094
:100980001E1E001E2200251E00211E001C1E001718
:100990001E00131E000E1E00091E1E0A001E0E0061
:1009A0001E13001E17001E1C001E20001E25002204
:1009B0001E001E1E00191E00151E00101E000B1E1C
:1009C00000071E00021E00001E01001E06001E0A77
:1009D000001E10001E14001E18001E1D001E210007
:1009E000261E00211E001C1E00181E00131E000FD4
:1009F0001E000A1E1E0A001E0F001E13001E1800F5
:100A00001E1C001E21001E2500221E001E1E001995
:100A10001E00141E000F1E000B1E00071E00021EEB
:100A200000001E01001E06001E0A001E0F001E13FD
:100A3000001E18001E1D001E2100261E00211E0083
:100A40001D1E00181E00141E00101E000A1E1E0B84
:100A5000001E0F001E14001E18001E1D001E210087
:100A6000261E00211E001D1E00181E00141E000F51
:100A70001E000B1E00071E00021E00001E01001EAD
:100A800006001E0A001E0F001E13001E18001E1C6A
:100A9000001E21001E2500221E001E1E00191E0021
:100AA000151E00101E000B1E1E0C001E0F001E1433
:100AB000001E18001E1D001E2100261E00211E0003
:100AC0001D1E00181E00141E000F1E000B1E000726
:100AD0001E00021E00001E01001E06001E0A001E4F
:100AE0000F001E13001E18001E1C001E21001E25D4
:100AF00000221E001E1E00191E00151E00101E00E2
:100B00000C1E1E0C001E10001E15001E19001E1EBD
:100B1000001E2200251E00211E001C1E00181E00A3
:100B2000141E000F1E000B1E00071E00021E0000F8
:100B30001E01001E06001E0A001E0F001E13001ECE
:100B400017001E1C001E20001E2500231E001E1E56
:100B5000001A1E00151E00111E000C1E1E0D001E88
:100B600011001E15001E1A001E1E001E2300251E49
:100B700000211E001C1E00181E00131E000F1E0068
:100B80000B1E00071E00021E00001E01001E0600B4
:100B90001E0A001E0E001E13001E17001E1C001E43
:100BA00020001E2500231E001F1E001A1E00161EF8
:100BB00000111E000D1E1E0E001E11001E16001E2E
:100BC0001A001E1F001E2300251E00201E001C1ED2
:100BD00000181E00131E000F1E000A1E00071E0034
:100BE000021E00001E01001E06001E0A001E0E004E
:100BF0001E13001E17001E1B001E1F001E240023B4
:100C00001E001F1E001B1E00171E00121E000E1EBF
:100C10001E0E001E12001E17001E1B001E1F001EAF
:100C20002300241E00201E001C1E00171E00131E81
:100C3000000F1E000A1E00071E00021E00001E01FB
:100C4000001E06001E0A001E0E001E13001E1700C6
:100C50001E1B001E1F001E2300241E001F1E001C42
:100C60001E00171E00131E000E1E1E0F001E130076
:100C70001E17001E1B001E20001E2400241E002024
:100C80001E001C1E00171E00131E000F1E000A1E51
:100C900000061E00021E00001E01001E05001E0AA6
:100CA000001E0E001E12001E17001E1B001E1F003D
:100CB0001E2300251E00201E001C1E00181E0013EF
:100CC0001E000F1E1E0F001E13001E18001E1C000B
:100CD0001E20001E2400231E00201E001B1E0017C5
:100CE0001E00131E000E1E000A1E00061E00021E1D
:100CF00000001E01001E05001E0A001E0E001E122E
:100D0000001E17001E1A001E1F001E2300251E00B5
:100D1000211E001C1E00181E00141E00101E1E1096
:100D2000001E14001E18001E1C001E20001E2500A0
:100D3000231E001F1E001B1E00171E00131E000E88
:100D40001E000A1E00061E00021E00001E01001EDC
:100D500005001E0A001E0E001E12001E16001E1A9E
:100D6000001E1E001E2300251E00211E001D1E0049
:100D7000181E00151E00101E1E11001E15001E1844
:100D8000001E1D001E21001E2500231E001F1E0028
:100D90001A1E00171E00121E000E1E000A1E00065C
:100DA0001E00021E00001E01001E05001E0A001E7D
:100DB0000E001E11001E16001E1A001E1E001E220E
:100DC00000261E00211E001E1E00191E00151E00FA
:100DD000111E1E11001E15001E19001E1E001E21D0
:100DE000001E2500221E001E1E001A1E00161E00D8
:100DF000121E000E1E000A1E00061E00021E00002B
:100E00001E01001E05001E09001E0E001E11001E00
:100E100015001E1A001E1E001E2100261E00221E86
:100E2000001E1E001A1E00161E00111E1E12001E9D
:100E300016001E1A001E1E001E2200261E00221E64
:100E4000001E1E001A1E00161E00121E000E1E009E
:100E50000A1E00061E00021E00001E01001E0500E4
:100E60001E09001E0D001E11001E15001E19001E79
:100E70001E001E21001E2500231E001E1E001A1E1D
:100E800000171E00121E1E13001E17001E1A001E41
:100E90001E001E2200251E00211E001E1E001A1EFE
:100EA00000161E00111E000E1E000A1E00061E0067
:100EB000021E00001E01001E05001E09001E0D007E
:100EC0001E11001E15001E19001E1D001E21001EF1
:100ED0002500231E001F1E001B1E00171E00131ED0
:100EE0001E13001E17001E1B001E1F001E230025C0
:100EF0001E00211E001E1E00191E00151E00111EC0
:100F0000000E1E000A1E00061E00021E00001E012A
:100F1000001E05001E09001E0D001E11001E1500FA
:100F20001E18001E1D001E21001E2500231E001F6E
:100F30001E001C1E00181E00131E1E14001E18008A
:100F40001E1C001E20001E2300251E00211E001D49
:100F50001E00191E00151E00111E000E1E000A1E86
:100F600000061E00021E00001E01001E05001E09D4
:100F7000001E0D001E11001E15001E18001E1C0074
:100F80001E20001E2400241E00201E001C1E00180F
:100F90001E00141E1E15001E18001E1C001E200020
:100FA0001E2400241E00201E001C1E00181E0015FA
:100FB0001E00111E000D1E00091E00051E00011E50
:100FC00000001E01001E05001E09001E0D001E115E
:100FD000001E15001E18001E1C001E20001E2400EE
:100FE000241E00201E001C1E00181E00151E1E15AB
:100FF000001E18001E1C001E20001E2400241E00BF
:10100000201E001C1E00181E00151E00111E000DC3
:101010001E00091E00051E00011E00001E01001E0C
:1010200005001E08001E0C001E10001E14001E18D5
:10103000001E1C001E1F001E2300251E00211E0076
:101040001D1E00191E00151E1E16001E19001E1D55
:10105000001E21001E2500231E00201E001C1E0055
:10106000181E00151E00111E000D1E00091E000591
:101070001E00011E00001E01001E05001E08001EAD
:101080000C001E10001E14001E18001E1B001E1F48
:10109000001E2300251E00211E001E1E001A1E0019
:1010A000161E1E17001E1A001E1E001E21001E25E1
:1010B00000231E00201E001C1E00181E00141E000F
:1010C000111E000D1E00091E00051E00011E00005D
:1010D0001E01001E05001E08001E0C001E10001E32
:1010E00013001E17001E1B001E1F001E2300261EBD
:1010F00000221E001E1E001A1E00171E1E17001EB4
:101100001A001E1E001E22001E2500231E001F1E88
:10111000001B1E00181E00141E00101E000D1E00D5
:10112000091E00051E00011E00001E01001E050014
:101130001E08001E0C001E10001E13001E17001EAD
:101140001A001E1E001E2200261E00231E001F1E47
:10115000001B1E00171E1E18001E1B001E1F001E57
:101160002200261E00221E001F1E001B1E00171E2E
:1011700000141E00101E000C1E00091E00051E009B
:10118000011E00001E01001E05001E08001E0C00AE
:101190001E10001E13001E17001E1A001E1E001E29
:1011A00021001E2500231E001F1E001C1E00181EED
:1011B0001E18001E1C001E20001E2300251E0022DB
:1011C0001E001E1E001A1E00171E00131E00101EF9
:1011D000000C1E00081E00051E00011E00001E015E
:1011E000001E05001E08001E0C001E10001E13002D
:1011F0001E17001E1A001E1E001E21001E250023A1
:101200001E00201E001C1E00181E1E19001E1C00A1
:101210001E20001E2300251E00211E001E1E001A77
:101220001E00171E00131E000F1E000C1E00081EBD
:1012300000051E00011E00001E01001E05001E0804
:10124000001E0C001E0F001E13001E16001E1A00AA
:101250001E1D001E21001E2400241E00211E001D34
:101260001E00191E1E1A001E1D001E20001E240036
:10127000251E00211E001E1E001A1E00171E001330
:101280001E000F1E000C1E00081E00051E00011E81
:1012900000001E01001E05001E08001E0C001E0F8F
:1012A000001E12001E16001E19001E1D001E20002A
:1012B0001E2400251E00211E001E1E001A1E1E1ABE
:1012C000001E1E001E21001E2500241E00211E00DF
:1012D0001D1E001A1E00161E00131E000F1E000CFD
:1012E0001E00081E00051E00011E00001E01001E3B
:1012F00005001E08001E0B001E0F001E12001E150A
:10130000001E19001E1C001E20001E2300251E00AA
:10131000211E001E1E001A1E1E1B001E1E001E2166
:10132000001E2500231E00201E001D1E00191E0089
:10133000161E00131E000F1E000C1E00081E0005C6
:101340001E00011E00001E01001E04001E08001EDB
:101350000B001E0E001E12001E15001E18001E1C83
:10136000001E1F001E2300251E00221E001F1E003F
:101370001B1E1E1C001E1F001E22001E2500231EF9
:1013800000201E001C1E00191E00161E00121E004A
:101390000F1E000C1E00081E00051E00011E00008E
:1013A0001E01001E04001E08001E0B001E0E001E63
:1013B00011001E15001E18001E1C001E1F001E23FB
:1013C00000261E00231E001F1E001C1E1E1C001EC9
:1013D00020001E2300261E00231E00201E001C1EAF
:1013E00000181E00151E00121E000F1E000C1E000D
:1013F000081E00051E00011E00001E01001E040044
:101400001E07001E0B001E0E001E11001E15001EE2
:1014100018001E1B001E1F001E22001E2500231E7A
:1014200000201E001C1E1E1D001E20001E23002565
:101430001E00221E001F1E001C1E00181E00151E6E
:1014400000121E000E1E000B1E00081E00051E00CE
:10145000011E00001E01001E04001E07001E0A00DF
:101460001E0E001E11001E15001E18001E1B001E61
:101470001E001E21001E2500241E00211E001D1E10
:101480001E1E001E21001E2400251E00211E001EFF
:101490001E001B1E00181E00151E00111E000E1E31
:1014A000000B1E00081E00051E00011E00001E018C
:1014B000001E04001E07001E0A001E0E001E110062
:1014C0001E14001E17001E1A001E1E001E21001EE4
:1014D0002400251E00211E001E1E1E1E001E2100AF
:1014E0001E2400251E00211E001E1E001B1E0018AB
:1014F0001E00151E00111E000E1E000B1E00081EF1
:1015000000051E00011E00001E01001E04001E0733
:10151000001E0A001E0E001E11001E14001E1700E1
:101520001E1A001E1E001E21001E2400251E002162
:101530001E001E1E1E1F001E21001E2500241E0050
:10154000211E001E1E001A1E00171E00141E001170
:101550001E000E1E000B1E00081E00051E00011EB0
:1015600000001E01001E04001E07001E0A001E0EC1
:10157000001E10001E13001E17001E1A001E1D0064
:101580001E20001E2300251E00221E001F1E1E20DE
:10159000001E22001E2500231E00201E001D1E000E
:1015A0001A1E00171E00141E00111E000E1E000A37
:1015B0001E00081E00051E00011E00001E01001E68
:1015C00004001E07001E0A001E0D001E10001E1340
:1015D000001E17001E1A001E1C001E1F001E2300E6
:1015E000261E00231E001F1E1E20001E2300261E76
:1015F00000231E00201E001D1E001A1E00171E00C4
:10160000131E00111E000E1E000A1E00071E0005FC
:101610001E00011E00001E01001E04001E07001E09
:101620000A001E0D001E10001E13001E16001E19BB
:10163000001E1C001E1F001E22001E2500231E006F
:10164000201E1E21001E2300251E00221E00201E1B
:10165000001C1E00191E00171E00131E00101E0085
:101660000E1E000A1E00071E00051E00011E0000BF
:101670001E01001E04001E07001E0A001E0D001E93
:1016800010001E13001E16001E18001E1C001E1F38
:10169000001E21001E2500241E00211E1E21001EEA
:1016A0002400251E00221E001F1E001C1E00191EE5
:1016B00000161E00131E00101E000D1E000A1E0044
:1016C000071E00041E00011E00001E01001E030074
:1016D0001E07001E0A001E0C001E10001E13001E16
:1016E00015001E18001E1B001E1E001E21001E24B9
:1016F00000251E00211E1E22001E2500241E002182
:101700001E001E1E001C1E00181E00161E00131EAA
:1017100000101E000D1E000A1E00071E00041E0001
:10172000011E00001E01001E03001E07001E09000E
:101730001E0C001E10001E12001E15001E18001E9A
:101740001B001E1E001E21001E2300251E00221E3F
:101750001E23001E2500241E00211E001E1E001B2D
:101760001E00181E00151E00131E000F1E000D1E69
:10177000000A1E00071E00041E00011E00001E01BC
:10178000001E03001E07001E09001E0C001E0F0095
:101790001E12001E15001E18001E1A001E1E001E1E
:1017A00020001E2300261E00231E1E2300261E00CE
:1017B000231E00201E001E1E001A1E00181E0015EB
:1017C0001E00121E000F1E000C1E000A1E00071E27
:1017D00000041E00011E00001E01001E03001E0763
:1017E000001E09001E0C001E0F001E11001E150019
:1017F0001E17001E1A001E1D001E1F001E23001EA5
:101800002500231E1E2400251E00231E00201E006E
:101810001D1E001A1E00171E00151E00121E000FAE
:101820001E000C1E000A1E00071E00041E00011EE2
:1018300000001E01001E03001E06001E09001E0CF3
:10184000001E0E001E11001E14001E17001E1A009E
:101850001E1C001E1F001E22001E2500241E1E2509
:1018600000251E00221E00201E001C1E001A1E0045
:10187000171E00151E00111E000F1E000C1E000971
:101880001E00071E00041E00011E00001E01001E97
:1018900003001E06001E08001E0C001E0E001E1176
:1018A000001E14001E17001E19001E1C001E1F0023
:1018B0001E21001E2400251E1E2500241E00211EA0
:1018C000001F1E001C1E00191E00171E00141E0003
:1018D000111E000F1E000C1E00091E00071E000432
:1018E0001E00011E00001E01001E03001E06001E39
:1018F00008001E0B001E0E001E11001E13001E16F7
:10190000001E18001E1C001E1E001E21001E2300AB
:10191000251E261E00231E00211E001E1E001C1E4A
:1019200000191E00171E00141E00111E000E1E00BE
:101930000C1E00091E00071E00041E00011E0000F0
:101940001E01001E03001E06001E08001E0B001EC6
:101950000E001E10001E13001E16001E18001E1B77
:10196000001E1E001E20001E2300261E251E002312
:101970001E00201E001E1E001B1E00181E00161E2C
:1019800000131E00111E000E1E000C1E00091E007A
:10199000071E00041E00011E00001E01001E0300A1
:1019A0001E06001E08001E0B001E0E001E10001E4C
:1019B00013001E15001E18001E1A001E1D001E1FFB
:1019C000001E22001E25251E00221E00201E001DB6
:1019D0001E001A1E00181E00151E00131E00101EE9
:1019E000000E1E000B1E00081E00061E00031E0037
:1019F000011E00001E01001E03001E06001E08003E
:101A00001E0B001E0E001E10001E13001E15001ED1
:101A100018001E1A001E1D001E1F001E22001E257B
:101A2000241E00221E00201E001D1E001A1E00186B
:101A30001E00151E00131E00101E000E1E000B1EA1
:101A400000081E00061E00031E00011E00001E00EE
:101A5000001E03001E05001E08001E0A001E0D00C9
:101A60001E10001E12001E15001E17001E1A001E5A
:101A70001C001E1F001E21001E24231E00211E000C
:101A80001F1E001C1E001A1E00171E00151E00122D
:101A90001E00101E000E1E000B1E00081E00061E5B
:101AA00000031E00011E00001E00001E03001E0594
:101AB000001E08001E0A001E0D001E10001E110050
:101AC0001E14001E17001E19001E1C001E1E001EE4
:101AD00021001E23231E00211E001E1E001C1E00AE
:101AE000191E00171E00151E00121E000F1E000DED
:101AF0001E000B1E00081E00061E00031E00011E15
:101B000000001E00001E03001E05001E08001E0A25
:101B1000001E0C001E0F001E11001E14001E1700D8
:101B20001E18001E1B001E1E001E20001E23221E4B
:101B300000201E001E1E001B1E00191E00171E0086
:101B4000141E00111E000F1E000D1E000A1E0008AC
:101B50001E00061E00031E00011E00001E00001EC7
:101B600003001E05001E08001E0A001E0C001E0FAA
:101B7000001E11001E13001E16001E18001E1A0063
:101B80001E1D001E1F001E22211E00201E001D1EE5
:101B9000001B1E00181E00161E00141E00111E0041
:101BA0000F1E000D1E000A1E00081E00061E000368
:101BB0001E00011E00001E00001E03001E05001E68
:101BC00007001E0A001E0C001E0E001E11001E1330
:101BD000001E15001E18001E1A001E1C001E1F00ED
:101BE0001E21211E001F1E001C1E001A1E00181E92
:101BF00000161E00131E00111E000F1E000C1E00FA
:101C00000A1E00081E00051E00031E00011E000023
:101C10001E00001E03001E05001E07001E0A001EF7
:101C20000C001E0E001E10001E13001E15001E17B5
:101C3000001E1A001E1C001E1E001E21201E001E5B
:101C40001E001C1E001A1E00171E00151E00131E6B
:101C500000111E000E1E000C1E000A1E00081E00B1
:101C6000051E00031E00011E00001E00001E0300D2
:101C70001E05001E07001E09001E0C001E0E001E81
:101C800010001E12001E15001E17001E19001E1B3C
:101C9000001E1E001E20201E001E1E001C1E0019FD
:101CA0001E00171E00151E00131E00101E000E1E23
:101CB000000C1E000A1E00081E00051E00031E0068
:101CC000011E00001E00001E03001E05001E07006E
:101CD0001E09001E0B001E0E001E10001E12001E0C
:101CE00014001E17001E18001E1B001E1D001E1FC4
:101CF0001F1E001D1E001B1E00181E00171E0015B3
:101D00001E00121E00101E000E1E000C1E000A1ED9
:101D100000071E00051E00031E00011E00001E001D
:101D2000001E03001E05001E07001E09001E0B00FA
:101D30001E0D001E10001E11001E14001E16001E97
:101D400018001E1A001E1C001E1F1E1E001C1E0056
:101D50001A1E00181E00161E00141E00121E000F70
:101D60001E000E1E000C1E00091E00071E00051E90
:101D700000031E00011E00001E00001E02001E05C2
:101D8000001E07001E08001E0B001E0D001E0F0087
:101D90001E11001E13001E15001E18001E1A001E24
:101DA0001C001E1E1E1E001C1E001A1E00181E00F7
:101DB000161E00131E00111E000F1E000E1E000B2B
:101DC0001E00091E00071E00051E00031E00011E46
:101DD00000001E00001E02001E05001E07001E0857
:101DE000001E0A001E0D001E0F001E11001E130013
:101DF0001E15001E17001E19001E1B001E1E1D1E94
:101E0000001B1E00191E00171E00151E00131E00C9
:101E1000111E000F1E000D1E000B1E00091E0007E4
:101E20001E00051E00031E00011E00001E00001EF5
:101E300002001E04001E07001E08001E0A001E0CE1
:101E4000001E0E001E10001E13001E15001E17009F
:101E50001E18001E1A001E1D1C1E001A1E00181E31
:101E600000171E00151E00131E00111E000F1E007D
:101E70000D1E000B1E00081E00071E00051E00039D
:101E80001E00011E00001E00001E02001E04001E97
:101E900006001E08001E0A001E0C001E0E001E106A
:101EA000001E12001E14001E16001E18001E1A002E
:101EB0001E1C1C1E001A1E00181E00161E00141EDA
:101EC00000121E00101E000E1E000C1E000A1E0036
:101ED000081E00071E00051E00031E00011E000054
:101EE0001E00001E02001E04001E06001E08001E2A
:101EF0000A001E0C001E0E001E10001E11001E13F4
:101F0000001E15001E17001E19001E1C1B1E001AA5
:101F10001E00181E00161E00141E00121E00101EA9
:101F2000000E1E000C1E000A1E00081E00071E00E8
:101F3000051E00031E00011E00001E00001E020000
:101F40001E04001E06001E08001E0A001E0C001EB5
:101F50000E001E10001E11001E13001E15001E177D
:101F6000001E19001E1B1A1E00191E00171E001548
:101F70001E00131E00111E000F1E000E1E000C1E60
:101F8000000A1E00081E00071E00051E00031E009A
:101F9000011E00001E00001E02001E04001E06009E
:101FA0001E08001E09001E0B001E0D001E0F001E45
:101FB00011001E13001E15001E17001E18001E1A09
:101FC0001A1E00181E00171E00151E00131E0011F9
:101FD0001E000F1E000E1E000C1E000A1E00081E12
:101FE00000061E00051E00031E00011E00001E004C
:101FF000001E02001E04001E05001E07001E090030
:102000001E0B001E0D001E0F001E10001E12001ED3
:1020100014001E16001E18001E1A191E00181E009D
:10202000161E00141E00121E00111E000F1E000DB1
:102030001E000B1E000A1E00081E00061E00041EC5
:1020400000031E00011E00001E00001E02001E03F1
:10205000001E05001E07001E09001E0A001E0C00BF
:102060001E0E001E10001E11001E13001E15001E65
:1020700017001E19181E00171E00151E00131E0043
:10208000121E00101E000E1E000D1E000B1E000969
:102090001E00081E00061E00041E00031E00011E76
:1020A00000001E00001E02001E03001E05001E0789
:1020B000001E08001E0A001E0C001E0E001E10004E
:1020C0001E11001E13001E15001E17001E18181EDC
:1020D00000171E00151E00131E00111E000F1E000B
:1020E0000E1E000C1E000B1E00091E00071E00061F
:1020F0001E00041E00021E00011E00001E00001E25
:1021000001001E03001E05001E07001E08001E0A17
:10211000001E0C001E0E001E0F001E11001E1300DC
:102120001E14001E16001E18171E00161E00141E78
:1021300000131E00111E000F1E000E1E000C1E00BC
:102140000A1E00091E00071E00051E00041E0002D4
:102150001E00011E00001E00001E01001E03001EC6
:1021600005001E07001E08001E0A001E0C001E0DA2
:10217000001E0F001E10001E12001E13001E150070
:102180001E17171E00151E00141E00121E00111E21
:10219000000F1E000E1E000C1E000A1E00081E006E
:1021A000071E00051E00041E00021E00011E000086
:1021B0001E00001E01001E03001E05001E07001E5B
:1021C00008001E0A001E0B001E0D001E0E001E1031
:1021D000001E11001E13001E15001E17161E0015EE
:1021E0001E00131E00111E00101E000E1E000D1EEC
:1021F000000C1E000A1E00081E00071E00051E001F
:10220000041E00021E00011E00001E00001E010030
:102210001E03001E05001E06001E08001E09001EEB
:102220000B001E0C001E0E001E10001E11001E13BF
:10223000001E14001E16151E00141E00131E001191
:102240001E000F1E000E1E000C1E000B1E000A1E9C
:1022500000081E00071E00051E00031E00021E00CF
:10226000011E00001E00001E01001E03001E0500CE
:102270001E06001E07001E09001E0A001E0C001E7E
:102280000E001E0F001E10001E12001E13001E1551
:10229000151E00131E00121E00111E000F1E000E40
:1022A0001E000C1E000B1E00091E00081E00071E4B
:1022B00000051E00031E00021E00011E00001E007D
:1022C000001E01001E03001E04001E06001E070063
:1022D0001E08001E0A001E0C001E0D001E0E001E11
:1022E00010001E11001E13001E15141E00131E00E8
:1022F000111E00101E000F1E000D1E000C1E000AF5
:102300001E00091E00081E00061E00051E00031EFA
:1023100000021E00011E00001E00001E01001E0320
:10232000001E04001E05001E07001E08001E0A00F5
:102330001E0B001E0C001E0E001E10001E11001EA3
:1023400012001E14131E00121E00111E000F1E008C
:102350000E1E000D1E000C1E000A1E00081E0007A7
:102360001E00061E00051E00031E00021E00011EA8
:1023700000001E00001E01001E03001E04001E05BA
:10238000001E07001E08001E0A001E0B001E0C0087
:102390001E0E001E0F001E10001E11001E13131E25
:1023A00000111E00101E000F1E000E1E000C1E004D
:1023B0000B1E000A1E00081E00071E00061E000558
:1023C0001E00031E00021E00011E00001E00001E53
:1023D00001001E03001E04001E05001E07001E084B
:1023E000001E09001E0A001E0C001E0D001E0E001D
:1023F0001E10001E11001E13121E00111E000F1EC3
:10240000000E1E000D1E000C1E000A1E00091E00FC
:10241000081E00071E00051E00041E00031E00010A
:102420001E00001E00001E00001E01001E03001EF4
:1024300004001E05001E07001E08001E09001E0ADB
:10244000001E0C001E0D001E0E001E10001E1100AE
:102450001E12111E00111E000F1E000E1E000D1E6A
:10246000000C1E000A1E00091E00081E00071E00A8
:10247000051E00041E00031E00011E00001E0000B9
:102480001E00001E01001E02001E03001E05001E8D
:1024900006001E07001E08001E0A001E0B001E0C70
:1024A000001E0E001E0F001E10001E11111E001037
:1024B0001E000F1E000E1E000C1E000B1E000A1E2A
:1024C00000081E00081E00071E00051E00041E0056
:1024D000031E00011E00001E00001E00001E010061
:1024E0001E02001E03001E05001E06001E07001E21
:1024F00008001E09001E0A001E0C001E0D001E0E04
:10250000001E10001E11101E000F1E000E1E000DDA
:102510001E000C1E000B1E000A1E00081E00071ED7
:1025200000061E00051E00041E00031E00011E0002
:10253000001E00001E00001E01001E02001E0300FF
:102540001E05001E05001E07001E08001E09001EB5
:102550000A001E0B001E0C001E0E001E0F001E1097
:102560000F1E000F1E000E1E000C1E000C1E000A87
:102570001E00091E00081E00071E00061E00051E84
:1025800000041E00031E00011E00001E00001E00AD
:10259000001E01001E02001E03001E04001E050096
:1025A0001E07001E07001E08001E0A001E0B001E4C
:1025B0000C001E0D001E0E001E100F1E000E1E0031
:1025C0000D1E000C1E000B1E000A1E00091E000836
:1025D0001E00071E00061E00051E00031E00031E2F
:1025E00000011E00001E00001E00001E01001E0251
:1025F000001E03001E04001E05001E06001E07002C
:102600001E08001E09001E0A001E0C001E0C001EE3
:102610000E001E0F0E1E000E1E000C1E000C1E00D3
:102620000A1E000A1E00081E00071E00071E0005E5
:102630001E00051E00031E00021E00011E00001EDB
:1026400000001E00001E01001E01001E03001E04EB
:10265000001E05001E06001E07001E08001E0900C1
:102660001E0A001E0B001E0C001E0D001E0E0E1E6C
:10267000000D1E000C1E000B1E000A1E00091E008D
:10268000081E00071E00061E00051E00041E000393
:102690001E00021E00011E00001E00001E00001E83
:1026A00001001E01001E03001E03001E05001E0582
:1026B000001E07001E07001E08001E09001E0A005B
:1026C0001E0B001E0C001E0E0D1E000C1E000C1E0C
:1026D000000A1E000A1E00081E00081E00071E0039
:1026E000061E00051E00041E00031E00021E00013F
:1026F0001E00001E00001E00001E01001E01001E24
:1027000003001E03001E04001E05001E06001E0717
:10271000001E08001E09001E0A001E0B001E0C00F1
:102720001E0D0C1E000C1E000B1E000A1E00091EB2
:1027300000081E00071E00071E00051E00051E00E3
:10274000041E00031E00021E00011E00001E0000E9
:102750001E00001E01001E01001E02001E03001EBE
:1027600004001E05001E06001E07001E08001E08AD
:10277000001E09001E0A001E0B001E0C0C1E000B82
:102780001E000A1E000A1E00081E00081E00071E6A
:1027900000061E00051E00051E00031E00031E008D
:1027A000021E00011E00001E00001E00001E000090
:1027B0001E01001E02001E03001E04001E05001E56
:1027C00005001E07001E07001E08001E09001E0A45
:1027D000001E0A001E0C0B1E000A1E000A1E000925
:1027E0001E00081E00071E00071E00061E00051E14
:1027F00000041E00031E00031E00021E00011E0036
:10280000001E00001E00001E00001E01001E02002F
:102810001E03001E03001E05001E05001E06001EEE
:1028200007001E08001E08001E09001E0A001E0BDD
:102830000A1E000A1E00091E00081E00081E0007CE
:102840001E00061E00051E00051E00041E00031EBD
:1028500000031E00011E00011E00001E00001E00DD
:10286000001E00001E01001E02001E03001E0300C9
:102870001E04001E05001E05001E07001E07001E88
:1028800008001E08001E09001E0A0A1E00091E007C
:10289000081E00081E00071E00071E00061E000579
:1028A0001E00051E00041E00031E00021E00011E65
:1028B00000011E00001E00001E00001E00001E0180
:1028C000001E01001E02001E03001E04001E050063
:1028D0001E05001E06001E07001E07001E08001E23
:1028E00008001E0A091E00081E00081E00071E0020
:1028F000071E00061E00051E00051E00041E000324
:102900001E00031E00021E00011E00011E00001E0C
:1029100000001E00001E00001E01001E01001E021D
:10292000001E03001E03001E04001E05001E0500FD
:102930001E06001E07001E07001E08001E09081EB6
:1029400000081E00081E00071E00071E00061E00CD
:10295000051E00051E00041E00031E00031E0002CB
:102960001E00011E00011E00001E00001E00001EB1
:1029700000001E01001E01001E02001E03001E03B7
:10298000001E04001E05001E05001E06001E070096
:102990001E07001E08001E08081E00081E00071E55
:1029A00000071E00061E00051E00051E00041E0076
:1029B000031E00031E00031E00021E00011E000174
:1029C0001E00001E00001E00001E00001E01001E52
:1029D00001001E02001E02001E03001E03001E0452
:1029E000001E05001E05001E06001E07001E070033
:1029F0001E08071E00071E00071E00061E00051EFB
:102A000000051E00051E00041E00031E00031E001C
:102A1000021E00011E00011E00011E00001E00001B
:102A20001E00001E00001E01001E01001E01001EEF
:102A300002001E03001E03001E04001E04001E05EB
:102A4000001E05001E06001E07001E07071E0007C9
:102A50001E00061E00051E00051E00051E00041EA9
:102A600000031E00031E00031E00021E00011E00C4
:102A7000011E00011E00001E00001E00001E0000BE
:102A80001E00001E01001E01001E02001E02001E8C
:102A900003001E03001E04001E04001E05001E0588
:102AA000001E06001E07061E00061E00051E00056D
:102AB0001E00051E00041E00031E00031E00031E50
:102AC00000021E00021E00011E00011E00011E0069
:102AD000001E00001E00001E00001E00001E01005F
:102AE0001E01001E01001E02001E03001E03001E28
:102AF00003001E04001E04001E05001E05001E0625
:102B0000051E00051E00051E00051E00041E000314
:102B10001E00031E00031E00031E00021E00011EF5
:102B200000011E00011E00001E00001E00001E000D
:102B3000001E00001E00001E01001E01001E0100FC
:102B40001E02001E02001E03001E03001E03001EC4
:102B500004001E04001E05001E05051E00051E00C3
:102B6000041E00041E00031E00031E00031E0003BB
:102B70001E00021E00021E00011E00011E00011E9A
:102B800000001E00001E00001E00001E00001E00AF
:102B9000001E00001E01001E01001E01001E02009A
:102BA0001E02001E03001E03001E03001E03001E63
:102BB00004001E05041E00041E00041E00031E0067
:102BC000031E00031E00031E00021E00021E000161
:102BD0001E00011E00011E00011E00001E00001E3E
:102BE00000001E00001E00001E00001E00001E014E
:102BF000001E01001E01001E01001E02001E020038
:102C00001E03001E03001E03001E03001E04031EFD
:102C100000031E00031E00031E00031E00021E0010
:102C2000021E00021E00011E00011E00011E000106
:102C30001E00011E00001E00001E00001E00001EDF
:102C400000001E00001E00001E00001E01001E01EC
:102C5000001E01001E01001E01001E02001E0200D7
:102C60001E03001E03001E03031E00031E00031E9E
:102C700000021E00021E00021E00011E00011E00B6
:102C8000011E00011E00011E00011E00001E0000AA
:102C90001E00001E00001E00001E00001E00001E80
:102CA00000001E00001E00001E01001E01001E018B
:102CB000001E01001E01001E01001E02001E020077
:102CC0001E03021E00021E00021E00021E00011E44
:102CD00000011E00011E00011E00011E00011E0059
:102CE000011E00001E00001E00001E00001E00004D
:102CF0001E00001E00001E00001E00001E00001E20
:102D000000001E00001E01001E01001E01001E0129
:102D1000001E01001E01001E01001E02011E000116
:102D20001E00011E00011E00011E00011E00011EEA
:102D300000011E00011E00011E00001E00001E00FA
:102D4000001E00001E00001E00001E00001E0000ED
:102D50001E00001E00001E00001E00001E00001EBF
:102D600000001E00001E00001E01001E01001E01CA
:102D7000001E01001E01011E00011E00011E0001B7
:102D80001E00011E00011E00011E00011E00001E8B
:102D900000001E00001E00001E00001E00001E009D
:102DA000001E00001E00001E00001E00001E00008D
:102DB0001E00001E00001E00001E00001E00001E5F
:102DC00000001E00001E00001E00001E00001E016C
:102DD000001E00001E00001E00001E00001E00005D
:102DE0001E00001E00001E00001E00001E00001E2F
:102DF00000001E00001E00001E00001E00001E003D
:102E0000001E00001E00001E00001E00001E00002C
:102E10001E00001E00001E00001E00001E00001EFE
:102E200000001E00001E00001E0011241FBECFEF78
:102E3000D8E0DEBFCDBF0E947F190C94181C0C9403
:102E400000008C0181E087B9C0E0D0E0C017D10755
:102E50003CF440E060E085E50E946D172196F6CFD6
:102E60002FEF86EB90E2215080409040E1F700C0C8
:102E70000000C0E0D0E0C017D1073CF445E560E0B9
:102E800080E00E946D172196F6CF2FEF86EB90E23F
:102E9000215080409040E1F700C00000D5CF81E094
:102EA00088B900C000C000C018B800C000C000C091
:102EB00000C000C000C000C00000089581E088B9D3
:102EC00000C000C000C000C000C000C000C018B8F2
:102ED00000C000C000C000C00895AF92BF92CF9262
:102EE000DF92EF92FF920F931F93CF93DF93C82E41
:102EF000E42EC8E0D0E000E810E0A62EB12CC80116
:102F00008A219B21892B19F00E945E1702C00E9422
:102F10004F1715950795219791F7C8E0D0E000E885
:102F200010E0D12CC8018C219D21892B19F00E9421
:102F30005E1702C00E944F1715950795219791F7CC
:102F4000C8E0D0E000E810E0F12CC8018E219F21FC
:102F5000892B19F00E945E1702C00E944F17159529
:102F60000795219791F7DF91CF911F910F91FF90D6
:102F7000EF90DF90CF90BF90AF9008952F923F9247
:102F80004F925F926F927F928F929F92AF92BF9279
:102F9000CF92DF92EF92FF920F931F93CF93DF9325
:102FA000CDB7DEB72A970FB6F894DEBF0FBECDBF00
:102FB000D82EC92EF7010130110501F13B0129017D
:102FC000461A570A842F90E0BC016D1971097E835F
:102FD0006D83852F90E09C012C19310938872F8350
:102FE00033961A861986E12CF12C80E090E020E0DF
:102FF00030E0580141E0A41AB10805C06083718334
:10300000828393833DC01C01240C351C4D815E815D
:103010004E0D5F1D5A8349834F81588569857A8596
:10302000460F571F5C834B832017310749F14F012F
:1030300053E0851A9108B5010E94EA1B660D771DC1
:10304000D4016D937C934F01B1E08B1A9108C701B5
:10305000B5010E94EA1B6D0DD4016C9389859A8598
:10306000B5010E94EA1B6C0D60832F5F3F4F3496C1
:103070004B815C815A874987E980FA80C101C3CFBF
:103080002A960FB6F894DEBF0FBECDBFDF91CF9169
:103090001F910F91FF90EF90DF90CF90BF90AF9076
:1030A0009F908F907F906F905F904F903F902F9068
:1030B00008952F923F924F925F926F927F928F92DC
:1030C0009F92AF92BF92CF92DF92EF92FF920F93B7
:1030D0001F93CF93DF9300D000D0CDB7DEB7FC01B4
:1030E000B2803380B11004C0232C3B823C82C2C02A
:1030F000FC0100811181B8010836F1E01F0710F0D2
:103100006856714080E090E00E94EF1A2B013C016C
:10311000632D70E080E090E00E94EF1A20E030E044
:1031200048EC52E40E944E1A6B017C016B2D70E05A
:1031300080E090E00E94EF1A20E030E048EC52E49A
:103140000E944E1A4B015C0120E030E040E752E45F
:10315000C301B2010E944E1A2B013C010E94C01A09
:103160006A8370E080E090E00E94F11A9B01AC015C
:10317000C301B2010E94E1192B013C01A501940198
:1031800060E070E080E89FE30E94E1199B01AC01E0
:10319000C701B6010E947D1B20E030E040E053E40F
:1031A0000E947D1B0E94C01A262EA3019201C50118
:1031B000B4010E947D1B9B01AC0160E070E080E8DF
:1031C0009FE30E94E1199B01AC01C701B6010E9477
:1031D0007D1B20E030E040E053E40E947D1B0E9414
:1031E000C01A6983A301920160E070E080E89FE368
:1031F0000E94E1199B01AC01C501B4010E947D1B35
:103200009B01AC0160E070E080E89FE30E94E1195F
:103210009B01AC01C701B6010E947D1B20E030E09C
:1032200040E053E40E947D1B0E94C01A2A81822F35
:1032300090E087309105E8F4FC01EC5CFF4F0C94C2
:10324000FE1B2B826C83232C15C02B823C82298091
:1032500011C06B833C820EC03B8289818C830AC083
:103260003B822C82262E06C0E981EB832C82202E05
:1032700001C0212C622D7C818B810F900F900F90CB
:103280000F90DF91CF911F910F91FF90EF90DF9002
:10329000CF90BF90AF909F908F907F906F905F90F6
:1032A0004F903F902F900895CF92DF92EF92FF9230
:1032B0000F931F93CF93DF936A01EB017C0100E032
:1032C00010E00C151D0561F0C7010E9459186993A3
:1032D000799389930F5F1F4F84E0E80EF11CF1CFC3
:1032E000DF91CF911F910F91FF90EF90DF90CF90E2
:1032F0000895282F862F622F792F942F089581E02B
:1033000087B911E080E090E0C0E0D0E03DE1E32E3D
:10331000F12C0AE51130D9F40C9F60010D9FD00CFF
:103320001124A12CB12CF501EC0DFD1DEA58FF4F25
:103330004281618180810E946D1723E0A20EB11C41
:103340003AE5A316B10479F78EE190E023C01F3F60
:1033500009F5F701E81BF90B8EE1C82ED12CCF013E
:10336000880F991FE80FF91F0C9FC0010D9F900D4A
:103370001124E80FF91FEA58FF4F9280A180B08016
:10338000492D6A2D8B2D0E946D1741E0C41AD1087A
:10339000B9F7DACF2FE33DE043E021503040404021
:1033A000E1F700C00000C10FD11D17FDDA95C1384B
:1033B000D10511F41FEFCDCF209709F0ABCF11E06D
:1033C000ABCF5058BB27AA270E94F9190C94431B76
:1033D0000E94351B38F00E943C1B20F039F49F3FBF
:1033E00019F426F40C94321B0EF4E095E7FB0C94D0
:1033F0002C1BE92F0E94541B58F3BA17620773075E
:103400008407950720F079F4A6F50C94761B0EF44A
:10341000E0950B2EBA2FA02D0B01B90190010C01E4
:10342000CA01A0011124FF27591B99F0593F50F4FC
:10343000503E68F11A16F040A22F232F342F442754
:10344000585FF3CF469537952795A795F04053954C
:10345000C9F77EF41F16BA0B620B730B840BBAF01C
:103460009150A1F0FF0FBB1F661F771F881FC2F787
:103470000EC0BA0F621F731F841F48F4879577959B
:103480006795B795F7959E3F08F0B0CF9395880F55
:1034900008F09927EE0F9795879508950E94621A74
:1034A0000C94431B0E943C1B58F00E94351B40F0BB
:1034B00029F45F3F29F00C942C1B51110C94771BBD
:1034C0000C94321B0E94541B68F39923B1F35523CB
:1034D00091F3951B550BBB27AA2762177307840727
:1034E00038F09F5F5F4F220F331F441FAA1FA9F3BD
:1034F00035D00E2E3AF0E0E832D091505040E695AB
:10350000001CCAF72BD0FE2F29D0660F771F881F0B
:10351000BB1F261737074807AB07B0E809F0BB0BFE
:10352000802DBF01FF2793585F4F3AF09E3F510512
:1035300078F00C942C1B0C94771B5F3FE4F3983EBF
:10354000D4F3869577956795B795F7959F5FC9F7FB
:10355000880F911D9695879597F90895E1E0660F7C
:10356000771F881FBB1F621773078407BA0720F0F5
:10357000621B730B840BBA0BEE1F88F7E09508955E
:103580000E945C1B88F09F5798F0B92F9927B7517C
:10359000B0F0E1F0660F771F881F991F1AF0BA95F7
:1035A000C9F714C0B13091F00E94761BB1E00895C4
:1035B0000C94761B672F782F8827B85F39F0B93FB6
:1035C000CCF3869577956795B395D9F73EF49095AA
:1035D0008095709561957F4F8F4F9F4F0895E89428
:1035E00009C097FB3EF490958095709561957F4F4B
:1035F0008F4F9F4F9923A9F0F92F96E9BB279395F9
:10360000F695879577956795B795F111F8CFFAF408
:10361000BB0F11F460FF1BC06F5F7F4F8F4F9F4F39
:1036200016C0882311F096E911C0772321F09EE897
:10363000872F762F05C0662371F096E8862F70E0FD
:1036400060E02AF09A95660F771F881FDAF7880FD7
:103650009695879597F9089597F99F6780E870E0A8
:1036600060E008959FEF80EC089500240A941616F8
:10367000170618060906089500240A941216130660
:10368000140605060895092E0394000C11F48823EE
:1036900052F0BB0F40F4BF2B11F460FF04C06F5F0A
:1036A0007F4F8F4F9F4F089557FD9058440F551FE0
:1036B00059F05F3F71F04795880F97FB991F61F0B4
:1036C0009F3F79F087950895121613061406551F2B
:1036D000F2CF4695F1DF08C0161617061806991F97
:1036E000F1CF86957105610508940895E894BB278C
:1036F00066277727CB0197F908950E94901B0C94B9
:10370000431B0E94351B38F00E943C1B20F0952380
:1037100011F00C942C1B0C94321B11240C94771B6D
:103720000E94541B70F3959FC1F3950F50E0551FF5
:10373000629FF001729FBB27F00DB11D639FAA2706
:10374000F00DB11DAA1F649F6627B00DA11D661F55
:10375000829F2227B00DA11D621F739FB00DA11D76
:10376000621F839FA00D611D221F749F3327A00D30
:10377000611D231F849F600D211D822F762F6A2FCC
:1037800011249F5750409AF0F1F088234AF0EE0F31
:10379000FF1FBB1F661F771F881F91505040A9F75E
:1037A0009E3F510580F00C942C1B0C94771B5F3FBF
:1037B000E4F3983ED4F3869577956795B795F7959A
:1037C000E7959F5FC1F7FE2B880F911D9695879512
:1037D00097F9089597FB072E16F4009407D077FD0C
:1037E00009D00E94041C07FC05D03EF490958195F9
:1037F0009F4F0895709561957F4F0895EE0FFF1FBD
:103800000590F491E02D0994AA1BBB1B51E107C060
:10381000AA1FBB1FA617B70710F0A61BB70B881F60
:10382000991F5A95A9F780959095BC01CD010895EF
:04383000F894FFCF3A
:00000001FF

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,721 @@
Archive member included to satisfy reference by file (symbol)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
color_hsv.o (__subsf3)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) (__addsf3x)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
color_hsv.o (__divsf3)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) (__divsf3x)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
color_hsv.o (__fixunssfsi)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o)
color_hsv.o (__floatunsisf)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_inf)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_nan)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscA)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscB)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) (__fp_round)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_split3)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_zero)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
color_hsv.o (__mulsf3)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) (__mulsf3x)
/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
color_hsv.o (__divmodhi4)
/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o (exit)
/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
color_hsv.o (__tablejump2__)
/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4)
Speichereinrichtung
Name Ursprung Länge Eigenschaften
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/crtatmega328p.o
LOAD party.o
LOAD led-driver.o
LOAD WS2812B_Atmega.o
LOAD color_hsv.o
LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a
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/libatmega328p.a
END GROUP
.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 0x3834
*(.vectors)
.vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
0x0000000000000000 __vectors
0x0000000000000000 __vector_default
*(.vectors)
*(.progmem.gcc*)
.progmem.gcc_sw_table
0x0000000000000068 0xe color_hsv.o
0x0000000000000076 . = ALIGN (0x2)
0x0000000000000076 __trampolines_start = .
*(.trampolines)
.trampolines 0x0000000000000076 0x0 linker stubs
*(.trampolines*)
0x0000000000000076 __trampolines_end = .
*(.progmem*)
.progmem.data 0x0000000000000076 0x2db4 led-driver.o
0x0000000000000076 rgbTable
0x0000000000002e2a . = ALIGN (0x2)
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x0000000000002e2a __ctors_start = .
*(.ctors)
0x0000000000002e2a __ctors_end = .
0x0000000000002e2a __dtors_start = .
*(.dtors)
0x0000000000002e2a __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x0000000000002e2a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
0x0000000000002e2a __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x0000000000002e2a 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x0000000000002e36 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
*(.init9)
*(.text)
.text 0x0000000000002e3e 0x4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
0x0000000000002e3e __vector_22
0x0000000000002e3e __vector_1
0x0000000000002e3e __vector_24
0x0000000000002e3e __vector_12
0x0000000000002e3e __bad_interrupt
0x0000000000002e3e __vector_6
0x0000000000002e3e __vector_3
0x0000000000002e3e __vector_23
0x0000000000002e3e __vector_25
0x0000000000002e3e __vector_11
0x0000000000002e3e __vector_13
0x0000000000002e3e __vector_17
0x0000000000002e3e __vector_19
0x0000000000002e3e __vector_7
0x0000000000002e3e __vector_5
0x0000000000002e3e __vector_4
0x0000000000002e3e __vector_9
0x0000000000002e3e __vector_2
0x0000000000002e3e __vector_21
0x0000000000002e3e __vector_15
0x0000000000002e3e __vector_8
0x0000000000002e3e __vector_14
0x0000000000002e3e __vector_10
0x0000000000002e3e __vector_16
0x0000000000002e3e __vector_18
0x0000000000002e3e __vector_20
.text 0x0000000000002e42 0x5c party.o
0x0000000000002e42 partyHard
.text 0x0000000000002e9e 0x0 led-driver.o
.text 0x0000000000002e9e 0xde WS2812B_Atmega.o
0x0000000000002e9e writeZero
0x0000000000002ebc writeOne
0x0000000000002eda writeRGB
.text 0x0000000000002f7c 0x382 color_hsv.o
0x0000000000002f7c interpolateLinearly
0x00000000000030b2 hsv2rgb
0x00000000000032a8 hsv2rgbList
0x00000000000032f2 init_hsv_t
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.text 0x00000000000032fe 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
0x00000000000032fe . = ALIGN (0x2)
*(.text.*)
.text.startup 0x00000000000032fe 0xc4 led-driver.o
0x00000000000032fe main
.text.avr-libc.fplib
0x00000000000033c2 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
0x00000000000033c2 __subsf3
0x00000000000033c4 __addsf3
.text.avr-libc.fplib
0x00000000000033d0 0xcc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
0x00000000000033f2 __addsf3x
.text.avr-libc.fplib
0x000000000000349c 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
0x000000000000349c __divsf3
.text.avr-libc.fplib
0x00000000000034a4 0xdc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
0x00000000000034c4 __divsf3x
0x00000000000034ca __divsf3_pse
.text.avr-libc.fplib
0x0000000000003580 0x5e /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
0x0000000000003580 __fixunssfsi
.text.avr-libc.fplib
0x00000000000035de 0x7a /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o)
0x00000000000035de __floatunsisf
0x00000000000035e2 __floatsisf
.text.avr-libc.fplib
0x0000000000003658 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o)
0x0000000000003658 __fp_inf
.text.avr-libc.fplib
0x0000000000003664 0x6 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o)
0x0000000000003664 __fp_nan
.text.avr-libc.fplib
0x000000000000366a 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o)
0x000000000000366a __fp_pscA
.text.avr-libc.fplib
0x0000000000003678 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o)
0x0000000000003678 __fp_pscB
.text.avr-libc.fplib
0x0000000000003686 0x22 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o)
0x0000000000003686 __fp_round
.text.avr-libc.fplib
0x00000000000036a8 0x44 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o)
0x00000000000036a8 __fp_split3
0x00000000000036b8 __fp_splitA
.text.avr-libc.fplib
0x00000000000036ec 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o)
0x00000000000036ec __fp_zero
0x00000000000036ee __fp_szero
.text.avr-libc.fplib
0x00000000000036fa 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
0x00000000000036fa __mulsf3
.text.avr-libc.fplib
0x0000000000003702 0xd2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
0x0000000000003720 __mulsf3x
0x0000000000003726 __mulsf3_pse
.text.libgcc.mul
0x00000000000037d4 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.text.libgcc.div
0x00000000000037d4 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
0x00000000000037d4 __divmodhi4
0x00000000000037d4 _div
.text.libgcc 0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.text.libgcc.prologue
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.text.libgcc.builtins
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.text.libgcc.fmul
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.text.libgcc.fixed
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.text.libgcc.mul
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text.libgcc.div
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text.libgcc 0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text.libgcc.prologue
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text.libgcc.builtins
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text.libgcc.fmul
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text.libgcc.fixed
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.text.libgcc.mul
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.text.libgcc.div
0x00000000000037fc 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.text.libgcc 0x00000000000037fc 0xc /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
0x00000000000037fc __tablejump2__
.text.libgcc.prologue
0x0000000000003808 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.text.libgcc.builtins
0x0000000000003808 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.text.libgcc.fmul
0x0000000000003808 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.text.libgcc.fixed
0x0000000000003808 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.text.libgcc.mul
0x0000000000003808 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
.text.libgcc.div
0x0000000000003808 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
0x0000000000003808 __udivmodhi4
.text.libgcc 0x0000000000003830 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
.text.libgcc.prologue
0x0000000000003830 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
.text.libgcc.builtins
0x0000000000003830 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
.text.libgcc.fmul
0x0000000000003830 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
.text.libgcc.fixed
0x0000000000003830 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
0x0000000000003830 . = ALIGN (0x2)
*(.fini9)
.fini9 0x0000000000003830 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
0x0000000000003830 exit
0x0000000000003830 _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x0000000000003830 0x4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
*(.fini0)
0x0000000000003834 _etext = .
.data 0x0000000000800100 0x0 load address 0x0000000000003834
0x0000000000800100 PROVIDE (__data_start, .)
*(.data)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
.data 0x0000000000800100 0x0 party.o
.data 0x0000000000800100 0x0 led-driver.o
.data 0x0000000000800100 0x0 WS2812B_Atmega.o
.data 0x0000000000800100 0x0 color_hsv.o
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.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(_tablejump2.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
*(.data*)
*(.rodata)
*(.rodata*)
*(.gnu.linkonce.d*)
0x0000000000800100 . = ALIGN (0x2)
0x0000000000800100 _edata = .
0x0000000000800100 PROVIDE (__data_end, .)
.bss 0x0000000000800100 0x0
0x0000000000800100 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
.bss 0x0000000000800100 0x0 party.o
.bss 0x0000000000800100 0x0 led-driver.o
.bss 0x0000000000800100 0x0 WS2812B_Atmega.o
.bss 0x0000000000800100 0x0 color_hsv.o
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
.bss 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
*(.bss*)
*(COMMON)
0x0000000000800100 PROVIDE (__bss_end, .)
0x0000000000003834 __data_load_start = LOADADDR (.data)
0x0000000000003834 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x0000000000800100 0x0
0x0000000000800100 PROVIDE (__noinit_start, .)
*(.noinit*)
0x0000000000800100 PROVIDE (__noinit_end, .)
0x0000000000800100 _end = .
0x0000000000800100 PROVIDE (__heap_start, .)
.eeprom 0x0000000000810000 0x0
*(.eeprom*)
0x0000000000810000 __eeprom_end = .
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
.lock
*(.lock*)
.signature
*(.signature*)
.user_signatures
*(.user_signatures*)
.stab 0x0000000000000000 0x1608
*(.stab)
.stab 0x0000000000000000 0x5ac party.o
.stab 0x00000000000005ac 0x570 led-driver.o
0x72c (size before relaxing)
.stab 0x0000000000000b1c 0x48c WS2812B_Atmega.o
0x660 (size before relaxing)
.stab 0x0000000000000fa8 0x660 color_hsv.o
0x834 (size before relaxing)
.stabstr 0x0000000000000000 0x1059
*(.stabstr)
.stabstr 0x0000000000000000 0x1059 party.o
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment 0x0000000000000000 0x11
*(.comment)
.comment 0x0000000000000000 0x11 party.o
0x12 (size before relaxing)
.comment 0x0000000000000011 0x12 led-driver.o
.comment 0x0000000000000011 0x12 WS2812B_Atmega.o
.comment 0x0000000000000011 0x12 color_hsv.o
.note.gnu.avr.deviceinfo
0x0000000000000000 0x40
.note.gnu.avr.deviceinfo
0x0000000000000000 0x40 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/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
*(.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(virtualglove.elf elf32-avr)
LOAD linker stubs
Kreuzreferenz-Tabelle
Symbol Datei
__addsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
__addsf3x /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
__bad_interrupt /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__divmodhi4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
color_hsv.o
__divsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
color_hsv.o
__divsf3_pse /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
__divsf3x /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
__fixunssfsi /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
color_hsv.o
__floatsisf /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o)
color_hsv.o
__floatunsisf /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o)
color_hsv.o
__fp_inf /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
__fp_nan /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
__fp_pscA /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
__fp_pscB /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
__fp_round /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
__fp_split3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
__fp_splitA /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
__fp_szero /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o)
__fp_zero /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o)
__heap_end /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__init /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__mulsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
color_hsv.o
__mulsf3_pse /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
__mulsf3x /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o)
__stack /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__subsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o)
color_hsv.o
__tablejump2__ /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o)
color_hsv.o
__udivmodhi4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o)
/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
__vector_1 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_11 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_13 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_14 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_15 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_16 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_17 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_18 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_19 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_21 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_22 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_23 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_24 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_25 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_5 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_6 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_7 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_9 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vector_default /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
__vectors /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
_div /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o)
_exit /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
exit /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o)
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
hsv2rgb color_hsv.o
hsv2rgbList color_hsv.o
init_hsv_t color_hsv.o
interpolateLinearly color_hsv.o
main led-driver.o
/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o
partyHard party.o
rgbTable led-driver.o
writeOne WS2812B_Atmega.o
writeRGB WS2812B_Atmega.o
led-driver.o
party.o
writeZero WS2812B_Atmega.o

View File

@ -0,0 +1,106 @@
00000000 W __heap_end
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 W __vector_default
00000000 T __vectors
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
00000076 T rgbTable
00000076 T __trampolines_end
00000076 T __trampolines_start
000008ff W __stack
00002e2a T __ctors_end
00002e2a T __ctors_start
00002e2a T __dtors_end
00002e2a T __dtors_start
00002e2a W __init
00002e3e T __bad_interrupt
00002e3e W __vector_1
00002e3e W __vector_10
00002e3e W __vector_11
00002e3e W __vector_12
00002e3e W __vector_13
00002e3e W __vector_14
00002e3e W __vector_15
00002e3e W __vector_16
00002e3e W __vector_17
00002e3e W __vector_18
00002e3e W __vector_19
00002e3e W __vector_2
00002e3e W __vector_20
00002e3e W __vector_21
00002e3e W __vector_22
00002e3e W __vector_23
00002e3e W __vector_24
00002e3e W __vector_25
00002e3e W __vector_3
00002e3e W __vector_4
00002e3e W __vector_5
00002e3e W __vector_6
00002e3e W __vector_7
00002e3e W __vector_8
00002e3e W __vector_9
00002e42 T partyHard
00002e9e T writeZero
00002ebc T writeOne
00002eda T writeRGB
00002f7c T interpolateLinearly
000030b2 T hsv2rgb
000032a8 T hsv2rgbList
000032f2 T init_hsv_t
000032fe T main
000033c2 T __subsf3
000033c4 T __addsf3
000033f2 T __addsf3x
0000349c T __divsf3
000034c4 T __divsf3x
000034ca T __divsf3_pse
00003580 T __fixunssfsi
000035de T __floatunsisf
000035e2 T __floatsisf
00003658 T __fp_inf
00003664 T __fp_nan
0000366a T __fp_pscA
00003678 T __fp_pscB
00003686 T __fp_round
000036a8 T __fp_split3
000036b8 T __fp_splitA
000036ec T __fp_zero
000036ee T __fp_szero
000036fa T __mulsf3
00003720 T __mulsf3x
00003726 T __mulsf3_pse
000037d4 T _div
000037d4 T __divmodhi4
000037ec t __divmodhi4_neg1
000037f4 t __divmodhi4_neg2
000037fa t __divmodhi4_exit
000037fc T __tablejump2__
00003808 T __udivmodhi4
00003810 t __udivmodhi4_loop
0000381e t __udivmodhi4_ep
00003830 W exit
00003830 T _exit
00003832 t __stop_program
00003834 A __data_load_end
00003834 A __data_load_start
00003834 T _etext
00800100 D _edata
00800100 T _end
00810000 T __eeprom_end

Binary file not shown.

View File

@ -1,16 +0,0 @@
:100000000C9434000C9446000C9448000C94460068
:100010000C9446000C9446000C9446000C94460048
:100020000C9446000C9446000C9446000C94460038
:100030000C9446000C9446000C9446000C94460028
:100040000C9446000C9446000C9446000C94460018
:100050000C9446000C9446000C9446000C94460008
:100060000C9446000C94460011241FBECFEFD8E03C
:10007000DEBFCDBF21E0A0E0B1E001C01D92A13004
:10008000B207E1F70E9457000C9473000C94000033
:100090001F920F920FB60F9211248F9381E08093DD
:1000A00000018F910F900FBE0F901F9018958091B7
:1000B00069008F60809369008DB383608DBB8FB7BB
:1000C00080688FBF8FEF87B921E092E080910001B7
:1000D000882329F088B1822788B91092000188B15D
:0A00E000892788B9F3CFF894FFCF09
:00000001FF

Binary file not shown.

View File

@ -91,8 +91,9 @@ int main(){
// uart_init();
uint16_t min = HUE_MIN, max = HUE_MAX;
uint8_t val = 20, sat = 100;
uint8_t vl = 40;
uint16_t steps = 1;
uint16_t steps = 8;
bool falling = true;
hsv_t colorsHSV[LEDS];
rgb_t colorsRGB[LEDS];
@ -106,7 +107,7 @@ int main(){
//~ right = 180;
//~ }
interpolateLinearly(makeHSV(min, 100, 30), makeHSV(max, 100, 30), LEDS, colorsHSV);
interpolateLinearly(makeHSV(min, sat, val), makeHSV(max, sat, val), LEDS, colorsHSV);
hsv2rgbList(colorsHSV, colorsRGB, LEDS);
@ -123,9 +124,12 @@ int main(){
max = max + steps;
}
if(min == HUE_MAX || max == HUE_MAX) {
falling = !falling;
if(falling && (min >= HUE_MAX || max <= HUE_MIN)) {
falling = false;
} else if(!falling && (min <= HUE_MIN || max >= HUE_MAX)){
falling = true;
}
_delay_ms(2100/(520/steps));
// pulse
//~ if(falling){