From: Martin Mares Date: Sun, 12 Mar 2017 00:32:47 +0000 (+0100) Subject: Sphinx: init X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=70161d341f3e369ff09c2e8ab0512f0e73f3cd56;hp=23578f82f8ad51c14dc23467d41a9f80a7ff49aa;p=misc.git Sphinx: init --- diff --git a/sphinx/Makefile b/sphinx/Makefile new file mode 100644 index 0000000..bf9b8ea --- /dev/null +++ b/sphinx/Makefile @@ -0,0 +1,21 @@ +all: sphinx.flash + +GCF=-Os -mmcu=attiny13 -std=gnu99 -Wall -W -Wno-parentheses + +%.flash: %.hex + avrdude -p t13 -c usbtiny -v -U flash:w:$<:i + +%.hex: %.exe + avr-objcopy -j .text -j .data -O ihex $< $@ + +%.exe: %.c + avr-gcc $< -o $@ $(GCF) + +%.s: %.c + avr-gcc $< -o $@ $(GCF) -S + +clean: + rm -f *~ *.o *.s *.exe *.hex + +.SECONDARY: +.PHONY: all clean diff --git a/sphinx/sphinx.c b/sphinx/sphinx.c new file mode 100644 index 0000000..7355d0b --- /dev/null +++ b/sphinx/sphinx.c @@ -0,0 +1,64 @@ +/* + * Asking Riddles at the Entrance to Garage + * + * (c) 2017 Martin Mares + */ + +/* + * Pin assignment (component side view; "*" marks inverted signals) + * + * +-------------------+ + * | RESET* VCC | + * button | PB3 SCK | + * output | PB4 MISO | + * | GND PB0=MOSI | diagnostic LED* + * +-------------------+ + */ + +#define F_CPU 1200000UL + +#include +#include +#include + +typedef uint8_t byte; + +#define B(x) (1U<<(x)) + +static void sleep(uint16_t millisec) +{ + while (millisec) { + _delay_ms(1); + millisec--; + } +} + +int main(void) +{ + DDRB |= B(PB0); // PB0: output + DDRB |= B(PB4); // PB4: output + PORTB &= ~B(PB3); // PB3: input, no pullup + + for (byte i=0; i<5; i++) { + PORTB &= ~B(PB0); + sleep(100); + PORTB |= B(PB0); + sleep(100); + } + + for (;;) { + sleep(10); + if (PINB & B(PB3)) { + PORTB &= ~B(PB0); + PORTB |= B(PB4); + } else { + PORTB |= B(PB0); + PORTB &= ~B(PB4); + } + } + + for (;;) { + set_sleep_mode(SLEEP_MODE_PWR_DOWN); + sleep_mode(); + } +}