2.3 Программирование стенда sdk-1.1
Опишем последовательность выполнения операций. Для начала нужно подключить стенд SDK-1.1 к COM-порту компьютера. Очень важно, чтобы стенд во время подключения был выключен, так как это может привести к выходу из строя стенда или COM-порта компьютера.
Для программирования стенда может использоваться любой транслятор ассемблера или C для ядра 8051, например, пакет μVision (Keil Software).
Основные этапы программирования стенда: подготовка программы в текстовом редакторе или среде программирования; транслирование исходного текста и получение загрузочного HEX-модуля программы; подготовка и загрузка HEX-модуля в стенд через интерфейс RS232C с помощью поставляемых инструментальных систем (под подготовкой понимается добавление в конец модуля строчки со стартовым адресом программы, то есть адреса, по которому передается управление после загрузки в стенд); прием и обработка HEX-модуля резидентным загрузчиком HEX202; передача управления загруженной программе.
На рисунке 15 представлены этапы программирования стенда SDK-1.1.
Рисунок 15 – Этапы программирования стенда SDK-1.1
2.3.1 Создание проекта в Keil μVision2
Подготовим программу в среде программирования Keil μVision2. Для этого откроем эту среду. Ее внешний вид представлен на рисунке 16.
Рисунок 16 – Среда программирования Keil μVision2
Создадим новый проект с названием volt. Для этого в основном меню программы откроем вкладку Project, выберем команду New Project (Project ► New Project). Проект сохраним в отдельную папку Карсаков_вольт на локальном диске С. Выполнение этих команд показано на рисунке 17.
Рисунок 17 – Создание проекта
После нажатия кнопки «Сохранить» появляется окно, в котором из выпадающего списка нужно выбрать модель микроконтроллера фирмы Analog Devices ADuC812, как это показано на рисунке 18.
Рисунок 18 - Выбор микроконтроллера
После нажатия кнопки OK создается проект. Необходимо создать новый файл с расширением «*.c», в котором будет написана программа для SDK-1.1. Для создания файла выполняется команда File ► New, для его сохранения - команда File ► Save. Сохраним файл под названием main.c. Для добавления этого файла к проекту, вызовем контекстное меню на списке Source Group 1, и выберем команду Add Files to Group “Source Group 1”, как это показано на рисунке 19.
Рисунок 19 - Добавление файла к проекту
Далее в диалоговом окне выбираются файлы, которые требуется подключить к проекту, в нашем случае это файл main.c, и нажимается кнопка Add, как показано на рисунке 20.
Рисунок 20 - Добавление файла main.c к проекту
После добавления файла main.c к проекту можно приступать к написанию программы. Для этого воспользуемся готовыми библиотеками, поставляемыми вместе со стендом SDK-1.1. Библиотека представляет собой набор файлов языка C с расширениями «*.h» (заголовочные файлы) и с расширением «*.c» (файлы-исходники). Для этой работы нам потребуются файлы ADuC812.h, max.c, max.h, adc.c, adc.h. Их требуется скопировать в рабочую папку с проектом, и подключить к проекту. Подключение файлов аналогично подключению main.c.
2.3.2 Составление текста программы
По заданию необходимо написать программу повторителя напряжения, который выводит на аналоговый вход такое количество напряжения, которое подается на аналоговый вход.
Т екст программы приведен ниже:
#
Подключение библиотек
include "ADuC812.h"#include "max.h"
#include "adc.h"
void main()
{
Объявление переменных
unsigned char ch, wait, mask, Num;unsigned short val, reg, reg1;
unsigned int t;
Прекращение работы ЦАП, установка режима (8-битный/12-битный),
обнуление регистров данных DACxH, DACxL. включение обоих каналов.
DACCON &= ~0x03;DACCON &= ~0x80;
DAC0H = DAC0L = 0;
DAC1H = DAC1L = 0;
DACCON |= 0x60;
DACCON |= 0x1C;
DACCON |= 0x03;
for(wait = 0; wait < 30; ++wait);
Инициализация АЦП (нулевой канал),
init_adc();
Включение канала ЦАП
mask = 0x01;DACCON |= mask;
while (1)
Получение значения однократного
преобразования АЦП
{reg=get_voltage(0);
reg1 = 27-reg;
Подача нужного напряжения на один из каналов ЦАП
val = reg1<<2;DAC0H = val >> 8;
DAC0L = val;
}
}
Сохраняем написанную программу.
2.3.3 Компиляция, запись и запуск программы на стенде SDK 1.1
Для установки параметров компиляции проекта, открывается окно опций, с помощью кнопки на панели инструментов. Требуется сделать два важных изменения. Первое во вкладке Output, поставить флажок Create HEX File для того, чтобы при компиляции проекта был создан hex-файл. Это изменение показано на рисунке 21.
Рисунок 21 – Установка флажка Create HEX File
Второе изменение во вкладке BL51 Locate - задается адрес оперативной памяти микроконтроллера, начиная с которого будет размещаться программа. В поле Code ввести значение 0x2100, как это показано на рисунке 22.
Рисунок 22 – Установка адреса оперативной памяти
После нажатия кнопки OK, требуется сохранить проект. Далее проект собирается и компилируется с помощью команды Project ► Rebuild all target files. Или нажатием кнопки Rebuild all target files на панели инструментов, показанной на рисунке 23.
Рисунок 23 - Кнопка Rebuild all target files
В рабочей папке с проектом будет создан файл volt.hex, который будет загружаться в память микроконтроллера. Для загрузки используется инструментальная система для MS-DOS T167b. Ее нужно скопировать в папку с проектом. Система T167b представляет собой набор средств для работы с различными системами, она имеет множество команд. Основные команды для SDK-1.1, представлены в таблице 4.
Таблица 4 – Основные команды для SDK-1.1
Команда |
Действие |
OPENCHANNEL |
Открытие COM-порта |
CLOSECHANNEL |
Закрытие COM-порта |
TERM |
Включение эмулятора терминала |
LOADHEX+ |
HEX-загрузка |
ADDHEXSTART |
Добавление стартового адреса в конец HEX-файла |
BYE |
Выход из T167b |
Команда OPENCHANNEL (com, baud->) - открытие COM-порта.
Аргументы: com – номер COM-порта (1,2,3,4); baud – делитель частоты для получения нужной скорости обмена в порту.
Наиболее часто используемые делители:
24: 4800 бит/с;
12: 9600 бит/с;
6: 19200 бит/с;
3: 38400 бит/с;
2: 57600 бит/с;
1: 115200 бит/с.
Запускаем систему T167b. Вводим команду:
1 12 openchannel
Нажимаем Enter. На экране должно появиться уведомление об открытии соответствующего COM-порта на заданной скорости, как это показано на рисунке 24.
Рисунок 24 – Выполнение команды OPENCHANNEL
Затем вводится команда:
0x2100 0x0 addhexstart volt.hex
В конец файла volt.hex добавляется строка, которая указывает, что программу следует записать в RAM микроконтроллера, начиная с адреса 0x2100, с нулевого сегмента.
Следующая команда:
loadhex+ volt.hex
Загружает файл в оперативную память микроконтроллера. После нажатия Enter происходит загрузка, которая занимает несколько секунд. Потом на экран выводится OK, что подтверждает удачную загрузку, окно загрузчика представлено на рисунке 25.
Рисунок 25 – Загрузка файла volt.hex в память микроконтроллера
После загрузки, микроконтроллер начинает выполнять записанную программу.
ЗАКЛЮЧЕНИЕ
Результатом выполнения данной работы является программа для стенда SDK-1.1. Выполнение данной работы позволило приобрести базовые навыки работы с микроконтроллером AduC812, со стендом SDK-1.1, модулем SDX-09, а так же с программной средой Keil μVision2.
Работа в программной среде Keil μVision2 позволило более качественно усвоить приемы программирования на языке СИ, которые позволяют работать со многими устройствами, входящими в состав стенда SDK-1.1.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 Встроенные вычислительные системы [Электронный ресурс] / Режим доступа: http://embedded.ifmo.ru/index.php/ - Загл. с экрана. Яз. рус..
2 Научно-производственная фирма «ЛМТ» [Электронный ресурс] / Режим доступа: http://lmt.ifmo.ru/ - Загл. с экрана. Яз. рус.