diff options
-rw-r--r-- | Makefile | 12 | ||||
-rw-r--r-- | README.md | 33 | ||||
-rw-r--r-- | led.c | 23 |
3 files changed, 68 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5f11262 --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +DELAY?=1000 + +default: + avr-gcc -DDELAY=${DELAY} -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o led.o led.c + avr-gcc -o led.bin led.o + avr-objcopy -O ihex -R .eeprom led.bin led.hex + +flash: + sudo avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:led.hex + +clean: + rm -f led.o led.hex led.bin diff --git a/README.md b/README.md new file mode 100644 index 0000000..97ebf18 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +Слегка изменённый пример из видео: ![Getting Started with Baremetal Arduino C Programming](https://www.youtube.com/watch?v=j4xw8QomkXs) + +## Необходимые пакеты + +Arch Linux: + +`pacman -S avr-gcc avr-libc avrdude avr-binutils` + + +Ubuntu: + +`apt install avr-libc avrdude binutils-avr gcc-avr` + + +## Использование + +Получение шестнадцатиричного файла для записи: + +`make` + +Запись на устройство: + +`make flash` + +Очистка рабочей директории: + +`make clean` + +Задать частоту мигания в мс можно при помощи переменной окружения DELAY: + +`DELAY=100 make` - задаст частоту мигания в 100 мс; значение по умолчанию - 1000 мс. + +Прочие настройки и параметры меняются вручную в Makefile. @@ -0,0 +1,23 @@ +// Заставляем светодиод мигать +// *тут пояснения* +// https://www.youtube.com/watch?v=j4xw8QomkXs + +#include <avr/io.h> +#include <util/delay.h> + +int main(void) { + // назначаем PORTB5 на "вывод" (output) + DDRB = DDRB | (1 << DDB5); + + // вечный цикл... + while(1) { + // сигнал на PORTB5 + PORTB = PORTB | (1 << PORTB5); + // пауза... + _delay_ms(DELAY); + // сигнал выкл. + PORTB = PORTB & ~(1 << PORTB5); + // пауза... + _delay_ms(DELAY); + } +} |