Разработка программы для лабораторного стенда SDK 1.1
РЕФЕРАТ
Карсаков А.А. Программирование лабораторного
стенда SDK1.1.
Руководитель проекта - доцент Захаров М.В.
Курсовой проект. Пояснительная записка объемом
31 с. содержит 4 таблицы, 25 рисунков, список источников, состоящий из 2
наименований.
Ключевые слова: микроконтроллер,
программирование, регистр, переменная, условие, цикл.
Цель работы - написание программы для
лабораторного стенда SDK 1.1.
Основываясь на знаниях, полученных при
выполнении лабораторных работ, составлен текст программы для стенда SDK 1.1 в
соответствии с заданием. Приложены все необходимые пояснения к данной
программе, а так же приведены порядок написания программы в среде Keil μVision2
и
непосредственно запись программы в микроконтроллер при помощи программы T167B.
ВВЕДЕНИЕ
В настоящее время в связи с бурным и
повсеместным развитием микропроцессорной техники все чаще применяются новые
микроэлектронные устройства.
Малые размеры, относительная простота работы и
программирования, высокое быстродействие, надежность работы - все эти свойства
делают микропроцессорную технику - наиболее перспективной основой для
автоматизации.
В данной работе будет рассмотрена работа с
лабораторным стендом SDK1.1, построенным на базе микроконтроллера AduC812.
Лабораторный комплекс предназначен для освоения студентами архитектуры и
методов проектирования: систем на базе микропроцессоров и однокристальных
микро-ЭВМ, встраиваемых контроллеров и систем сбора данных, периферийных блоков
вычислительных систем. Подготовка программ для микроконтроллера AduC812 осуществляется
на языке программирования СИ на ПК в обычном текстовом редакторе (или средах
программирования, предназначенных для разработки программ под ядро MCS-51),
далее программа компилируется в исполняемый модуль, доставляемый в стенд с
помощью разработанного программного обеспечения.
Все это позволяет сказать, что данный
микроконтроллер возможно запрограммировать в любом месте где есть компьютер с
СОМ-портом и необходимым программным обеспечением.
1.
ОБЩИЕ СВЕДЕНИЯ
1.1
Архитектура учебного лабораторного комплекса SDK-1.1
Учебный лабораторный комплекс SDK-1.1
представляет собой микропроцессорный стенд SDK-1.1, подключенный к
персональному компьютеру через интерфейс RS232C (COM-порт компьютера), и
установленное на ПК инструментальное программное обеспечение. Микропроцессорный
стенд SDK-1.1 построен на базе микроконтроллера AduC812 (вычислительное ядро
MCS-51) и имеет в своем составе разнообразные устройства, предназначенные для
ввода, обработки и вывода информации в цифровом и аналоговом виде. Общий вид
стенда SDK-1.1 представлен на рисунке 1.
Рисунок 1 - Общий вид стенда SDK-1.1
В состав учебного стенда SDK-1.1 входят
следующие компоненты:
микроконтроллер ADuC812BS;
программируемая логическая интегральная схема (ПЛИС)
MAX3064;
внешнее электрически стираемое программируемое
ПЗУ (EEPROM) объемом 256 байт;
внешняя статическая оперативная память (SRAM)
объемом 128 Kбайт;
- клавиатура
AK1604A-WWB фирмы ACCORD;
жидкокристаллический
индикатор
(ЖКИ)
WH1602B-YGK-CP фирмы Winstar Display;
- часы реального времени PCF8583;
набор сигнальных светодиодов;
пьезокерамический акустический излучатель;
набор DIP-переключателей.
На рисунке 2 представлена структура аппаратной
части учебного стенда SDK-1.1.
Рисунок 2.
Структура аппаратной части учебного стенда SDK-1.1
Стенд SDK-1.1 может работать без подключения к
компьютеру.
На рисунке 3 показан процесс разработки
программы для стенда SDK-1.1.
Рисунок 3.
Процесс разработки программ для SDK-1.1
Программы для стенда располагаются в ОЗУ объемом
128 Кбайт. Из этих 128 Кбайт как память программ (особенности MCS-51) могут
использоваться лишь 56 Кбайт (в стенде первые 8 Кбайт памяти программ заняты
ПЗУ, в котором располагается системное программное обеспечение, отсюда 64 Кбайт
- 8 Кбайт = 56 Кбайт). Однако, как показывает практика, программы такого
размера для стенда подготавливать не требуется. SDK-1.1 позволяет на практике
ознакомиться с управлением периферийными устройствами, взаимодействующими с
вычислителем посредством различных интерфейсов, освоить некоторые специфические
аспекты программирования встраиваемых вычислительных систем, эффективного
управления ресурсами. В стенде предусмотрена возможность симулировать некоторые
внешние сигналы без использования дополнительного оборудования: сигналы внешних
прерываний, счетные импульсы таймеров, аналоговые сигналы на входах АЦП.
Интересно отметить возможность программного инициирования прерываний, не
предусмотренную в MCS-51, однако реализованную в стенде через механизм
программного управления состоянием входа внешнего прерывания INT0 AduC812. ПЗУ
с резидентным программным обеспечением реализовано на кристалле ОКЭВМ AduC812
по технологии FLASH/EE и может быть перепрограммировано через интерфейс RS-232C
с обычного ПК. Новые версии резидентного ПО могут доставляться в стенд без
использования специальных программаторов, а тем более новых микросхем ПЗУ -
достаточно иметь лишь образ доставляемой программы в виде файла и специальную
утилиту на ПК.
Некоторые устройства стенда подключены к
вычислителю через периферийный расширитель, реализованный на базе ПЛИС
небольшой емкости, перепрограммируемой через имеемый в SDK-1.1 JTAG-порт, что
дает возможность при желании изменять механизмы работы с этими устройствами.
Иногда при программировании SDK-1.1 возникает
необходимость сохранять программу и после выключения питания. Так как стенд
создавался для массового использования студентами, такая возможность в базовой
его конфигурации имеется лишь за счет замены содержимого FLASH-памяти
вычислителя. Однако ее размер составляет всего 8Кбайт, что не всегда достаточно
для более серьезных программ, таких как курсовые и дипломные проекты,
бакалаврские и другие исследовательские работы. К тому же, во FLASH-память
AduC812 может быть записан только один образ, то есть либо одна программа, либо
несколько программ, но скомпонованных в один файл. Это затрудняет обновление
отдельной программы в наборе, так как, во-первых, для этого необходимо заново компоновать
все программы из набора, во-вторых, невозможно перезаписать часть FLASH-памяти
AduC812 без стирания всего ее содержимого.
На рисунке 4 представлено схематическое
изображение стенда SDK-1.1, а расшифровка обозначений на схеме дана в таблице 1
[1].
Рисунок 4 - Схематическое изображение стенда
SDK-1.1
Таблица 1
Расшифровка обозначений на лицевой панели стенда
SDK-1.1
Обозначение
|
Расшифровка
обозначения
|
LCD
|
Жидкокристаллический
индикатор WH1602B-YGK-CP
|
KEYBOARD
|
Матричная
клавиатура AK1604A-WWB
|
Z1
|
Звуковой
пьезокерамический излучатель
|
SW1
|
Переключатель,
замыкающий каналы 0 и 1 ЦАП на входы соответствующих (0, 1) каналов АЦП
|
SW2
|
Кнопка
сброса RESET
|
SW3
|
Набор
переключателей, замыкающих соответствующие выводы J3 на корпус (переключение
в логический «0»)
|
J1
|
Выводы
каналов АЦП и ЦАП
|
J2
|
Выводы
JTAG-интерфейса ПЛИС MAX
|
J3
|
16
линий параллельного порта ПЛИС MAX и 4 линии параллельного порта P3
микроконтроллера AduC812 (INT0/1, T0/1)
|
J4
|
Разъем
питания стенда 9 В
|
JDP1
|
Разъем
последовательного порта стенда
|
JP1
|
Перемычка,
замыкающая вывод PSEN микроконтроллера AduC812 на корпус
|
D9-D16
|
1.2
Микроконтроллер AduC812BS и ПЛИС MAX3064
выпускается фирмой Analog Devices - мировым
лидером в области аналоговой схемотехники. AduC812 является микроконвертором и
содержит в себе 12-битный АЦП со встроенным микропроцессором. Процессорное ядро
AduC812 является клоном ядра Intel MCS-51.
Основные характеристики микроконтроллера:
рабочая частота 11,0592 МГц;
8-канальный 12-битный АЦП со скоростью выборок
200 Kбит/c;
2-канальный 12-битный ЦАП;
электрически стираемое программируемое ПЗУ
(EEPROM) объемом 640 байт со страничной организацией (256 страниц по 4 байта);
Flash-память программ объемом 8 Кбайт;
ОЗУ данных объемом 256 байт;
адресное пространство 16 Мбайт;
режим управления питанием;
контроллер системной шины;
универсальный асинхронный приемник-передатчик
(UART);
интерфейс I2C;
три 16-битных таймера/счетчика;
сторожевой таймер (WatchDog);
параллельные порты;
внутренний температурный датчик.
На рисунке 5 представлено условно-графическое
обозначение микроконтроллера AduC812 [1].
Рисунок 5.
Микроконтроллер AduC812
В SDK-1.1 используется программируемая
логическая интегральная схема (ПЛИС) MAX3064 фирмы Altera. В очень упрощенном
виде ПЛИС представляет собой набор макроячеек и механизм для организации связи
между ними. Микросхема MAX3064 содержит 64 макроячейки. Информация о связях
между макроячейками хранится в энергонезависимой памяти находящейся внутри
самой микросхемы. Для программирования MAX3064 использовался специальный САПР
Max+PlusII. Электрическая принципиальная схема расширителя портов ввода-вывода
была нарисована в этом САПР и преобразована в базис макроячеек ПЛИС и, далее, в
конфигурационный файл, необходимый для соединения нужных логических ячеек ПЛИС.
Конфигурационный файл доставляется в память ПЛИС через интерфейс JTAG.
Условно-графическое обозначение ПЛИС приведено на рисунке 6.
Рисунок 6.
ПЛИС MAX3064
В стенде SDK-1.1 MAX3064A используется как
расширитель портов ввода-вывода. Микросхема MAX3064A подключена к внешней шине
AduC812. Адресная линия A19 используется как сигнал CS (chip select) для
MAX3064A. ПЛИС выбирается, когда на линии A19 логическая единица. Физический
адрес ПЛИС таким образом равен 0x80000, что соответствует восьмой странице
памяти.
К ПЛИС подключены следующие устройства:
клавиатура, ЖКИ, линейка светодиодов, звуковой излучатель, 16 дискретных портов
ввода-вывода. Для программиста расширитель портов представлен в виде нескольких
однобайтовых регистров находящихся в начале восьмой страницы памяти данных.
Рассмотрим регистры ПЛИС, представленные в
таблице 2.
Таблица 2
Перечень регистров ПЛИС
Адрес
|
Регистр
|
Доступ
|
Назначение
|
080000H
|
KB
|
R/W
|
Регистр
клавиатуры
|
080001H
|
DATA_IND
|
R/W
|
Регистр
шины данных ЖКИ.
|
080002H
|
EXT_LO
|
R/W
|
Регистр
данных параллельного порта (разряды 0-7)
|
080003H
|
EXT_HI
|
R/W
|
Регистр
данных параллельного порта (разряды 8-15)
|
080004H
|
ENA
|
W
|
Регистр
управления портами ввода-вывода, звуком, сигналом INT0 и прерыванием от
клавиатуры
|
080006H
|
C_IND
|
W
|
Регистр
управления ЖКИ
|
080007H
|
SV
|
W
|
Регистр
управления светодиодами.
|
Обозначение R/W означает, что регистр доступен
для чтения и для записи, обозначение W означает, что регистр доступен только
для записи [1].
Ниже приведена информация о регистре ENA, так
как в данной работе необходимо работать с данным регистром.
Схематическое изображение регистра управления
ENA представлено на рисунке 7.
Рисунок 7
Регистр управления ENA
7
|
6
|
5
|
4
|
2
|
1
|
0
|
-
|
W
|
W
|
W
|
W
|
W
|
W
|
W
|
-
|
KB
|
INT0
|
SND2
|
SND1
|
SND0
|
EN_HI
|
EN_LO
|
Адрес регистра ENA в памяти равен 080004H.
Значение регистра после сброса равно x0100000B. Назначение битов регистра ENA
указано в таблице 3 [1].
Таблица 3
Назначение битов регистра ENA
Биты
|
Поле
|
Описание
|
0
|
EN_LO
|
В
полной конфигурации бит EN_LO нужен для управления младшими 8 разрядами (биты
0-7) 16-разрядного порта ввода-вывода. Если записать в EN_LO логический «0»,
то порт ввода-вывода переводится в Z-состояние и появляется возможность
чтения данных из EXT_LO. При записи в данный бит логической «1» порт
переключается на вывод и данные, записанные в регистр EXT_LO, попадают на
выход порта ввода-вывода. В упрощенной конфигурации этот бит управляет всеми
16 разрядами порта ввода-вывода. Если записать в EN_LO логический «0», то
весь порт ввода-вывода переводится в Z-состояние и появляется возможность
чтения данных из регистров EXT_LO и EXT_HI. При записи в данный бит
логической «1» порт переключается на вывод и данные, записанные в регистры
EXT_LO и EXT_HI, попадают на выход порта ввода-вывода.
|
1
|
EN_HI
|
В
полной конфигурации бит EN_HI нужен для управления старшими 8 разрядами (биты
8-15) 16-разрядного порта ввода-вывода. Если записать в EN_HI логический «0»,
то порт ввода-вывода переводится в Z-состояние и появляется возможность
чтения данных из EXT_HI. При записи в данный бит логической «1» порт
переключается на вывод и данные, записанные в регистр EXT_HI, попадают на
выход порта ввода-вывода. В упрощенной конфигурации бит EN_HI не влияет на
функционирование порта ввода-вывода. Все управление портом производится битом
EN_LO.
|
2-4
|
SND0-SND2
|
Выход
звукового ЦАП. Задает уровень напряжения на динамике. Позволяет формировать
звуковые сигналы различной тональности и громкости.
|
5
|
INT0
|
При
записи логического «0» в этот бит на вход INT0 AduC812 также попадает
логический «0». Бит можно использовать для формирования внешнего прерывания
для микроконтроллера.
|
6
|
KB
|
В
полной конфигурации при записи логического «0» прерывание от клавиатуры
запрещается. Если бит установлен в «1», то прерывание от клавиатуры
разрешено. В упрощенной конфигурации бит KB всегда равен нулю, то есть
прерывание клавиатуры запрещено.
|
2.
ПРОГРАММИРОВАНИЕ СТЕНДА SDK-1.1
2.1
Демонстрационный режим
Существует два режима работы SDK-1.1: обычный
(запуск загрузчика HEX202 для загрузки пользовательских программ) и
демонстрационный (выбор и запуск демонстрационных программ).
Режим работы определяется при старте системы
положением переключателя EP7, изображенного на рисунке 8.
Рисунок 8.
Переключатель EP7
Если переключатель включен (положение ON), то
система стартует в демонстрационном режиме, если выключен (положение OFF),
система стартует в обычном режиме. При старте в обычном режиме управление сразу
передается программе-загрузчику HEX202.
При старте стенда в демонстрационном режиме
производится тестирование памяти и периферийного оборудования стенда. В случае
неработоспособности какого-либо из тестируемых блоков, на дисплей выводится
соответствующее сообщение. В случае неудачного теста памяти дальнейшая работа
стенда становится невозможной. После начального тестирования на дисплее на
короткое время появляется подсказка по назначению клавиш клавиатуры,
представленная на рисунке 9. Далее появляется меню, предлагающее пользователю
выбрать одну из демонстрационных программ. Выбор пунктов осуществляется с
помощью клавиатуры стенда.
Рисунок 9.
Функциональное назначение клавиш
Меню в программном комплексе организовано
следующим образом: первая строка двухстрочного дисплея SDK-1.1 содержит
название меню, вторая строка используется для отображения пунктов меню. Нажатие
клавиш «вверх» или «вниз» приводит к отображению соответственно предыдущего или
последующего пункта. Клавишами «влево» или «вправо» можно перейти
соответственно в начало или в конец меню. Выбор можно подтвердить клавишей
«Enter» («Ввод») или отменить (выйти в меню верхнего уровня) клавишей «Cancel»
(«Отмена»). Каждое нажатие клавиши сопровождается звуковым сигналом. При
длительном удержании клавиши включается режим автоповтора нажатия клавиши.
Программа-загрузчик HEX202 обеспечивает доставку
в ОЗУ стенда SDK-1.1 пользовательских программ в формате Intel HEX. Доставка
осуществляется с ПК по последовательному каналу RS232 с помощью
инструментальных систем, поставляемых в комплекте со стендом. Процесс
написания, компиляции и доставки программ для стенда SDK-1.1, а также протокол
загрузки HEX-модулей детально описан в следующем разделе. При выборе из
главного меню комплекса программы-загрузчика возврат из нее возможен только при
перезапуске системы [1].
2.2
Работа с модулем SDX-09 системы автоматического управления на базе комплекса
SDK-1.1
Модуль дискретного и аналогового ввода-вывода
SDX-09 предназначен для использования в составе лабораторного комплекса
совместно с учебными лабораторными стендами SDK-1.1 и SDK-1.1s с целью
изучения: систем на базе микропроцессоров и однокристальных микроЭВМ; встраиваемых
контроллеров и систем сбора данных; периферийных блоков вычислительных систем;
подсистем ввода-вывода встраиваемых систем.
Модуль SDX-09 позволяет подключать внешние
устройства, через аналоговые порты ввода-вывода и гальванически изолированные
дискретные порты ввода-вывода к контроллеру SDK-1.1. Модуль SDX-09 представляет
собой печатную плату с двухсторонним расположением электронных компонентов.
Печатная плата крепится в корпус профиль UM-108. Внешний вид модуля SDX-09
представлен на рисунке 10.
Рисунок 10. Внешний
вид модуля SDX-09