やった。
<Arduino.h>
が鬼門。
main.cc
#include <avr/io.h>
#include <util/delay.h>
void setup() {
DDRB |= 1 << 5;
}
void loop() {
PORTB |= 1 << 5;
_delay_ms(1000);
PORTB ^= 1 << 5;
_delay_ms(1000);
}
[[noreturn]]
auto main() -> int {
setup();
for(;;) loop();
}
Makefile
CXX = avr-c++
OBJCOPY = avr-objcopy
CXXFLAGS = -O2 -mmcu=atmega328p -DF_CPU=16000000L
ADFLAGS = -p atmega328p -c arduino -D
PORT = /dev/ttyUSB0
all: main.hex
clean:
rm -f main.hex main *.o
main.hex: main
$(OBJCOPY) -O ihex $< $@
upload: main.hex
avrdude $(ADFLAGS) -P $(PORT) -U flash:w:$<:i