Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пособие HCS12 & Elvis II v.7.01

.pdf
Скачиваний:
223
Добавлен:
03.05.2015
Размер:
4.14 Mб
Скачать

Рис. 3.16. Выбор действия над новым устройством сбора данных

Теперь нужно обеспечить интерфейс отладки изучаемого МК. Делается это с помощью ещё одного USB-кабеля, которым необходимо соединить разъём, расположенный справа на плате PBMCUSLK, и порт компьютера. ОС Windows должна найти новое устройство и автоматически установить для него драйвер (рис. 3.13).

Всё, стенд готов к работе.

61

3.5. Контроллер HD44780 для ЖКИ

Контроллер HD44780 компании Hitachi широко применяется при производстве алфавитно-цифровых ЖКИ. Микросхема может управлять 2-мя строками по 40 символов в каждой при матрице символа 5 х 8 точек. Существует несколько различных стандартных форматов ЖКИ (символов х строк): 8 х 2, 16 х 1, 16 х 2, 16 х 4, 20 х 1, 20 х 2, 20 х 4, 24 х 2, 40 х 2, 40 х 4. Принципиальных ограничений на комбинации и количество отображаемых символов контроллер не накладывает – модуль может иметь любое количество символов от 1 до 80. На лабораторном стенде установлен индикатор формата 8 х 2.

Для соединения ЖК-модуля с управляющей системой используется параллельная синхронная шина. Она включает в себя 8 или 4 (выбирается программно) линий данных DB7..DB0, а также линии выбора операции R/W, выбора регистра RS, стробирования/синхронизации Е. В исходном состоянии сигнал Е = 0, сигнал R/W = 0, значение сигнала RS – произвольное, шина данных DB7...DB0 в состоянии ввода. Такое состояние управляющих сигналов (E и R/W) должно поддерживаться все время в промежутках между операциями обмена с ЖК-модулем.

Приведем последовательность действий, которые необходимо выполнить для записи данных в контроллер или чтения данных из контроллера по 8-разрядной шине:

Операция записи:

1.Установить нужное состояние линии RS.

2.Установить линию R/W = 0 (запись).

3.Вывести значение байта данных на линии шины DB7...DB0.

4.Установить линию Е = 1.

5.Задержка (не менее 230 нс).

6.Установить линию E = 0.

7.Установить линии шины DB0...DB7 на ввод.

Операция чтения:

1.Установить нужное состояние линии RS.

2.Установить линию R/W = 1 (чтение).

3.Установить линию Е = 1.

4.Задержка (не менее 160 нс).

5.Считать значение байта данных с линий шины DB7...DB0.

6.Установить линию Е = 0.

7.Установить линию R/W = 0

Приведенные операции подразумевают, что время выполнения каждого шага составляет не менее 250 нс. При использовании современных быстродействующих МК это условие может быть легко нарушено. Поэтому нужно следить, чтобы длительности временных интервалов не выходили за значения, указанные в таблицах 3.1 и 3.2, и при необходимости вводить дополнительные задержки.

62

Рис. 3.17. Временная диаграмма операции записи

Рис. 3.18. Временная диаграмма операции чтения

Табл. 3.1. Значения временных характеристик. Операция записи

Параметр

Обозначение

Мин.

Макс.

Единица

Период сигнала Е

tcycE

500

-

нс

Положительный импульс сигнала Е

PWEH

230

-

нс

Фронт/спад сигнала Е

tEr, tEf

-

20

нс

Установка адреса

tAS

40

-

нс

Удержание адреса

tAH

10

-

нс

Установка данных

tDSW

80

-

нс

Удержание данных

tH

10

-

нс

63

Табл. 3.2. Значения временных характеристик. Операция чтения

Параметр

Обозначение

Мин.

Макс.

Единица

Период сигнала Е

tcycE

500

-

нс

Положительный импульс сигнала Е

PWEH

230

-

нс

Фронт/спад сигнала Е

tEr, tEf

-

20

нс

Установка адреса

tAS

40

-

нс

Удержание адреса

tAH

10

-

нс

Установка данных

tDDR

-

160

нс

Удержание данных

tDHR

5

-

нс

Рассмотрим внутреннюю структуру контроллера HD44780. Можно выделить основные элементы, с которыми приходится взаимодействовать при программном управлении: регистр данных (DR), регистр команд (IR), ОЗУ экрана (DDRAM), ОЗУ знакогенератора (CGRAM), счётчик адреса памяти (АС), флаг занятости контроллера

(BF).

Рис. 3.19. Упрощённая структурная схема контроллера HD44780

Другие элементы не являются объектом прямого взаимодействия с управляющей программой – они участвуют в процессе регенерации изображения на ЖКИ: знакогенератор, формирователь курсора, сдвиговые регистры и драйверы.

Управление контроллером ведется посредством интерфейса управляющей системы. Основными объектами взаимодействия являются регистры DR и IR. Выбор адресуемого регистра производится линией RS, если RS = 0 – адресуется регистр команд (IR), если RS = 1 – регистр данных (DR).

Данные через регистр DR могут помещаться (или прочитываться) в ОЗУ экрана (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу, указываемому счётчиком адреса (АС). Если счётчик адреса последний раз был установлен для ОЗУ экрана, то данные будут записываться и читаться из ОЗУ экрана, а если для ОЗУ знакогенератора, то обмен будет происходить с CGRAM. Информация, попадающая в

64

регистр IR, интерпретируется устройством выполнения команд как управляющая последовательность. Прочтение регистра IR возвращает в 7-ми младших разрядах текущее значение счетчика АС, а в старшем разряде флаг занятости (BF).

Область ОЗУ экрана, имеющая общий объем 80 байт, предназначена для хранения кодов символов, отображаемых на ЖКИ. ОЗУ организована в две строки по 40 символов в каждой. Эта привязка является жесткой и не подлежит изменению. Другими словами, независимо от того, сколько реальных строк будет иметь каждый конкретный ЖК-модуль, скажем, 80 х 1 или 20 х 4, адресация видеопамяти всегда производится как к двум строкам по 40 символов.

Будучи устройством с динамической индикацией, контроллер циклически производит обновление информации на ЖКИ. Сам ЖКИ организован как матрица, состоящая из 16-ти (две строки символов 5 х 7 точек) строк по 40 сегментов. Собственный драйвер контроллера HD44780 имеет только 40 выходов (SEG40..SEG1) и самостоятельно может поддерживать только 8-символьные ЖКИ. Это означает, что модули форматов до 8 х 2 реализованы на одной единственной микросхеме HD44780, имеющие же большее количество символов, содержат дополнительные микросхемы драйверов.

У контроллера HD44780 существует набор внутренних битов, определяющих режимы работы различных элементов контроллера. Ниже приведены значения управляющих битов непосредственно после подачи на ЖКИ модуль напряжения питания.

Табл. 3.3. Биты, управляющие работой контроллера HD44780 I/D 1 – инкремент, 0 – декремент счётчика адреса AC после записи символа в ОЗУ

экрана.

Разрешение сдвига: 0 – сдвиг экрана не производится, 1 – после записи в ОЗУ экрана очередного кода экран сдвигается в направлении, определяемым флагом

SI/D: 0 – вправо, 1 – влево. При сдвиге не производится изменение содержимого ОЗУ, изменяются только внутренние указатели расположения видимого начала строки в ОЗУ.

S/C Выбор объекта смещения: 0 – сдвигается курсор, 1 – сдвигается экран. R/L Направление сдвига курсора или экрана: 0 – влево, 1 – вправо.

D/L Ширина шины данных: 0 – 4 разряда, 1 – 8 разрядов.

N Количество выводимых строк: 0 – одна строка, 1 – две строки.

F Размер матрицы символов: 0 – 5 х 8 точек, 1 – 5 х 10 точек.

D Наличие изображения: 0 – выключено, 1 – включено.

СКурсор в виде подчерка: 0 – выключен, 1 – включен.

В Курсор в виде мерцающего знакоместа: 0 – выключен, 1 – включен.

Табл. 3.4. Значения управляющих битов после подачи питания

I/D = 1

Режим инкрементирования счетчика

S = 0

Без сдвига изображения

D/L = 1

8-разрядная шина данных

N = 0

Режим развертки одной строки

F = 0

Символы с матрицей 5 x 8 точек

D = 0

Отображение выключено

С = 0

Курсор в виде подчеркивания выключен

В = 0

Курсор в виде мерцающего знакоместа выключен

Переопределение значений битов производится специальными командами, которые Вы можете найти в табл. 3.5 ниже.

65

 

 

 

 

 

 

 

 

 

 

Табл. 3.5. Управляющие команды

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Описание

0

0

0

0

0

0

0

0

0

1

Очистка экрана, АС = 0,

адресация АС на DDRAM

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

0

0

0

1

АС = 0, адресация на DDRAM,

сброс сдвигов, содержимое

 

 

 

 

 

 

 

 

 

 

DDRAM не изменяется.

0

0

0

0

0

0

0

1

I/D

S

Выбор направления сдвига

курсора или экрана

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

0

1

D

C

B

Включение/выключение

дисплея, настройка курсора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Включение сдвига

0

0

0

0

0

1

S/C

R/L

курсора/экрана без изменения

 

 

 

 

 

 

 

 

 

 

DDRAM

0

0

0

0

1

D/L

N

F

Установка разрядности шины,

количества строк и размера

 

 

 

 

 

 

 

 

 

 

шрифта.

 

 

 

 

 

 

 

 

 

 

Установка АС адреса в области

0

0

0

1

AG

AG

AG

AG

AG

AG

CGRAM. После данной

команды данные записываются

 

 

 

 

 

 

 

 

 

 

и читаются из CGRAM.

 

 

 

 

 

 

 

 

 

 

Установка АС адреса в области

0

0

1

AD

AD

AD

AD

AD

AD

AD

DDRAM. После данной команды

данные записываются и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

читаются из DDRAM.

0

1

BF

AC

AC

AC

AC

AC

AC

AC

Чтение флага занятости

1

0

 

 

Записываемые данные

 

 

Запись данных в ОЗУ экрана

 

 

 

 

(DDRAM) или ОЗУ

 

 

 

 

 

 

 

 

 

 

знакогенератора (CGRAM)

1

1

 

 

Прочитанные данные

 

 

Чтение данных в ОЗУ экрана

 

 

 

 

(DDRAM) или ОЗУ

 

 

 

 

 

 

 

 

 

 

знакогенератора (CGRAM)

Контроллер HD44780 поддерживает как операции записи, так и операции чтения. Чтение регистра DR (RS = 1) приводит к загрузке содержимого ОЗУ экрана (DDRAM) или ОЗУ знакогенератора (CGRAM), при этом курсор смещается на одну позицию, как и при записи. Чтение регистра IR (RS = 0) возвращает 8 значащих разрядов, причем в 7-ми младших содержится текущее значение счетчика АС (7 разрядов, если адресуется DDRAM, и 6 - если CGRAM), а в старшем бите (DB7) флаг занятости BF. Этот флаг имеет значение 1, когда контроллер занят внутренними операциями и 0 когда свободен и готов к принятию новых данных. Необходимо учитывать, что большинство операций, выполняемых контроллером, занимают значительное время, около 40 мкс, а время выполнения некоторых доходит до миллисекунды, поэтому цикл ожидания снятия флага BF должен обязательно присутствовать в программах драйвера ЖКИ модуля и предшествовать совершению любой операции. Можно осуществлять операции обмена с контроллером и без проверки BF. Для этого необходимо установить временную задержку между операциями обмена равную длительности выполнения самой медленной команды контроллером (1мс достаточно).

Вывод на экран символа производится записью его кода (используется кодировка ASCII, русские символы отсутствуют) в регистр DR (RS = 0). При этом символ размещается в DDRAM по текущему адресу, указываемому АС, а значение АС увеличивается или уменьшается на 1. Чтобы произвести переустановку курсора на нужную позицию, необходимо присвоить АС соответствующее значение. Когда производится последовательная запись символов и в результате заполняется вся строка, курсор автоматически переходит на вторую строку. Если необходимо принудительно установить курсор, например, на начало второй строки, то необходимо записать в регистр AC значение 0x40. Таким образом, бит DB6 в счётчике адреса курсора (AC) является признаком второй строки.

66

Из допустимых для размещения в DDRAM кодов символы с кодами $00..$07 имеют специальное назначение это переопределяемые символы, графическое изображение которых может создать сам разработчик, разместив соответствующую информацию в области ОЗУ знакогенератора (CGRAM). Для программирования доступны 8 переопределяемых символов в режиме матрицы 5 x 7 точек. Для кодирования матрицы используются горизонтально "уложенные" байты, пять младших битов, которых несут информацию о рисунке (единица означает, что сегмент будет включен). Старшие три бита не используются.

Рис. 3.19. Упрощённая размещение пользовательских символов в ОЗУ знакогенератора

Чтобы определить собственный символ необходимо установить счетчик АС на адрес начала матрицы требуемого символа в CGRAM $00, $08, $10, затем произвести перезапись всех байтов матрицы, начиная с верхней строки. После этого, записав в DDRAM код запрограммированного символа: $00, $01, $02 до $07 на экране в соответствующем месте будет отображаться созданный символ.

Несколько слов о процессе инициализации ЖКИ модуля. Производитель контроллера рекомендует выполнять следующую

последовательность действий для инициализации.

Выдержать паузу не менее 15 мс между установлением рабочего напряжения питания (> 4.5 В) и выполнением каких-либо операций с контроллером. Первой операцией выполнить команду, выбирающую разрядность шины (это должна быть команда $30 независимо от того, какой разрядности интерфейс вы собираетесь использовать в дальнейшем), причем перед выполнением этой операции не проверять значение флага BF. Далее опять выдержать паузу не менее 4.1 мс и повторить команду выбора разрядности шины, причем перед подачей команды вновь не производить проверку флага BF. Следующим шагом необходимо вновь выдержать паузу, на этот раз 100 мкс, и в третий раз повторить команду установления разрядности шины, вновь без проверки BF. Эти три операции являются инициализирующими и призваны вывести контроллер в исходный режим работы (то есть перевести в режим работы с 8-разрядной шиной) из любого состояния. Следом за ними нормальным порядком (без выдерживания пауз, но с проверкой флага BF) выполняется инициализация режимов работы.

67

4. Базовые навыки работы в среде программного пакета

CodeWarrior

4.1. Общая характеристика среды разработки

CodeWarrior (в пер. – боец с кодами) – это интегрированная среда разработки (IDE – Integrated Development Environment) программного обеспечения для встраиваемых микропроцессорных систем. Пакет CodeWarrior содержит в себе несколько связанных друг с другом программных модулей: менеджер проектов, редактор с интерактивной коррекцией ошибок, модуль управления компиляцией и созданием программы (Build system), символьный отладчик и др. Более наглядно структура представлена на рис. 4.1. Оболочка IDE CodeWarrior – это стандартное Windows-приложение. Она позволяет создавать файлы с текстом программы и организовывать их в проект, определяющий конечное приложение. В дополнение к этому среда разработки обеспечивает автоматическую компиляцию, ассемблирование и линковку/загрузку всех необходимых исходных данных для получения готового абсолютного модуля программы для микроконтроллера. Управляющая оболочка CodeWarrior имеет два типовых режима работы:

Режим «построения» программы (Build) позволяет транслировать все файлы приложения и получать готовый запускаемый модуль программы.

Режим отладки (Debug) обеспечивает отладку и испытание приложения с помощью встроенного отладчика или симулятора (рис. 4.2).

Рис. 4.1. Структура интегрированной среды разработки CodeWarrior

На основе собственной универсальной среды разработки компания Freescale Semiconductor выпускает программные средства, ориентированные на определённую категорию микросхем. Такие пакеты именуются CodeWarrior Development Studio или CodeWarrior Development Tools с указанием семейства процессоров или микроконтроллеров, для которого они предназначены. В данном лабораторном практикуме Вы будете использовать IDE CodeWarrior Development Studio for S12(X). Для приобретения начальных навыков работы в пакете самостоятельно проделайте на ПК те действия, которые описаны в разделах 4.2 и 4.3 данной главы или воспользуйтесь англоязычным мультимедийным курсом CodeWarrior Learning Edition.

68

Очень интересным представляется учебный аспект ознакомления с интегрированной средой разработки CodeWarrior. Причин этому несколько.

Определяющей, конечно, является наличие полностью бесплатной академической версии с ограниченным объемом кода, который, однако, не оказывает существенного влияния на учебный процесс.

Второй причиной является возможность программирования как на языке ассемблера, так и на C. Это позволяет использовать CodeWarrior на различных стадиях обучения: начиная с курса основ микропроцессорной техники, который обязательно базируется на языке ассемблера, и заканчивая курсами по изучению алгоритмов работы МК в системах управления и обработки данных, в которых при надлежащем уровне обучения следует использовать языки программирования высокого уровня. Очень важным является тот факт, что уже на начальной стадии обучения студенту можно предложить профессиональный пакет разработки программного обеспечения для МК. Это позволит избежать непроизводительной траты времени на усвоение навыков работы с очередной учебной версией, которые зачастую можно забыть уже в следующем семестре. Состав и графический интерфейс современных средств разработки ПО для МК разных производителей в целом очень похожи, поэтому переход к какому-либо другому пакету в будущем уже не вызовет существенных затруднений.

Единый графический интерфейс среды CodeWarrior в сочетании с возможностью подключения аппаратных средств, выполненных на разных МК одного семейства, изменяют представление о составе технических средств учебной лаборатории. Теперь совсем не обязательно иметь так называемый фронтальный практикум, в котором все стенды одинаковы. Наоборот, можно показать разнообразие моделей, и при этом использовать фронтальный метод обучения, т.к. большая часть лабораторных работ будет одинаковой на всех стендах.

Рис. 4.2. Пользовательский графический интерфейс отладчика среды CodeWarrior

69

Единая среда отладки как в режиме полной программной симуляции, так и при работе с реальным контроллером, очень удобна не только ученику, но и опытному разработчику. Последний хорошо знает, что при работе с симулятором не удается “выловить” значительную часть ошибок только потому, что не хватает времени и терпения вручную перебирать все возможные комбинации входных воздействий. Аналогичной трудностью любого учебного процесса является невозможность “подключения” объекта управления в режиме симуляции. Авторы CodeWarrior преодолели эту проблему, предоставив в распоряжение пользователей виртуальные устройства ввода/вывода и объекты управления.

Программно-логический симулятор пакета CodeWarrior снабжен специальными утилитами внешних объектов, которые выбираются пользователем из уже готового перечня или создаются самим пользователем с использованием утилиты Visualization Tool. Утилиты генерируют графический образ типовых устройств ввода/вывода микропроцессорной системы, имитируют подключение этих устройств к портам МК, моделируют алгоритм работы каждого устройства.

4.2.Техника создания проекта в среде CodeWarrior

Вданном разделе рассматривается архитектура микроконтроллера MC9S12C128, распределение его адресного пространства, программно-логическая модель центрального процессора HCS12. Также изучается простейший формат записи программы на ассемблере, техника преобразования исходного текста программы в машинный код для загрузки его в микроконтроллер, техника отладки разработанной программы с использованием программно-логической модели (симулятора) IDE CodeWarrior Development Studio for S12(X).

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

Ввод исходного текста программы на языке ассемблера с использованием встроенного редактора среды разработки CodeWarrior.

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

Загрузка машинного кода написанной программы в память микроконтроллера.

Ввод исходных данных в память микроконтроллера, необходимых для правильного исполнения программы.

Выполнение программы, анализ результатов её работы.

Корректировка допущенных ошибок.

Описанную последовательность можно назвать процессом разработки и отладки прикладной программы управления для встраиваемой микропроцессорной системы. Далее описываются основные практические навыки работы в программном пакете

“Интегрированная среда разработки IDE CodeWarrior Development Studio for S12(X)” для микроконтроллера MC9S12C128 семейства HCS12.

Чтобы начать работать с пакетом CodeWarrior, необходимо выполнить следующую последовательность операций.

Для этого нужно запустить программу CodeWarrior Development Studio for S12(X).

Следуйте по всплывающим диалоговым окнам создания нового проекта.

Сначала появится окно, изображённое на рис. 4.3. Для создания нового проекта в нём необходимо щёлкнуть по кнопке “Create New Project”. Если Вы намерены открыть ранее начатую программу, то надо выбрать “Load Previous Project”.

70