Первая версия

24V
Daniil A. Smirnov 2023-05-12 22:24:35 +03:00
commit c893321b67
5 changed files with 600 additions and 0 deletions

2
.gitignore vendored 100644
View File

@ -0,0 +1,2 @@
/fw/out/
/fw/obj/

BIN
GW_bat24.sal 100644

Binary file not shown.

53
fw/Makefile 100644
View File

@ -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)

544
fw/perf.c 100755
View File

@ -0,0 +1,544 @@
#include <avr/io.h>
#include <util/delay.h>
#define OmegaDDR DDRB
#define OmegaPIN PINB
#define OmegaPort PORTB
#define OmegaPINnum PB0
int main(void)
{
OmegaDDR &= ~(1<<OmegaPINnum);
OmegaPort &= ~(1<<OmegaPINnum);
while(1)
{
//******************************************************************* 1
OmegaDDR |= (1<<OmegaPINnum);
OmegaPort |= (1<<OmegaPINnum);
_delay_ms(3);
OmegaPort &= ~(1<<OmegaPINnum); // 1
_delay_us(399);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 2
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 3
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 4
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 5
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 6
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 7
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 8
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 9
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 10
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 11
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 12
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 13
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 14
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 15
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 16
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 17
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 18
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 19
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 20
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 21
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 22
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 23
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 24
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 25
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
OmegaDDR &= ~(1<<OmegaPINnum);
_delay_ms(100);
//******************************************************************* 2
OmegaDDR |= (1<<OmegaPINnum);
OmegaPort |= (1<<OmegaPINnum);
_delay_ms(3);
OmegaPort &= ~(1<<OmegaPINnum); // 1
_delay_us(399);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 2
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 3
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 4
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 5
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 6
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 7
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 8
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 9
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 10
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 11
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 12
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 13
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 14
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 15
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 16
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 17
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 18
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 19
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 20
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 21
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 22
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 23
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 24
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 25
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
OmegaDDR &= ~(1<<OmegaPINnum);
_delay_ms(100);
//******************************************************************* 3
OmegaDDR |= (1<<OmegaPINnum);
OmegaPort |= (1<<OmegaPINnum);
_delay_ms(3);
OmegaPort &= ~(1<<OmegaPINnum); // 1
_delay_us(399);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 2
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 3
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 4
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 5
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 6
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 7
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 8
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 9
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 10
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 11
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 12
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 13
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 14
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 15
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 16
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 17
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 18
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 19
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 20
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 21
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 22
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 23
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 24
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 25
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
OmegaDDR &= ~(1<<OmegaPINnum);
_delay_ms(120);
//******************************************************************* 4
OmegaDDR |= (1<<OmegaPINnum);
OmegaPort |= (1<<OmegaPINnum);
_delay_ms(3);
OmegaPort &= ~(1<<OmegaPINnum); // 1
_delay_us(399);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 2
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 3
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 4
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 5
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 6
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 7
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 8
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 9
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 10
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 11
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 12
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 13
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 14
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 15
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 16
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 17
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 18
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 19
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 20
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 21
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 22
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 23
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 24
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 25
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
OmegaDDR &= ~(1<<OmegaPINnum);
_delay_ms(200);
//******************************************************************* 5
OmegaDDR |= (1<<OmegaPINnum);
OmegaPort |= (1<<OmegaPINnum);
_delay_ms(3);
OmegaPort &= ~(1<<OmegaPINnum); // 1
_delay_us(399);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 2
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 3
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 4
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 5
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 6
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 7
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 8
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 9
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 10
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 11
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 12
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 13
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 14
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 15
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 16
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 17
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 18
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 19
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 20
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 21
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 22
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 23
_delay_us(206);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 24
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
_delay_us(93);
OmegaPort &= ~(1<<OmegaPINnum); // 25
_delay_us(107);
OmegaPort |= (1<<OmegaPINnum);
OmegaDDR &= ~(1<<OmegaPINnum);
_delay_ms(200);
}
}

1
readme.md 100644
View File

@ -0,0 +1 @@
Эмулятор АКБ GreenWorks 24V для работы перфоратора с неродной батареей