Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АТПиП_курсач карсак.docx
Скачиваний:
10
Добавлен:
19.09.2019
Размер:
692.51 Кб
Скачать

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/ - Загл. с экрана. Яз. рус.

32