роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  

Простейший робот
Схема и описание простого робота на одной микросхеме. Робот может двигаться на свет или следовать за рукой.  

Схема и описание первого проекта на микроконтроллере AVR
"Hello, world!" для микроконтроллера.  

Робот на микроконтроллере AVR
Схема робота на микроконтроллере. Примеры программ.  

MAKEFILE И КОМПИЛЯЦИЯ ПРОГРАММЫ



Исходный текст программы


Сначала создадим на диске папку, где будут находиться файлы вашего проекта.

Запустим редактор программиста Programmers Notepad [WinAVR]. В меню редактора выберем File -> New -> C/C++ и напишем программу на языке Си.


/************************************************

ПРИМЕР МИГАНИЯ СВЕТОДИОДАМИ :: MYROBOT.RU

*************************************************/ 


   #define F_CPU 1000000UL  // 1 MHz
   #include <avr/io.h>
   #include <util/delay.h>
   
   int main(void)              // начало основой программы
   {
   
   DDRD = 0xff;            // все выводы порта D сконфигурировать как выходы

        while (1) {              // Бесконечный цикл

			PORTD = 0xff; // установить "1" на всех линиях порта D

			_delay_ms(250);   // Ждем 0.25 сек.

			PORTD = 0x00;  // установить "0" на всех линиях порта D

			_delay_ms(250);   // Ждем 0.25 сек.

		}       // закрывающая скобка бесконечного цикла

   }      // закрывающая скобка основной программы

Сохраним листинг программы в предварительно созданной нами папке в файле с именем "my_test.c" (каждый проект лучше сохранять в отдельной папке). Имя файла может быть любым без пробелов и иметь расширение ".c".


Создание файла Makefile


В WinAVR исходный текст программы компилируется при помощи утилиты make.exe, которая находится в папке WinAVR\utils\bin. Make.exe контролирует генерацию исполняемых файлов из исходного кода программы. Для управления работой этой утилиты используют make-файлы. Make-файл сообщает компилятору, какие команды запускать, какие файлы компилировать и линковать, какой выходной код генерировать и т. д.

После установки WinAVR в папке WinAVR\sample можно найти шаблон с именем Makefile, который нужно скопировать в папку с проектом и уже там редактировать.

Внимание: Makefile и компилируемый файл (в нашем случае my_test.c) должны находиться в одной папке.

Откроем Makefile в редакторе Programmers Notepad и отредактируем несколько важных для компилятора инструкций.

Во-первых, обязательно нужно указать, для какого типа микроконтроллера мы хотим получить выходной код. Найдем следующие строки:

# MCU name
MCU = atmega128

Первая строка - комментарий, а во второй вместо atmega128 пишем тот микроконтроллер, который нас интересует (например, atmega8, attiny2313, attiny26).

Частота тактирования микроконтроллера в герцах определяется в строках:

# Processor frequency.
F_CPU = 8000000

Вместо 8000000 напишем 1000000, что будет составлять 1 мегагерц (1 МГц).
Должно получиться так:

# Processor frequency.
F_CPU = 1000000

Имя проекта, а соответственно и имя исходного файла с функцией main и выходные файлы с расширениями hex и cof, определяется в следующих строках:

# Target file name (without extension).
TARGET = testpp

Здесь вместо testpp пишем нужное имя проекта (в нашем случае my_test).

Ищем строки:

# List C source files here. (C dependencies are automatically generated.)
SRC =

После знака "равно" пишем $(TARGET).c, чтобы получилось

# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c

Ищем строки:

# List C++ source files here. (C dependencies are automatically generated.)
CPPSRC = main.cpp

Стираем запись после знака "равно". Должно получиться:

# List C++ source files here. (C dependencies are automatically generated.)
CPPSRC =

В разделе Optimization level проверяем уровень оптимизации. Можно оставить все как есть (s - оптимизирует выходной файл по размеру).

# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s

После этого, немного ниже, ищем раздел:

#---------------- Programming Options (avrdude) ----------------

Ищем строку:

AVRDUDE_PROGRAMMER = stk500

Заменяем на:

AVRDUDE_PROGRAMMER = usbasp

В дальнейшем в статьях раздела "Шаг за шагом" мы будем опираться на вариант программатора USBASP.

Ищем строку:

AVRDUDE_PORT = com1     # programmer connected to serial device

Заменяем на:

AVRDUDE_PORT = usb

Программатор USBASP использует USB-порт.

Вы можете использовать более удобный шаблон Makefile, в котором часто изменяемые опции вынесены в начало файла. В простейшем случае для использования этого Makefile'а достаточно скопировать его в папку с проектом и изменить, если потребуется, строки в разделе "ОСНОВНЫЕ ИНСТРУКЦИИ".

Кроме того, в состав пакета WinAVR входит утилита MFile, которая помогает правильно составить или отредактировать Makefile. Запустить утилиту можно через меню "Пуск -> Программы -> WinAVR -> MFile [WinAVR]"


Компиляция программы


Откройте в редакторе Programmers Notepad исходный текст программы my_test.c, в меню выберете Tools -> [WinAVR] Make All. Команда Make All выполняет компиляцию исходного кода программы и в случае отсутствия ошибок генерирует файл, который можно прошивать в микроконтроллер AVR.

Внизу, в окне "Output", должно появиться сообщение об успешной компиляции:



А в папке вашего проекта должны появиться следующие файлы:



Самым главным из этих файлов для нас будет файл my_test.hex. В нем хранится шестнадцатиричный код для загрузки в память программ (Flash ROM) микроконтроллера.

:1000000012C02BC02AC029C028C027C026C025C0C6
:1000100024C023C022C021C020C01FC01EC01DC0DC
:100020001CC01BC01AC011241FBECFE5D4E0DEBF28
:10003000CDBF10E0A0E6B0E0E0E8F0E002C005903F
:100040000D92A036B107D9F710E0A0E6B0E001C0EC
:100050001D92A036B107E1F701C0D2CFCFE5D4E0C1
:10006000DEBFCDBF8FEF81BB282FE0E0F0E022BBE9
:10007000CF010197F1F712BACF010197F1F7F7CF4E
:00000001FF
В файле my_test.eep хранится шестнадцатиричный код для загрузки в энергонезависимую память данных (EEPROM).

Следует помнить, что после каждого изменения кода программа должна быть перекомпилирована, т.е. в редакторе Programmers Notepad выполнено Tools -> [WinAVR] Make All.

Если проект будет состоять из нескольких файлов и в одном из них что-то изменили, то при повторной компиляции будет компилироваться только измененный файл. Для полной перекомпиляции необходимо вначале выполнить команду Tools -> [WinAVR] Make Clean, а затем команду [WinAVR] Make All. Команда Make Clean удаляет все файлы, сгенерированные предыдущей командой Make All.




myROBOT.ru Это оригинальная статья myROBOT.ru
Постоянный адрес статьи: http://myrobot.ru/stepbystep/mc_makefile.php




Файлы:

Исходный текст программы "ПРИМЕР МИГАНИЯ СВЕТОДИОДАМИ"
my_test.c

Шаблон Makefile от myROBOT
Makefile







Статьи раздела
МИКРОКОНТРОЛЛЕРЫ

Все статьи курса
Что такое микроконтроллер.

Микроконтроллеры: краткий обзор.

Микроконтроллеры AVR.

Устройство микроконтроллера AVR.

Модели семейства AVR.
Программирование микроконтроллеров.

Среда разработки WinAVR.

Makefile и компиляция программы.

Программатор AVR. AVRDUDE. USB-программатор USBasp.

Первый проект на микроконтроллере AVR.







Copyright © myrobot.ru, 2005-2023


Яндекс.Метрика   Рейтинг@Mail.ru