From d1ccc84b8f5c03531ee1c9060d1b42b73000dfaa Mon Sep 17 00:00:00 2001 From: Gregor Riepl Date: Wed, 2 Dec 2020 12:25:32 +0100 Subject: [PATCH] Added source code --- Makefile | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ main.c | 41 +++++++++++++++++++++++ main.o | Bin 0 -> 6900 bytes 3 files changed, 139 insertions(+) create mode 100644 Makefile create mode 100644 main.c create mode 100644 main.o diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c241455 --- /dev/null +++ b/Makefile @@ -0,0 +1,98 @@ +PRG = badge +OBJ = main.o +OPTIMIZE = -Os -std=gnu99 +PROGRAMMER = usbtiny + +MCU_TARGET = attiny13a +DEFS = -DF_CPU=1000000UL + +INCLUDES = -I. +LIBS = + +#LFUSE = +#HFUSE = +#EFUSE = + +# You should not have to change anything below here. + +CC = avr-gcc +DUDE = avrdude + +HOST_CC = gcc +HOST_CFLAGS = -O0 -g +HOST_LDFLAGS = + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) $(INCLUDES) +override LDFLAGS = -Wl,-Map,$(PRG).map + +DUDEFLAGS = -c $(PROGRAMMER) -p $(MCU_TARGET) + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: $(PRG).elf lst text eeprom + +$(PRG).elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +clean: + rm -rf $(OBJ) $(PRG).elf $(PRG).lst $(PRG).map $(PRG).bin $(PRG).hex $(PRG).srec $(PRG)_eeprom.bin $(PRG)_eeprom.hex $(PRG)_eeprom.srec $(EXTRA_CLEAN_FILES) + +lst: $(PRG).lst + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +# Rules for flashing, EEPROM writing and fuse bit setting + +flash: $(PRG).hex $(PRG)_eeprom.hex + $(DUDE) $(DUDEFLAGS) -U eeprom:w:$(PRG)_eeprom.hex:i -U flash:w:$(PRG).hex:i + +flashprg: $(PRG).hex + $(DUDE) $(DUDEFLAGS) -U flash:w:$(PRG).hex:i + +flasheep: $(PRG)_eeprom.hex + $(DUDE) $(DUDEFLAGS) -U eeprom:w:$(PRG)_eeprom.hex:i + +fuse: + $(DUDE) $(DUDEFLAGS) -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m -U efuse:w:$(EFUSE):m + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PRG).hex +bin: $(PRG).bin +srec: $(PRG).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: $(PRG)_eeprom.hex +ebin: $(PRG)_eeprom.bin +esrec: $(PRG)_eeprom.srec + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ \ + || { echo empty $@ not generated; exit 0; } + diff --git a/main.c b/main.c new file mode 100644 index 0000000..f41ef46 --- /dev/null +++ b/main.c @@ -0,0 +1,41 @@ +/** + * Copyright CCC Basel 2020. + * + * This documentation describes Open Hardware and is licensed under the + * CERN OHL v. 1.2. + * + * You may redistribute and modify this documentation under the terms of the + * CERN OHL v.1.2. (http://ohwr.org/cernohl). + * + * This documentation is distributed + * WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, + * SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Please see the CERN OHL v.1.2 for applicable conditions. + */ + +#include +#include +#include + +void init() { + PORTB = 0; + DDRB = _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4); +} + +void loop() { + for (uint8_t i = 0; i < 5; i++) { + PORTB = _BV(i); + _delay_ms(500); + } +} + +int main() { + init(); + + while (1) { + loop(); + } + + return 0; +} diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..4647e80fa45d0a5a2ddd18a30241f590c7c93885 GIT binary patch literal 6900 zcmd6se{5S<6~|AS0NvK1QFWt?2zgsq#Zu}Y&yM584TQ~2J2bXHhg4v~acn0sIB{gZ zlyur?HVO+uXa#MWCT(ci{$SEJAx)EjhChl_@y{mFKPChMp_UaX=O zIL>nme{w7Pecrj>d+xdCTtCOR#}C{$Juompwhho>@^?gMb`w2|&b$al=)-ga?LPJ7 z`6o8FKmFLbjm`95zJ2lg=Wd%>pE@};@GhMudc3doL|^MhU+en$etx$<9mVwo&D}_} z9r4s@n?#jUJOSP>R-$`xT{qlR{7uED6rWRkGbUTdJ-6>Een;^bre7BY(Zh;gRD4$P zWyN<4`mvLWk0@SK{H)?P6u+(bUyAP-^8ODhUQzr*#b*>>P<-77yq}!nImO>q{4>RW zRea+Iy`K@qhZHXQ z{5RqEh5sS^u^V{a%ffl#=wUM>%%3u%1>swT`Tj+IGtKgGXl(wUSNsdb=f%%wW#qqw zKWE+a^?Az<@3R12r}wU@Z$q<(Zg!fKBcighm+2PQQ>KrarxcHko?F~`zfn9QK5sR5 zM7=(}y-dTR`403aoSNs|q#@kD60;9W6tBnZo5WtGpCntbVPLF1Kr|OO55Qn?BHL)WQzzwQhQ@T3=|S z?TCe1EvVGmODoM*qn@JXaySu=WJa^e$&Oq~`*Oi}p;+Sg@eqH#Az_E-l9N;2Tu@>kIY@$xYo$zf+_e&|E_a&?%Z<7lnvWdk*|Cut=P~J+nq^G% zIp-M>RVoN48x$qp0&8(2Ar*Q&xP^dz~+ z9t(L{Q4tQaeZwzhGJTzEk2X+Ogu9gMyChasH07>D-Nkk%bmOuavu`rVEgL7&#U{$y zjh0ojz-zQ8+-}QayG?bY;(<&1xRSE%oJX&f&1bZ{`AWgqSc&Fa?W)<^W{Y9UJbJ0# zUY%<-qHT{YW%j*vNxpSIwvq0SR#lnqRBOgJ%4`H#_N}{6FVhupm-yEGNV@hd{aZzW zO>nYQWG8OfnoPo>LNb*zc?LQ|~pvoqkoIrvYGAW5srii)r`mn8l+FBmOKz}86W ztVlNpC(>MCq(~}^7|&jv6&ZweOr(Xpks?tr79**%A{Ve?#TdU5c8r!25m>k0%-?{p zM=?}djcV7gj~B?xlt{Mp@iK!^tR0g?U2auayP9fiC$G78KDWj!FFoKz^3tP$zLPT$ zj26_4ZpB$nL@+w82l`IVN5ENPr}KJ&QBLdvbr*kcVUSrL_qgTp7ZtipfyANji_&7U z$-`XyL6jA{xZb`fDQ0cl<)ROwoYa)x43ZoY99dZ z?ap^9^~QYnY8vD>Jhsx{{wUQQyU)ht!{SRjUsYXE&an8ahBd$1ZNO=z!XT?Gh{FO3 zG}#SW?XOQ@$7A1(;?q!CY%VO?`y%d3h^84%OhdxYfmXY{;%@p*xf(WG>3XA8J%&l` zFBSXr&?)GGU3d+^&MkqL<&7cFPbq!@oG|)V75~&Qcky{7YdC*r!R(Xy_lhqn zepl(aJa+63FptIY1?@I=<~_##32?^PnfDv}?chVk&itUU^Evpeu`{=fo$I@1?93;O z{WIW`#?JhlvGe)E%f`<9hOy6rPa8Y)TgF}o|HjyvFBo0}|J`Vq-($wPAGht;T$Xn! zPJk0eGpe{~80n(2VO(eiZ|sNpA!Z18E^fRxxbcOVYlKqJAoS9e>KDiQ6RxgM3a2f6Dub#1=aztyKjXX( zZd^aR4!*aa|Br)t4O4h=dkaT?tmA#d8t!A>YwqpS=T+S6X8n!A$a(p1x&kzI4Ete! zvk2BcUF^JB*mZnm95?R literal 0 HcmV?d00001