Пример программы, приведенной в шаблоне, выполняет простую функцию - мигание светодиодом, подключенным к выводу PB5 с использованием прерывания таймера. Также оставлен код (функция func()
в файле functions.c
) для мигания светодиодом без использования таймера.
Для компиляции программ на языке C для микроконтроллеров AVR используется AVR GCC toolchain.
- Тулчейн AVR GCC для Windows можно скачать, например, здесь (GitHub).
- Тулчейн необходимо распаковать в директорию
c:\avr-gcc
. - Добавить директорию
c:\avr-gcc\bin
в переменную средыpath
. - Склонировать себе этот репозиторий.
Исходники проекта хранятся в папке src
. Заголовочные файлы в inc
. Скомпилированные файлы будут лежать в папке build
.
Для сборки проекта необходимо во встроенном терминале VSCODE (Ctrl+Shift+`) выполнить команду
make
В результате в папке buld
будут созданы следующие файлы: сама прошивка .hex
, EEPROM .epp
, ассемблерный листинг .lss
.
Для прошивки микроконтррллера испольуется следующая команда:
make prog
Note
Перед выполнением данной команды необходимо указать правильный порт программатора Avrdude, к которому подключена плата arduino. См. опцию PORT
в файле Makefile
.
Note
При добавлении новых исходных файлов в Makefile
в переменную C_SOURCES
добавить используемые *.c
файлы.
Другие цели сборки:
make read_eeprom
- считает содержимое EEPROM памяти микроконтроллера;make write_eeprom
- запишет память EEPROM микроконтроллера;make size
- покажет размер прошивки;make analyze
- анализ структуры пришивки;make clean
- очистка.
При необходимости можно изменить имя проекта. Для этого исправить имя main
на требуемое.
- В файле
.vscode\c_cpp_properties.json
отредактировать строчку:
"name": "main",
- В файле
Makefile
отредактировать строчку:
TARGET = main
- Переименовать главный файл проекта
src\main.c
.
- В файле
.vscode\c_cpp_properties.json
отредактировать строчку, указав используемый микроконтроллер:
"__AVR_ATmega328P__"
- В файле
Makefile
отредактировать строчки, указав используемый микроконтроллер:
# название контроллера для компилятора
MCU = atmega328p
...
# параметры для AVRDUDE
DUDE_MCU = m328p
...
# DEFINы
DEFINES = \
-D__AVR_ATmega328P__ \
- В файле
.vscode\c_cpp_properties.json
отредактировать строчку, указав частоту в герцах:
"F_CPU 16000000UL",
- В файле
Makefile
отредактировать строчку, указав частоту в герцах:
-DF_CPU=16000000UL
- В файле
.vscode\c_cpp_properties.json
проверить правильность пути до компилятора:
"includePath": [
...
"c:/avr-gcc/avr/include/"
...
"compilerPath": "c:/avr-gcc/bin/avr-gcc.exe",
- В файле
Makefile
проверить правильность пути до компилятора:
# путь к каталогу с GCC
AVRCCDIR = c:/avr-gcc/bin/
...
# пути к заголовочным файлам
C_INCLUDES = \
-Ic:/avr-gcc/avr/include \