From c893321b67b28566d8c1885f8bbfa318415de44e Mon Sep 17 00:00:00 2001 From: "Daniil A. Smirnov" Date: Fri, 12 May 2023 22:24:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + GW_bat24.sal | Bin 0 -> 13316 bytes fw/Makefile | 53 +++++ fw/perf.c | 544 +++++++++++++++++++++++++++++++++++++++++++++++++++ readme.md | 1 + 5 files changed, 600 insertions(+) create mode 100644 .gitignore create mode 100644 GW_bat24.sal create mode 100644 fw/Makefile create mode 100755 fw/perf.c create mode 100644 readme.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f41fbe --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/fw/out/ +/fw/obj/ diff --git a/GW_bat24.sal b/GW_bat24.sal new file mode 100644 index 0000000000000000000000000000000000000000..31790106b929c1eb8542f4f04e09a72f6bce0d65 GIT binary patch literal 13316 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 NAvzk`6c6<7e*nnBO633m literal 0 HcmV?d00001 diff --git a/fw/Makefile b/fw/Makefile new file mode 100644 index 0000000..c7227db --- /dev/null +++ b/fw/Makefile @@ -0,0 +1,53 @@ +# Название проекта +PRG=greenworks24_batemulator +# МК +MCU=atmega16 +# Частота МК в герцах +FREQ=8000000UL +# GCC +CC=avr-gcc +# OBJCOPY +OBJCOPY= avr-objcopy +# SIZE +SIZE=avr-size +# Флаги GCC +CFLAGS= -Wall -Os -std=gnu99 -lm +# Флаги LD +LDFLAGS= -Wall -lm +# Папка с промежуточными файлами +OBJDIR=obj +# +OUTDIR=out + +# Cписок .c файлов +C_SRC= \ +perf.c + +# Список объектных файлов (формируется автоматически на основе списка .с файлов) +OBJS=$(C_SRC:.c=.o) +OBJ=$(addprefix $(OBJDIR)/, $(OBJS)) + +.PHONY: all LD DIR clean + +# Выполняем цели в указанном порядке +all: DIR $(C_SRC) $(OBJS) LD + +# Линковка +LD: $(OBJ) + $(CC) $^ -o $(OBJDIR)/$(PRG).elf $(LDFLAGS) -mmcu=$(MCU) + $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock $(OBJDIR)/$(PRG).elf $(OUTDIR)/$(PRG).hex + $(OBJCOPY) -O ihex -j .eeprom $(OBJDIR)/$(PRG).elf $(OUTDIR)/$(PRG).eep + $(SIZE) -C --format=avr --mcu=$(MCU) $(OBJDIR)/$(PRG).elf + +# +%.o: %.c + $(CC) $< -o $(OBJDIR)/$@ $(CFLAGS) -mmcu=$(MCU) -DF_CPU=$(FREQ) -c + +# Создание папок +DIR: + mkdir -p $(OBJDIR) + mkdir -p $(OUTDIR) + +# +clean: + rm -rf $(OBJDIR) $(OUTDIR) diff --git a/fw/perf.c b/fw/perf.c new file mode 100755 index 0000000..e27e6a9 --- /dev/null +++ b/fw/perf.c @@ -0,0 +1,544 @@ +#include +#include + +#define OmegaDDR DDRB +#define OmegaPIN PINB +#define OmegaPort PORTB +#define OmegaPINnum PB0 + +int main(void) +{ + OmegaDDR &= ~(1<