From f0642419db8e6727772e3d94e822a08111a2ed3c Mon Sep 17 00:00:00 2001 From: Christian Kroll Date: Fri, 25 Dec 2015 23:42:46 +0100 Subject: [PATCH] converted to git, reformatted code and made it compatible with recent versions of avr-gcc and avr-libc Signed-off-by: Christian Kroll --- .gitignore | 12 ++ Makefile | 82 +++++++++- main.c | 448 +++++++++++++++++++++++++++++------------------------ 3 files changed, 335 insertions(+), 207 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e927743 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +*.o +*.d +*.swp +image.bin +image_eeprom.bin +image_eeprom.hex +image_eeprom.srec +image.elf +image.hex +image.lst +image.map +image.srec diff --git a/Makefile b/Makefile index c0d3941..b868c09 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,81 @@ -MCU_TARGET=atmega8 -DEFS = -DF_CPU=8000000 -DATMEGA8 +# Default values +OBJ = main.o +OUT ?= image +MCU_TARGET ?= atmega8 +MCU_CC ?= avr-gcc +OPTIMIZE ?= -Os +WARNINGS ?= -Wall +DEFS ?= -DF_CPU=16000000 +CFLAGS += -MMD -g -std=c99 -mmcu=$(MCU_TARGET) $(OPTIMIZE) $(WARNINGS) $(DEFS) +ASFLAGS ?= -g $(DEFS) +LDFLAGS ?= -Wl,-Map,$(OUT).map -OBJ = main.o +# External Tools +OBJCOPY ?= avr-objcopy +OBJDUMP ?= avr-objdump +FLASH ?= avrdude -c usbasp -p $(MCU_TARGET) -U flash:w:image.hex -include ../../make/avr.mk +############################################################################# +# Rules +all: $(OUT).elf lst text eeprom +clean: + rm -rf $(OUT) *.o *.d *.lst *.map $(OUT).hex $(OUT)_eeprom.hex *.bin *.srec + rm -rf *.srec $(OUT).elf + +flash: $(OUT).hex + $(FLASHCMD) + +############################################################################# +# Building Rules +$(OUT).elf: $(OBJ) + $(MCU_CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +%.o: %.c + $(MCU_CC) $(CFLAGS) -c $< + +%.o: %.S + $(MCU_CC) -mmcu=$(MCU_TARGET) $(ASFLAGS) -c $< + +lst: $(OUT).lst + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +# Rules for building the .text rom images +text: hex bin srec + +hex: $(OUT).hex +bin: $(OUT).bin +srec: $(OUT).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +# Rules for building the .eeprom rom images + +eeprom: ehex ebin esrec + +ehex: $(OUT)_eeprom.hex +ebin: $(OUT)_eeprom.bin +esrec: $(OUT)_eeprom.srec + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ + +DEPS := $(wildcard *.d) +ifneq ($(DEPS),) +include $(DEPS) +endif diff --git a/main.c b/main.c index 021b271..5d313cc 100755 --- a/main.c +++ b/main.c @@ -1,203 +1,245 @@ -#include -#include -#include -#include -#include -#include -#include - - -#define PW(a) pgm_read_word(&(a)) - -#ifdef ATMEGA8 -#define MASK_RED (1<0;ms--){ - while(!(TIFR&0x80));//while(i--) asm volatile ("nop"); //wait for compare match flag - TIFR=0x80; //reset flag - } -} - -void fadeToColor(uint8_t *fadeColor, uint8_t steps) { - uint8_t i; - int16_t helpColor[3], addColor[3]; - - if (!steps) - return; - - helpColor[0] = color[0]*128; - helpColor[1] = color[1]*128; - helpColor[2] = color[2]*128; - - addColor[0] = ((fadeColor[0]*128)-helpColor[0])/(int16_t)steps; - addColor[1] = ((fadeColor[1]*128)-helpColor[1])/(int16_t)steps; - addColor[2] = ((fadeColor[2]*128)-helpColor[2])/(int16_t)steps; - - for (i = 0; i < steps; ++i) { - helpColor[0] += addColor[0]; - helpColor[1] += addColor[1]; - helpColor[2] += addColor[2]; - color[0] = (helpColor[0]+64)/128; - color[1] = (helpColor[1]+64)/128; - color[2] = (helpColor[2]+64)/128; - wait(20); - } - color[0] = fadeColor[0]; - color[1] = fadeColor[1]; - color[2] = fadeColor[2]; -} - -void mainColors() { - uint8_t i; - for (i = 0; i < 255; i++) { - color[0] = 255-i; - color[1] = i; - wait(20); - } - for (i = 0; i < 255; i++) { - color[1] = 255-i; - color[2] = i; - wait(20); - } - for (i = 0; i < 255; i++) { - color[2] = 255-i; - color[0] = i; - wait(20); - } -} - -void someColors() { - fadeToColor((uint8_t[]){255, 255, 255}, 128); - wait(3000); - fadeToColor((uint8_t[]){150, 34, 44}, 128); - wait(3000); - fadeToColor((uint8_t[]){255, 255, 0}, 128); - wait(3000); - fadeToColor((uint8_t[]){255, 0, 255}, 128); - wait(3000); - fadeToColor((uint8_t[]){0, 255, 255}, 128); - wait(3000); - fadeToColor((uint8_t[]){255, 0, 0}, 128); -} - -#define BIT_S(var,b) ((var&(1< +#include +#include +#include +#include +#include + +#define PW(a) pgm_read_word(&(a)) + +#ifdef __AVR_ATmega8__ +# define MASK_RED (1<0; ms--) { + while(!(TIFR&0x80)); // wait for compare match flag + TIFR=0x80; // reset flag + } +} + +void fadeToColor(uint8_t *fadeColor, uint8_t steps) { + uint8_t i; + int16_t helpColor[3], addColor[3]; + + if (!steps) + return; + + helpColor[0] = color[0]*128; + helpColor[1] = color[1]*128; + helpColor[2] = color[2]*128; + + addColor[0] = ((fadeColor[0]*128)-helpColor[0])/(int16_t)steps; + addColor[1] = ((fadeColor[1]*128)-helpColor[1])/(int16_t)steps; + addColor[2] = ((fadeColor[2]*128)-helpColor[2])/(int16_t)steps; + + for (i = 0; i < steps; ++i) { + helpColor[0] += addColor[0]; + helpColor[1] += addColor[1]; + helpColor[2] += addColor[2]; + color[0] = (helpColor[0]+64)/128; + color[1] = (helpColor[1]+64)/128; + color[2] = (helpColor[2]+64)/128; + wait(20); + } + color[0] = fadeColor[0]; + color[1] = fadeColor[1]; + color[2] = fadeColor[2]; +} + +void mainColors() { + uint8_t i; + for (i = 0; i < 255; i++) { + color[0] = 255-i; + color[1] = i; + wait(20); + } + for (i = 0; i < 255; i++) { + color[1] = 255-i; + color[2] = i; + wait(20); + } + for (i = 0; i < 255; i++) { + color[2] = 255-i; + color[0] = i; + wait(20); + } +} + +void someColors() { + fadeToColor((uint8_t[]){255, 255, 255}, 128); + wait(3000); + fadeToColor((uint8_t[]){150, 34, 44}, 128); + wait(3000); + fadeToColor((uint8_t[]){255, 255, 0}, 128); + wait(3000); + fadeToColor((uint8_t[]){255, 0, 255}, 128); + wait(3000); + fadeToColor((uint8_t[]){ 0, 255, 255}, 128); + wait(3000); + fadeToColor((uint8_t[]){255, 0, 0}, 128); +} + +#define BIT_S(var,b) ((var&(1<