Создание проекта и компиляция



Перед выполнением этого шага, убедиться, что у вас уже создана папка проекта и правильный makefile, как это было указано на этапе 1 Предположим, что папка проекта у располагается в C:\WAvrPrj\Prj . На самом деле, путь может быть любым, но для определенности допустим, что он такой, как указано. В этой папке уже располагается созданный makefile. Оформление проекта. Для этого можно, использовать любой текстовый редактор или IDE, но в пакете WinAVR имеется качественный блокнот с поддержкой инструментов командной строки, возможностью управления проектами и подсветкой синтаксиса - "Programmers Notepad". К тому же, при установке WinAVR этот блокнот автоматически конфигурируется для работы с инструментами среды.

Запустить "Programmers Notepad [WinAVR]". Далее, по шагам:

 

2.1 Выбирать пункт меню "File->New->Project", далее открывается следующее диалоговое окно

Выбрать имя будущего проекта и папку для его размещения (предположим, мы назвали проект "my_project" и разместили его в "C:\WAvrPrj\Prj").

2.2 В окне проектов справа вы увидите структуру вновь созданного проекта. Пока в нем нет ни одного файла.

Если у вас есть готовые исходники, вы можете кликнуть правой кнопкой мыши по названию проекта и выбрать там пункт "Add File", как указано на рисунке. Затем - указываете путь к файлу и жмете "ОК".

Либо создайте новый файл "File->New->C/C++". Сохранить его в папке проекта (пункт меню "File->Save As..."), а затем добавить его к проекту так, как было описано выше.

 

Создать и присоединить к проекту два файла: "main.c" и "main.h" - файл реализации и заголовочный, как в любом проекте на "С".


2.3
Окно проекта будет выглядеть как на рисунке:

 

 

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

2.4 Открыть файл main.c, вставить код программы:

#include <avr/io.h> #include <avr/interrupt.h> #include "main.h"   uint8_t num=0; ISR(TIMER1_OVF_vect) { PORTC=(1<<num); num++; if(num>4) { num=0; } TCNT1=53818; }     int main() {        DDRC=0xFF;        TCCR1B|=(1<<CS12)|(1<<CS10);        TIMSK|=(1<<TOIE1); sei();   while(1)        {        } }

 

 


#define F_CPU 12000000UL
В файл main.h добавить строку

 

В файле заголовков константа F_CPU означает номинал генератора, установленного на плате в разъём J11.  В частности, её значение задаётся в makefile (п. 1.7).

Сначала объявляются библиотеки для подключения необходимых операторов.
<avr/io.h> - настройка параметров ввода-вывода для микроконтроллера. <avr/interrupt.h> - библиотека прерываний микроконтроллера

 

 

Ход работы программы:

Инициализируется и описывается прерывание TIMER 1_ OVP _ vect .

Появление этого прерывания осуществляется при переполнении регистра TCNT 1. TCNT 1 – это 16 битный регистр, хранящий изначальное значение таймера.  

Так как применяемые в лабораторных работах микропроцессоры 8 битные, то максимальное число, которое может быть записано –255.  Для хранения 16 битного числа максимальное значение – 65535.

На плате С51 установлен тактовый генератор 12МГц. Каждую секунду генерируется 12х106 тактовый сигнал ( Ftakt ). Хранить столь большое значение количества тактов физически негде и использовать для подсчетов времени мощный процессор не выгодно. На этот случай применяется механизм предделителя, задача которого разделить тактовую частоту на определенное число перед подачей её на таймер.

Таб.1 используемые способы деления тактового сигнала контроллера ATmega 16

Максимальный коэффициент деления Kp –1024 (не считая внешних тактовых сигналов).

Ftakt / Kp - количество тактов в единицу времени (с учетом предделителя).

12х106/1024=11718 Тактов/сек.

Прерывание срабатывает по переполнению 16 битного регистра, т.е. когда в регистр TCNT 1 будет записано значение, превышающее 65535.

65536 -11718=53818.

 

В однократно исполняемом участке программы int main () все биты порта C (светодиоды D 1- D 8) установлены на вывод;

Настроен предделитель ( TCCR 18);

Регистр установки прерваний по таймеру ( TIMSK ) настроен на прерывание по переполнению.

sei () включает все прерывания в работе программы.

Далее микроконтроллер заходит в бесконечный цикл while (1).

 

 


 

2.5 Сделать компиляцию проекта меню "Tools -> [WinAVR]Make All"

 

В данном случае не было никаких ошибок и предупреждений, и в окне "Output" в низу экрана формируется отчёт об успешной компиляции:

 

2.6 Перейти в проводнике в каталог проекта.

 

.lst и .lss - файлы листинга. Здесь находится ассемблерный код, в который была преобразована программа, с тем, чтобы проверить правильность трансляции.

Если вы только работаете над проектом, то компилируйте его без оптимизации - иначе невозможно будет разобраться в этих файлах

 .o - объектный файл .elf - файл программы, пригодный для отладки в некоторых отладчиках и эмуляторах .eep и .hex - файлы прошивки EEPROM и Flash, пригодные для записи в микроконтроллер с помощью одного из программаторов.

 В WinAVR есть встроенный универсальный программатор AVRDude. Для того, чтобы начать полноценно программировать под WinAVR, нужно обладать знаниями языка "С", изучить документацию на AVRLibC, идущую в комплекте с WinAVR, а также документацию на используемый микроконтроллер.

 

 


Дата добавления: 2019-01-14; просмотров: 514; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!