авторефераты диссертаций БЕСПЛАТНАЯ БИБЛИОТЕКА РОССИИ

КОНФЕРЕНЦИИ, КНИГИ, ПОСОБИЯ, НАУЧНЫЕ ИЗДАНИЯ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ


Pages:     | 1 | 2 || 4 | 5 |

«МИНОБРНАУКИ РОССИИ УДК 004.7(075.8) ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ ББК 32.97я73 ...»

-- [ Страница 3 ] --

Контрольные вопросы для определения степени готовности студента самостоятельно работать с оборудованием, приборами и осуществлять необходимые расчеты, замеры и оформления:

1. Дайте определение трем степеням справедливости, которые могут быть обеспечены стратегией планирования.

2. Перечислите решения задачи критической секции со справедливой стратегией. В чем особенности этих решений?

3. Перечислите способы барьерной синхронизации процессов. Укажите преимущества и недостатки каждого из способов.

  4. Какие методы используются в алгоритмах параллельных по данным?

5. Перечислите свойства парадигмы портфеля задач. Приведите примеры задач решаемых с помощью портфеля задач.

Задания по лабораторной работе (формулировки по нескольким вариантам с учетом максимальной индивидуализации заданий).

Задание 1. Допустим, что Р [ 1: n] – массив процессов, ab [ 1: n] – разделяемый булев массив:

а) напишите алгоритм, параллельный по данным, для подсчета числа элементов b [ i ], имеющих значение "истина";

б) предположим, что в пункте а получен ответ count между 0 и п.

Напишите алгоритм, параллельный по данным, присваивающий уникальное целое значение от 1 до count каждому процессу Р [ i ], для которого b [ i ] истинно.

Задание 2. Пусть даны два последовательно связанных списка. Напишите алгоритм, параллельный по данным, который ставит в соответствие элементы с одинаковыми номерами в последовательностях. По завершении алгоритма эти элементы списков должны указывать друг на друга. Если один список длиннее другого, то лишние элементы более длинного списка должны содержать пустые указатели. Определите необходимые структуры. Не изменяйте исходные списки;

вместо этого сохраните ответы в дополнительных массивах.

Задание 3. Пусть дан последовательно связанный список, элементы которого связаны в порядке возрастания их полей данных. Стандартный последовательный алгоритм вставки новых элементов в необходимое место имеет линейную оценку времени работы (в среднем должна быть просмотрена половина списка). Напишите алгоритм, параллельный по данным, для вставки нового элемента в список за логарифмическое время.

Задание 4. В обработке изображений возникает следующая задача выделения области. Дан массив целых чисел image [I :n, 1:п].

Значение каждого элемента – интенсивность пикселя. Соседями пикселя являются четыре пикселя (слева, справа, снизу и сверху от него). Два соседних пикселя принадлежат одной области, если их значения равны. Таким образом, область – это максимальное множество пикселей, которые связаны (в смысле транзитивно рефлексивного замыкания отношения соседства) и имеют одинаковые значения. Задача состоит в том, чтобы найти все области и присвоить всем пикселям каждой области уникальную (для области) метку. Точнее, пусть label[1:n, 1 :n] – еще одна матрица, и начальным значением элемента label [i, j ] является n*i + j. Заключительное значение элемента label [i, j ] должно быть максимальным из начальных меток области, которой принадлежит пиксель [ i, j ]. Опишите сеточные вычисления, параллельные по данным, для определения заключительных значений элементов label.

Вычисления должны заканчиваться, если ни один из элементов label не изменяется.

Содержание отчета по лабораторной работе:

• Титульный лист.

• Цель, задачи, предмет и объект лабораторной работы по данной   теме.

• Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

• Описание индивидуального задания по лабораторной работе.

• Программный код разработанной программы, с пояснениями.

• Интерфейс разработанной программы, с пояснениями.

• Ответы на контрольные вопросы.

• Выводы.

• Литература, используемая для выполнения лабораторной работы.

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

Программа для адаптивной квадратуры, использует портфель задач. Он представлен очередью и счетчиком. Еще один счетчик отслеживает число простаивающих процессов. Вся работа заканчивается, когда значение переменной size равно нулю, а счетчика idle – n. Заметим, что программа содержит несколько неделимых действий. Они нужны для защиты критических секций, в которых происходит доступ к разделяемым переменным. Все неделимые действия, кроме одного, безусловны, поэтому их можно защитить блокировками.

type task = (double left, right, fleft, fright, Irarea);

queue bag(task);

# портфель задач int size;

# число задач в портфеле int idle =0;

# число простаивающих процессов double total = 0.0;

# общая площадь вычислить аппроксимацию площади на отрезке от а до b;

добавить в портфель задачу (a, b, f(a), f(b), area);

count = 1;

process Worker[w = 1 to PR] { double left, right, fleft, fright, Irarea;

double mid, fmid, larea, rarea;

while (true) { # проверить завершение idle++;

if (idle == n && size == 0) break;

# получить задачу из портфеля;

await (size 0) удалить задачу из портфеля;

size--;

idle --;

mid = (left+right) / 2;

fmid = f(mid);

larea = (fleft+fmid) * (mid-left) / 2;

rarea = (fmid+fright) * (right-mid) / 2;

if (abs((larea+rarea) - Irarea) EPSILON) { { поместить в портфель (left, mid, fleft, fmid, larea);

поместить в портфель (mid, right, fmid, fright, rarea);

size = size + 2 ;

} else { total = total + Irarea;

) if (w == 1) # рабочий процесс 1 выводит результат printf("общая площадь %f\n", total);

  } Порядок выполнения лабораторной работы, оформления и оценки ее результатов, а так же процедура защиты работы.

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

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

3.3. Лабораторная работа 3. Устройство современного контроллера на примере SDK-1. Цель, задачи, предмет и объект лабораторной работы по данной теме.

Целью лабораторной работы является изучение устройства современного контроллера на примере SDK-1.1.

Задачи:

• Изучение состава стенда • Изучение назначения стенда • Изучение компонентов принципиальной электрической схемы стенда Объектом лабораторной работы является стенд SDK-1.1.

Предметом лабораторной работы являются изучение состава, назначения и компонентов стенда SDK-1.1.

Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности. Лабораторная работа выполняется на стенде SDK 1.1.

Литература (основная и дополнительная), требуемая для выполнения лабораторной работы. Для выполнения лабораторной работы студент использует УМП по выполнению лабораторной работы, также может быть использована следующая литература:

основная: [1-4];

дополнительная: [7, 9, 12, 15].

Краткое изложение основных теоретических и методических аспектов проблемы, составляющей содержание предмета лабораторной работы (определения, принципы, методика расчетов, схемы, алгоритмы, условия сравнения и др.).

Данная глава посвящена архитектуре учебно-лабораторного стенда SDK 1.1, который является примером простейшего контроллера встраиваемых систем. На этом примере демонстрируется реализация тех базовых технических приемов по устройству встраиваемых систем, которые обсуждались в предыдущих главах.

Назначение стенда Учебный стенд представляет собой микропроцессорный контроллер, построенный на базе однокристальной микро-ЭВМ ADuC812 (SDK-1.1/S на ADuC842) и имеющий в своем составе разнообразные, типичные для современных встроенных систем, устройства, предназначенные для ввода, обработки и вывода информации в цифровом и аналоговом виде.

  Состав стенда В состав учебного стенда SDK-1.1 входят:

Микроконтроллер ADuC812 (Analog Devices), 8 Кб FLASH, 256 байт ОЗУ, 640 байт EEPROM.

Внешнее ОЗУ 128 Кб (с возможностью расширения до 512 Кб), подключение к МК ADuC812 по системной шине;

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

Расширитель портов ввода-вывода - ПЛИС МАХ3064 (Altera), подключение к МК ADuC812 по системной шине.

Внешняя EEPROM-память 256 байт, подключение к МК ADuC812 по интерфейсу I2C.

Часы реального времени - PCF8583 (Philips), подключение по интерфейсу 12 С.

Консоль оператора (подключение через ПЛИС к МК ADuC812):

Символьный жидкокристаллический индикатор (ЖКИ) WH1602B- YGK CP (Winstar Display), 16* Матричная клавиатура, 4* Звуковой излучатель - 1 шт.

Управляемые светодиоды - 8 шт.

Ручные переключатели тестовых сигналов для аналоговых и дискретных портов ввода: коммутатор аналоговых каналов (подключен напрямую к МК ADuC812) и стимулятор дискретных портов.

Интерфейсы:

Оптически развязанный приемопередатчик инструментального канала RS 232C (для связи с персональным компьютером).

Интерфейс JTAG (IEEE 1149.1) для контроля периферийной шины и портов, реализованных в ПЛИС МАХ3064.

Разъемы стенда и назначение выводов Структура аппаратной части учебного стенда SDK-1.1 представлена на рис. 3.3. На рис. 3.4 представлено схематическое изображение лицевой панели стенда SDK-1.1. Расшифровка обозначений на схеме дана в таблице.

Перемычка JP1. Перемычка предназначена для замыкания вывода PSEN микроконтроллера ADuC812 через резистор 1 КОм на корпус. По сигналу RESET или при включении питания микроконтроллер ADuC812 анализирует состояние этого вывода и если он находится в лог. «О» (перемычка замкнута), то запускается встроенная в микроконтроллер процедура перезаписи внутренней Flash-памяти.

Разъем JP2. Разъем предназначен для подключения внешней батареи питания + 5 В часов реального времени PCF8583. Если батарея не подключена, питание часов осуществляется через ионистор емкостью 0.1 ф. Назначение выводов относительно надписей на плате представлено на рис. 3.5.

Рис. 3.5. Разъем JP2: назначение выводов   Рис. 3.3. Структура аппаратной части учебного стенда SDK-1. Рис. 3.4. Схематическое изображение стенда SDK-1.1.

  Таблица 1. Расшифровка обозначений на схеме лицевой панели стенда SDK-1.1.

Элемент Описание LCD Жидкокристаллический индикатор WH1602B-YGK-CP.

KEYBOAR Матричная клавиатура AK1604A-WWB.

D Z1 Звуковой пьезокерамический излучатель.

SW2 Кнопка сброса RESET.

J5 Разъем питания стенда 10-14 В типа «JACK», полярность безразлична.

JDP1 Разъем последовательного порта стенда.

J1 Выводы каналов АЦП и ЦАП.

SW1 Переключатель, замыкающий каналы 0 и/или 1 ЦАП на входы соответствующих (0, 1) каналов АЦП.

J3 16 линий параллельного порта ПЛИС МАХ и 4 линии параллельного порта РЗ микроконтроллера ADuC812 (INTO/1, ТО/1).

SW3 Набор переключателей, замыкающих соответствующие выводы J3 на корпус (переключение в лог. «0»), J2 Выводы JTAG-интерфейса ПЛИС МАХ.

JP1 Перемычка, замыкающая вывод PSEN микроконтроллера ADuC812 на корпус.

JP2 Разъемы подключения внешней батареи питания часов реального времени PCF8583.

D7-D14 Набор сигнальных светодиодов.

Разъем JDP1. Этот разъем предназначен для подключения кабеля асинхронного последовательного интерфейса, связывающего стенд с СОМ портом персонального компьютера. Назначение выводов представлено на рис.

3.6.

Рис. 3.6. Выводы разъема JDP К разъему подключается коммуникационный кабель RS-232, на одном конце которого находится стандартный для персонального компьютера разъем DB25F, а на другом - IDC10F. Распайка кабеля представлена на рис. 3.7.

  Рис. 3.7. Распайка кабеля Разъем J2. Разъем предназначен для программирования ПЛИС МАХ (МАХ3128) через интерфейс JTAG (IEEE 1149.1). Нумерация выводов относительно надписи «J2» на плате показана на рис. 3.8.

Рис. 3.8. Нумерация выводов разъема J Таблица 3. Назначение выводов разъема J № Описание (JTAG) вывода 1 ТСК 2 Корпус 3 TDO 4 +5V 5 TMS 6 7 8 #RESET 9 TDI 10 Корпус Разъем J1. Разъем представляет собой набор входов восьмиканального АЦП и выводов двухканального ЦАП микроконтроллера ADuC812.

Рис. 3.9. Разъем J   Таблица 3. Назначение выводов разъема J № вывода Описание 1 Канал 0 ЦАП 3 Канал 1 ЦАП 5 Вход канала 0 АЦП 7 Вход канала 1 АЦП 9 Вход канала 2 АЦП 11 Вход канала 3 АЦП 13 Вход канала 4 АЦП 15 Вход канала 5 АЦП 17 Вход канала 6 АЦП 19 Вход канала 7 АЦП Четные 2-20 Корпус Напряжение, подаваемое на входы АЦП, делится на два при поступлении на соответствующие выводы микроконтроллера ADuC812 (ADC0-ADC7).

На панели стенда смонтирован переключатель SW1, замыкающий соответственно канал О ЦАП на вход канала О АЦП (перемычка «1» в положении ON) и канал 1 ЦАП на вход канала 1 АЦП (перемычка «2» в положении ON).

Внимание! Замыкание каналов ЦАП на корпус при ненулевом напряжении на них может привести к выходу микроконтроллера ADuC812 из строя.

Разъем J3. Разъем представляет собой выводы параллельного порта ПЛИС МАХ 3064 (МАХ3128) и 4 линии порта РЗ микроконтроллера ADuC812.

Нумерация выводов представлена на рисунке.

Рис. 3.10. Нумерация выводов разъема J Таблица 3. Назначение выводов разъема J № вывода Описание 1 Вход INTO ADuC812.

3 Вход INTI ADuC812.

5 Вход ТО ADuC812.

7 Вход Т1 ADuC812.

9 Вывод линии 0 параллельного порта ПЛИС МАХ.

11 Вывод линии 1 параллельного порта ПЛИС   МАХ.

13 Вывод линии 2 параллельного порта ПЛИС МАХ.

15 Вывод линии 3 параллельного порта ПЛИС МАХ.

17 Вывод линии 4 параллельного порта ПЛИС МАХ.

19 Вывод линии 5 параллельного порта ПЛИС МАХ.

21 Вывод линии 6 параллельного порта ПЛИС МАХ.

23 Вывод линии 7 параллельного порта ПЛИС МАХ.

25 Вывод линии 8 параллельного порта ПЛИС МАХ.

27 Вывод линии 9 параллельного порта ПЛИС МАХ.

29 Вывод линии 10 параллельного порта ПЛИС МАХ.

31 Вывод линии 11 параллельного порта ПЛИС МАХ.

33 Вывод линии 12 параллельного порта ПЛИС МАХ.

35 Вывод линии 13 параллельного порта ПЛИС МАХ.

37 Вывод линии 14 параллельного порта ПЛИС МАХ.

39 Вывод линии 15 параллельного порта ПЛИС МАХ.

Четные 2- Корпус.

Поскольку напряжение питания ПЛИС МАХ3064 (МАХ3128) составляет 3.3 В, уровнем лог. «1» на линиях параллельного порта ПЛИС считается напряжение около 3 В. Уровнем лог. «1» на линиях INT0/1, ТО/ микроконтроллера ADuC812 (выводы 1, 3, 5, 7) считается напряжение около В.

Внимание! Прямое замыкание линий параллельного порта ПЛИС или порта РЗ ADuC812 на корпус при ненулевом напряжении на них может привести к выходу соответствующих микросхем из строя.

Для принудительного «обнуления» линий INT0/1, ТО/1 в схему введен набор переключателей SW3-1;

для принудительного «обнуления» линий 0- параллельного порта ПЛИС в схему введен набор переключателей SW3-2, замыкающих соответствующие линии через резисторы 100 Ом на корпус. Для   того, чтобы принудительно «обнулить» соответствующую линию, необходимо установить соответствующий переключатель в положение «ON». Соответствие номеров переключателей и линий приведено в таблице.

Таблица 3. Соответствие DIP-переключателей и линий параллельного порта ПЛИС и МК ADuC № переключателя Линия Набор переключателей SW3- 1 Вход INT0 ADuC812 (Р3.2).

2 Вход INT1 ADuC812 (РЗ.З).

3 Вход Т0 ADuC812 (Р3.4).

4 ВходТ1 ADuC812 (Р3.5).

Набор переключателей SW3- 1 Линия 0 параллельного порта ПЛИС МАХ.

2 Линия 1 параллельного порта ПЛИС МАХ.

3 Линия 2 параллельного порта ПЛИС МАХ.

4 Линия 3 параллельного порта ПЛИС МАХ.

5 Линия 4 параллельного порта ПЛИС МАХ.

6 Линия 5 параллельного порта ПЛИС МАХ.

7 Линия 6 параллельного порта ПЛИС МАХ.

8 Линия 7 параллельного порта ПЛИС МАХ.

Контрольные вопросы для определения степени готовности студента самостоятельно работать с оборудованием, приборами и осуществлять необходимые расчеты, замеры и оформления:

1. Для чего предназначен стенд?

2. Охарактеризуйте состав стенда 3. Поясните структуру аппаратной части учебного стенда SDK-1. 4. Для чего предназначена перемычка JP1?

5. Для чего предназначен разъем JP2?

6. Для чего предназначен разъем JDP1?

7. Для чего предназначен разъем J2?

8. Для чего предназначен разъем J1?

9. К чему может привести замыкание каналов ЦАП на корпус при ненулевом напряжении на них?

10. Для чего предназначен разъем J3?

  11. К чему может привести прямое замыкание линий параллельного порта ПЛИС или порта РЗ ADuC812 на корпус при ненулевом напряжении на них?

Задания по лабораторной работе (формулировки по нескольким вариантам с учетом максимальной индивидуализации заданий).

По технической документации, прилагаемой к стенду изучить компоненты принципиальной электрической схемы стенда SDK-1.1.

Задание 1. По варианту индивидуального задания приведенного ниже, определить основные технические характеристики и принципиальную электрическую схему компонента стенда:

1. Микроконтроллер ADuC 2. Внешняя память программ и данных 3. Расширитель портов ввода-вывода на базе ПЛИС 4. Аналоговые входы-выходы 5. Особенности реализации последовательного канала в стенде SDK 1. 6. 12С-устройства 7. Источник питания 8. Схема сброса 9. Кварцевые резонаторы 10. Фильтрующие емкости Задание 2. По варианту индивидуального задания приведенного ниже, определить особенности работы микроконтроллера:

1. Система команд микроконтроллера ADuC 2. Порты ввода-вывода микроконтроллера ADuC 3. Организация памяти программ микроконтроллера ADuC 4. Организация памяти данных микроконтроллера ADuC 5. Программирование внутренних ППЗУ микроконтроллера ADuC 6. Система прерываний ADuC 7. Особенности обработки прерываний в стенде SDK-1. Задание 3. По варианту индивидуального задания приведенного ниже, определить особенности работы расширителя портов ввода вывода на базе ПЛИС 1. Регистр клавиатуры КВ 2. Регистр шины данных ЖКИ DATA_IND 3. Регистр данных параллельного порта EXT_LO 4. Регистр данных параллельного порта ЕХТ_Н 5. Регистр управления ENA 6. Регистр управления ЖКИ C_IND 7. Регистр управления светодиодами SV 8. Логическая схема ПЛИС: доступ к периферийным устройствам 9. Жидкокристаллический индикатор Содержание отчета по лабораторной работе:

• Титульный лист.

• Цель, задачи, предмет и объект лабораторной работы по данной теме.

• Перечень и характеристика оборудования, приборов и материалов,   необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

• Описание индивидуального задания по лабораторной работе.

• Основные технические характеристики и принципиальная электрическая схема компонента стенда • Особенности работы микроконтроллера • Особенности работы расширителя портов ввода вывода на базе ПЛИС • Ответы на контрольные вопросы.

• Выводы.

• Литература, используемая для выполнения лабораторной работы.

Пример выполнения индивидуального задания по варианту 8-5- Основные технические характеристики и принципиальная электрическая схема «Схема сброса»

Схема сброса предназначена для формирования качественного сигнала RESET после включения питания, после нажатия кнопки RESET или после выключения питания. Проблема состоит в том, что при старте контроллера после включения питания или при выключении питания возможны различные переходные процессы, способные привести к некорректному исполнении программ или порче содержимого ОЗУ. Супервизор питания (Ul) DS обеспечивает формирование сигнала RESET на 150 мс, т.е. на время, достаточное для окончания всех переходных процессов.

Особенности работы микроконтроллера «Программирование внутренних ППЗУ микроконтроллера ADuC812»

Внутренняя Flash-память микроконтроллера ADuC812 отображается на младшие 8 Кб адресного пространства памяти программ. Она может быть перепрограммирована двумя способами:

• Внутрисхемное программирование (In-Circuit Programming). Для этого сигнальная линия PSEN (Program Store Enable) заземляется, а программа загружается через последовательный канал RS-232 во Flash (на персональном   компьютере работает специальная инструментальная программа - загрузчик).

Так в стенде SDK-1.1 перешивается загрузчик (UL3 или НЕХ-202), при этом на ПК запускается программатор Flash для микроконтроллера ADuC812 (dl.exe от Analog Devices).

• Параллельное программирование реализуется с использованием специальных программаторов других производителей. При этом порты РО, PI, Р2 используются в качестве шины адреса и данных, линия ALE (Address Latch Enable) - сигнал записи, порт РЗ - конфигурационный регистр, который определяет действия (стирание, запись и т. д.).

Внутренняя EEPROM-память программируется при помощи SFR регистров: EDATA1-4 - 4 регистра данных для чтения/записи страницы;

EADRL - регистр адреса страницы;

ECON - регистр управления командами доступа к памяти (чтение, запись, стирание, верификация и др.).

И Flash, и EEPROM имеют ограниченное число циклов перезаписи (10000 50000 циклов доступа к памяти/стирание-запись-чтение в ADuC812).

Особенности работы расширителя портов ввода вывода на базе ПЛИС «Регистр шины данных ЖКИ DATA_IND»

Адрес 080001Н. Значение после сброса 00000000В.

Регистр шины данных ЖКИ DATA_IND 7 6 5 4 3 2 1 R/W R/W R/W R/W R/W R/W R/W R/W D7 D6 D5 D4 D3 D2 D1 D Назначение битов регистра DATA_IND Биты Поле Описание 0..7 D0..D7 Регистр DATA IND позволяет устанавливать данные на шине данных ЖКИ и считывать их оттуда. Для организации взаимодействия с ЖКИ (формирования временных диаграмм чтения и записи) необходимо использование регистра С IND.

Порядок выполнения лабораторной работы, оформления и оценки ее результатов, а так же процедура защиты работы.

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

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

3.4. Лабораторная работа 4. Инструментальные средства для работы со стендом SDK-1. Цель, задачи, предмет и объект лабораторной работы по данной теме.

Целью лабораторной работы является изучение инструментальных средств для работы со стендом SDK-1. Задачи:

  • Особенности программирования стенда • Изучение компилятора SDCC • Изучение инструментальной системы МЗР • Функции утилиты МАКЕ • Особенности системы контроля версий Объектом лабораторной работы является стенд SDK-1.1.

Предметом лабораторной работы являются изучение особенностей программирования стенда, компилятора SDCC, инструментальной системы МЗР, функций утилиты МАКЕ, особенности системы контроля версий.

Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности. Лабораторная работа выполняется на стенде SDK 1.1., ПЭВМ (Микропроцессор Intel Pentium DUAL CORE, память 1Гб (оперативная) и 250Гб (винчестер), дисковод СD-DVD R/RW, встроенная звуковая карта, видео – Nvidia GeForce 7300LE 256Мб) с предустановленной операционной системой – Windows XP и комплексом специализированных компьютерных программ и пакетов приложения программирования учебного стенда на языке Си: бесплатный компилятор SDCC и среда разработки Eclipse, утилита GNU Make для сборки проекта. Для доставки исполняемого модуля в стенд SDK–1.1 используется бесплатно распространяемая утилита M3P (ООО «ЛМТ»), загрузка программного обеспечения в стенд SDK–1.1 производится через инструментальный порт RS–232C. С такими инструментальными средствами компиляцию и загрузку программ можно выполнять как в операционной системе Windows, так и в Linux. Для разработки программного обеспечения может быть использована коммерческая среда разработки Keil Software, у которой есть бесплатная версия с ограничением на размер кода.

Литература (основная и дополнительная), требуемая для выполнения лабораторной работы. Для выполнения лабораторной работы студент использует УМП по выполнению лабораторной работы, также может быть использована следующая литература:

основная: [1-4];

дополнительная: [7, 9, 12, 15].

Краткое изложение основных теоретических и методических аспектов проблемы, составляющей содержание предмета лабораторной работы (определения, принципы, методика расчетов, схемы, алгоритмы, условия сравнения и др.).

Для программирования стенда может использоваться любой транслятор ассемблера или С для ядра 8051, например, SDCC или пакет (.iVision от Keil Software.

Этапы программирования стенда SDK-1.1 представлены на схеме.

Основные этапы программирования стенда (с использованием компилятора SDCC):

1. Подготовка программы в текстовом редакторе или среде программирования.

  2. Транслирование исходного текста, сборка и получение загрузочного НЕХ-модуля программы при помощи компилятора SDCC.

3. Подготовка и загрузка исполняемого модуля в стенд через интерфейс RS-232C с помощью инструментальной системы (МЗР). Под подготовкой понимается преобразование загрузочного модуля из НЕХ-формата в бинарный образ.  4. Прием и обработка исполняемого модуля резидентным загрузчиком UL3, который находится во Flash-памяти стенда SDK-1.1. Загрузчик записывает программу во внешнюю память программ и данных по указанному адресу и передает ей управление тоже по указанному адресу.

Рис. 3.11. Этапы программирования стенда SDK-1. Контрольные вопросы для определения степени готовности студента самостоятельно работать с оборудованием, приборами и осуществлять необходимые расчеты, замеры и оформления:

1. Раскройте этапы программирования стенда SDK-1. 2. Что подразумевает процедура транслирования исходного текста программы 3. Дайте определение загрузочного НЕХ-модуля программы 4. Дайте характеристику интерфейсу RS-232C 5. Что такое бинарный образ 6. Раскройте функции резидентного загрузчика UL 7. Для чего предназначен стенд?

8. Охарактеризуйте состав стенда 9. Поясните структуру аппаратной части учебного стенда SDK-1. Задания по лабораторной работе (формулировки по нескольким вариантам с учетом максимальной индивидуализации заданий).

По технической документации, прилагаемой к стенду изучить   инструментальные средства для работы со стендом Задание 1. По варианту индивидуального задания приведенного ниже, определить особенности компилятора SDCC:

1. Опции командной строки компилятора 2. Классы памяти 3. Абсолютная адресация 4. Реентерабельность 5. Оверлеи 6. Обработчики прерываний 7. Критические секции 8. Семафоры 9. Ассемблерные вставки 10. Использование меток 11. Директива_naked 12. Формат Intel HEX Задание 2. По варианту индивидуального задания приведенного ниже, определить особенности инструментальной системы МЗР:

1. Язык FORTH 2. Основные команды МЗР 3. Циклы 4. Условные ветвления 5. Переменные и константы 6. Загрузка файла в SDK-1. Задание 3. По варианту индивидуального задания приведенного ниже, определить особенности утилиты МАКЕ и функции контроля версий:

1. Использование make 2. Пример makefile для Linux 3. Пример makefile для Windows 4. Работа с системой контроля версий Содержание отчета по лабораторной работе:

• Титульный лист.

• Цель, задачи, предмет и объект лабораторной работы по данной теме.

• Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

• Описание индивидуального задания по лабораторной работе.

• Особенности компилятора SDCC • Особенности инструментальной системы МЗР • Особенности утилиты МАКЕ • Ответы на контрольные вопросы.

• Выводы.

• Литература, используемая для выполнения лабораторной работы.

  Пример выполнения индивидуального задания по варианту 5-4- Особенности компилятора SDCC – Оверлеи В нереентерабельных функциях одна и та же область памяти может быть использована повторно. SDCC использует оверлеи по умолчанию. Для отключения режима работы с оверлеями необходимо использовать #pragma nooverlay.

#pragma save #pragma nooverlay void set error(unsigned char erred) { P3 = erred;

} #pragma restore void some isr () interrupt (2) {“ ' error(10);

} В приведенном примере использование erred без #pragma nooverlay привело бы к непредсказуемым последствиям.

Особенности инструментальной системы МЗР - Условные ветвления Условные ветвления -- Операторы IF THEN : test3 2 == if " это двойка... " type cr then ;

— Операторы IF ELSE THEN : test4 2 == if " это двойка... " type cr else " это не двойка" type cr then ;

Особенности утилиты МАКЕ и функции контроля версий - Работа с системой контроля версий Система контроля версий решает сразу несколько задач для разработчика встроенного ПО:

• Позволяет сохранять в надёжном месте весь его проект (выполняет функции интеллектуального архиватора).

• Позволяет предоставить доступ к проекту для всех его участников, а также регламентировать доступ для посторонних людей.

• Позволяет отслеживать все изменения в проекте, возвращаться к старым версиям файлов и вести параллельно сразу несколько вариантов одного   проекта.

В настоящее время системы контроля версий интегрированы в различные интегрированные среды разработки (IDE). Наиболее распространенными системами контроля версий, широко применяемыми на момент написания этого УМК, являются CVS и Subversion. Эти системы очень похожи. CVS появилась раньше, чем Subversion и хорошо себя зарекомендовала. Subversion в настоящий момент активно пробивается в лидеры, в ней исправлено несколько концептуальных ошибок, имеющихся в ее предшественнике SVN.

Порядок выполнения лабораторной работы, оформления и оценки ее результатов, а так же процедура защиты работы.

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

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

3.5. Лабораторная работа 5. Дискретные порты ввода-вывода учебно-лабораторного стенда SDK-1.   Цель, задачи, предмет и объект лабораторной работы по данной теме.

Целью лабораторной работы является изучение дискретных портов ввода вывода учебно-лабораторного стенда SDK-1.1.

Задачи:

Разработать и реализовать драйверы светодиодных индикаторов и DIP переключателей контроллера SDK-1.1.

Написать тестовую программу с использованием разработанных драйверов по алгоритму, соответствующему варианту задания.

Объектом лабораторной работы является стенд SDK-1.1.

Предметом лабораторной работы являются изучение особенностей программирования дискретных портов ввода-вывода учебно-лабораторного стенда SDK-1.1.

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

Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности аналогичны лабораторной работе №4.

Литература (основная и дополнительная), требуемая для выполнения лабораторной работы. Для выполнения лабораторной работы студент использует УМП по выполнению лабораторной работы, также может быть использована следующая литература:

основная: [1-4];

дополнительная: [45], [48], [49], [50], [51], [8], [9], [11], [17], [22].

Краткое изложение основных теоретических и методических аспектов проблемы, составляющей содержание предмета лабораторной работы   (определения, принципы, методика расчетов, схемы, алгоритмы, условия сравнения и др.).

Каждый процессор для встраиваемых применений имеет некоторое количество внешних линий ввода-вывода, подключенных к внешним выводам микросхемы и называемых внешними портами. Одиночные (одноразрядные, состоящие из одной линии) порты ввода-вывода объединяются в группы обычно по 4, 8 или 16 линий, которые называются параллельными портами.

Через порты процессорное ядро взаимодействует с различными внешними устройствами: считывает значения входных сигналов и устанавливает значения выходных сигналов. Во встраиваемых системах в качестве внешних устройств чаще всего рассматриваются датчики, исполнительные устройства, устройства ввода-вывода данных оператором, устройства внешней памяти.

По типу сигнала различают порты: дискретные (цифровые), аналоговые и перестраиваемые.

Дискретные (цифровые) порты используются для ввода-вывода дискретных значений логического «0» или «1». В большинстве современных процессоров для встраиваемых применений поддерживается как независимое управление каждой линией параллельного порта, так и групповое управление всеми разрядами.

Аналоговый порт ввода-вывода предназначен для работы с аналоговым (непрерывным) сигналом. В отличие от дискретного сигнала, принимающего всего два значения, напряжение аналогового сигнала может иметь любое значение (в определенных пределах) и меняться во времени. Пример аналогового сигнала - синусоида. Такую форму, например, имеет электрическое напряжение в сети 220 В 50 Гц.

Перестраиваемые порты ввода-вывода настраиваются на аналоговый или цифровой режим работы.

В контроллере SDK-1.1 изучение дискретных портов ввода-вывода будет проводиться на примере работы с набором светодиодных индикаторов и DIP переключателей (рис. 3.12). Данные устройства вывода и ввода, соответственно, подключены к расширителю портов ввода-вывода, который в стенде SDK-1.1 выполнен на базе ПЛИС (программируемая логическая интегральная схема). Для программиста расширитель портов представлен в виде нескольких однобайтовых регистров, находящихся в начале восьмой страницы внешней памяти данных.

DIP (Dual In-line Package) - тип корпуса микросхем, микросборок и некоторых других электронных компонентов. Имеет прямоугольную форму с двумя рядами выводов по длинным сторонам. Может быть выполнен из пластика (PDIP) или керамики (CDIP). В корпусе DIP могут выпускаться различные полупроводниковые или пассивные компоненты: микросхемы, сборки диодов, транзисторов, резисторов, малогабаритные переключатели.

По умолчанию линии 0-7 дискретного параллельного порта ПЛИС притянуты к логической «1» (через резисторы на +5В). Для их принудительного «обнуления» в схему введен набор DIP-переключателей (на рис. 3. обозначение «SW3-2»), замыкающих соответствующие линии через резисторы   100 Ом на корпус. Для того чтобы принудительно «обнулить»

соответствующую линию, необходимо установить соответствующий DIP переключатель в положение «ON».

Рис. 3.12. Расположение программируемых в лабораторной работе светодиодных индикаторов и DIP-переключателей контроллера SDK-1. Для удобства, двоичный (шестнадцатеричный) код, задаваемый набором DIP-переключателей, выставляется следующим образом: первый переключатель соответствует младшему (0-му) разряду двоичного кода;

восьмой переключатель соответствует старшему (7-му) разряду При этом единичный разряд в коде - это соответствующий DIP-переключатель в положении «ON», нулевой разряд - это соответствующий DIP-переключатель в положении «OFF».

a) Рис. 3.13. Обозначение DIP-переключателей (а) и светодиодных индикаторов (б) на принципиальной электрической схеме контроллера SDK-1.   При установке DIP-переключателя в положение «ON» напряжение не сразу устанавливается на уровне 0В, а «скачет» в течение некоторого времени (1- мс), пока цепь надежно не замкнется. После того, как DIP-переключатель будет установлен в положение «OFF», напряжение также «скачет», пока не установится на уровне +5В. Такого рода переходные процессы называются дребезгом. Таким образом, при изменении положения DIP-переключателя («ON» - «OFF») возникает эффект дребезга, отрицательное влияние которого в данной работе никак не устраняется.

Подробнее эта проблема будет исследоваться в лабораторной работе № 8.

Контрольные вопросы для определения степени готовности студента самостоятельно работать с оборудованием, приборами и осуществлять необходимые расчеты, замеры и оформления:

1. Как различают порты по типу сигнала?

2. Для чего предназначен аналоговый порт ввода-вывода?

3. Как настраиваются перестраиваемые порты ввода-вывода?

4. Что такое DIP (Dual In-line Package)?

5. Поясните расположение программируемых в лабораторной работе светодиодных индикаторов и DIP-переключателей контроллера SDK-1. Задания по лабораторной работе (формулировки по нескольким вариантам с учетом максимальной индивидуализации заданий).

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

Разрабатываемые драйверы устройств должны быть выполнены в виде отдельных программных модулей (файлов), содержащих функции по работе с заданным одним устройством. Например, в этой лабораторной работе драйвер светодиодных индикаторов должен содержать функцию установки состояния светодиодов, а драйвер DIP-переключателей - функцию чтения их состояния. В главном программном модуле должна решаться предлагаемая вариантом задания прикладная задача с использованием разработанных драйверов.

В тестовой программе для осуществления анимации запрещается использовать «покадровое» формирование картинки. Для реализации алгоритма анимации должны быть использованы логические, арифметические и бинарные операции, а также операции сдвигов.

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

В варианте задания представлен лишь фрагмент анимации, при этом все анимации являются циклическими. По приведенному фрагменту требуется определить алгоритм анимации и реализовать его.

В вариантах задания единичный разряд в шестнадцатеричном коде - это соответствующий DIP-переключатель в положении «ON», нулевой разряд - это соответствующий DIP-переключатель в положении «OFF».

Задание 1. В случае установки на DIP-переключателях кода 0x (шестнадцатеричное значение) на светодиодные индикаторы должна выводиться анимация, показанная ниже. Во всех остальных случаях светодиодные индикаторы отражают значение, выставленное на DIP переключателях.

  Задание 2. В случае установки на DIP-переключателях кода 0x (шестнадцатеричное значение) на светодиодные индикаторы должна выводиться первая анимация, в случае установки кода 0xDD (шестнадцатеричное значение) - вторая анимация. Во всех остальных случаях светодиодные индикаторы отражают инвертированное значение, выставленное на DIP- переключателях.

Содержание отчета по лабораторной работе:

• Титульный лист.

• Цель, задачи, предмет и объект лабораторной работы по данной теме.

• Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

• Описание индивидуального задания по лабораторной работе.

• Блок-схема программы • Программный код разработанной программы, с пояснениями.

• Ответы на контрольные вопросы.

  • Выводы.

• Литература, используемая для выполнения лабораторной работы.

Пример выполнения индивидуального задания #include "aduc812.h" #define MAXBASE 0x8 // Номер страницы внешней памяти (xdata), // куда отображаются регистры расширителя портов в/в.

/* write max Запись в нужный регистр ПЛИС ALTERA МАХ3 0 64(3128) Вход: regnum - адрес (номер) регистра val - записываемое значение Выход:

нет Результат: нет Описание: Производится запись в регистр (порт) ПЛИС ALTERA МАХ3 64(3128) путем переключения адресуемой страницы памяти на страницу, где расположены (куда отображаются) порты ввода-вывода ПЛИС.

*/ void write max( unsigned char xdata *regnum, unsigned char val ) { unsigned char oldDPP = DPP;

DPP = MAXBASE;

*regnum = val;

DPP = oldDPP;

} /* read max Чтение из нужного регистра ПЛИС ALTERA МАХ3 0 64(3128) Вход: regnum - адрес (номер) регистра Выход: нет Результат: прочитанное из регистра значение Описание: Чтение из порта ПЛИС ALTERA МАХ3 0 64(3128) путем переключения адресуемой страницы памяти на страницу, где расположены (куда отображаются) порты ввода вывода ПЛИС Пример:

*/ unsigned char read max( unsigned char xdata *regnum ) { unsigned char oldDPP=DPP;

unsigned char val;

DPP = MAXBASE;

val = *regnum;

DPP = oldDPP;

return val;

} /* leds Зажигание линейки светодиодов   Вход: on - управление светодиодами. Каждый бит переменной отвечает за один светодиод: 1 - зажигает, 0 гасит светодиод Выход: нет Результат: нет Описание: Производится доступ к регистру расширителя портов SV с помощью функции write max. Состояние светодиодов хранится в регистре old led.

*/ void leds( unsigned char on ) { write max( SV, on ) ;

old led = on;

} /* main */ // Задержка на заданное количество мс void delay ( unsigned long ms ) { volatile unsigned long i, j;

for( j = 0;

j ms;

j++ ) { for( i = 0;

i 50;

i++ );

} } void main( void ) { int i;

for( i = 0;

i 3;

i++ ) { leds( OxFF );

delay( 100 );

leds( 0x00 );

delay( 100 );

} led( 0,1);

delay( 300 );

led( 1,1);

delay( 300 );

led( 2,1);

delay( 300 );

led( 3,1);

delay( 300 );

led( 4,1);

delay( 300 );

led( 5,1);

delay( 300 );

led( 6, 1 );

delay( 300 );

led( 7,1);

delay( 300 );

delay( 1000 );

for( i = 0;

i 3;

i++ ) { leds( OxFF );

delay( 100 );

leds( 0x00 );

delay( 100 );

} while( 1 ) { leds( 0x55 );

delay( 500 );

leds( OxAA );

delay( 500 );

} } Порядок выполнения лабораторной работы, оформления и оценки ее результатов, а так же процедура защиты работы.

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

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

3.6. Лабораторная работа 6. Таймеры. Система прерываний учебно лабораторного стенда SDK-1. Цель, задачи, предмет и объект лабораторной работы по данной теме.

Целью лабораторной работы является изучение таймеров и системы прерываний учебно-лабораторного стенда SDK-1. Задачи:

Разработать и реализовать драйвер системного таймера микроконтроллера ADuC812.

Написать тестовую программу с использованием разработанного драйвера по алгоритму, соответствующему варианту задания.

Объектом лабораторной работы является стенд SDK-1.1.

Предметом лабораторной работы являются изучение таймеров и системы прерываний учебно-лабораторного стенда SDK-1.1.

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

Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности аналогичны лабораторной работе №4.

Литература (основная и дополнительная), требуемая для выполнения лабораторной работы. Для выполнения лабораторной работы студент использует УМП по выполнению лабораторной работы, также может быть использована следующая литература:

основная: [1-4];

дополнительная: [45], [48], [49], [50], [51], [8], [9], [11], [17], [22].

Краткое изложение основных теоретических и методических аспектов проблемы, составляющей содержание предмета лабораторной работы (определения, принципы, методика расчетов, схемы, алгоритмы, условия сравнения и др.).

Таймер позволяет производить отсчет временных интервалов заданной продолжительности. Принцип действия таймера основан на двоичном счетчике с возможностью предварительной записи исходного значения. После каждого такта синхросигнала счетчик прибавляет или отнимает единицу от имеющегося у него значения. При достижении нуля (т.е. при переполнении), счетчик вырабатывает активный уровень на выходе. Как правило, выходной сигнал таймера заводят на вход запроса прерывания микропроцессора или контроллера прерываний.

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

  Микроконтроллер ADuC812 имеет три программируемых 16-битных таймера/счетчика: таймер 0, таймер 1, таймер 2. Каждый таймер состоит из двух 8-битных регистров ТНХ и TLX. Все три таймера могут быть настроены на работу в режимах «таймер» или «счетчик».

В режиме «таймер» регистр инкрементируется каждый машинный цикл, т.е. можно рассматривать это как подсчет машинных циклов. Так как машинный цикл состоит из 12 перепадов напряжения на тактовом входе микроконтроллера, частота инкрементирования таймера в 12 раз меньше тактовой частоты микроконтроллера (соответствующего кварцевого резонатора).

В режиме «счетчик» регистр инкрементируется по перепаду из «1» в «О»

внешнего входного сигнала, подаваемого на вывод микроконтроллера ТО, Т или Т2 (см. принципиальную электрическую схему контроллера SDK-1.1).

Когда опрос показывает высокий уровень в текущем машинном цикле и низкий уровень в следующем, счетчик увеличивается на 1. Таким образом, на распознавание периода требуются два машинных цикла, максимальная частота подсчета входных сигналов равна 1/24 частоты кварцевого резонатора. На длительность периода входных сигналов ограничений сверху нет. Для гарантированного прочтения входной сигнал должен удерживать значение «1», как минимум, в течение одного машинного цикла микроконтроллера.

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

Данная лабораторная работа посвящена изучению таймера и системы прерываний микроконтроллера ADuC812. Основными функциями системного таймера являются: измерение интервалов времени и выполнение периодических задач. В данной работе с помощью таймеров требуется управлять светодиодными индикаторами (динамическая индикация) или звуковым излучателем (проигрывание мелодии), входящими в состав контроллера SDK-1.1.

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

void InitTimer(void) - Инициализация таймера.

unsigned long GetMsCounter(void) - Получение текущей метки времени в миллисекундах.

unsigned long DTimeMs(unsigned long t0) - Измерение количества миллисекунд, прошедших с временной метки t0 и до текущего времени.

void DelayMs(unsigned long t) - Задержка на t миллисекунд.

Кроме того, могут быть реализованы функции работы с таймером в режиме «счетчик» (например, чтение счетчика).

Драйвер светодиодных индикаторов/звукового излучателя (зависит от варианта задания) должен быть реализован по тому же принципу, что и драйвер системного таймера. А именно: в обработчике прерывания от таймера должна   выполняется сама динамическая индикация/проигрывание мелодии - примеры периодических задач, а через API-функции осуществляется настройка отображения анимации/звука и управление этими процессами.

Яркость свечения светодиода можно регулировать, меняя скважность сигнала управляющего питанием светодиода. Скважность - это отношение периода следования (повторения) импульсов одной последовательности к их длительности. Величина, обратная скважности, называется коэффициентом заполнения. Сигнал со скважностью, равной двум, т.е. длительностью импульсов равной длительности пауз между ними, называется меандром.

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

Таким образом, при скважности питающего сигнала равной 1, светодиод будет светиться с максимальной яркостью. При скважности сигнала управления равной 4 (см. рис. 3.14), светодиод будет светиться с яркостью 25% от максимальной и т.д. Кроме того, нужно стремиться уменьшить период и увеличить частоту сигнала управления, чтобы избежать эффекта мерцания светодиодов.

Рис. 3.14. Пример сигнала со скважностью Для управления звуковым излучателем используется регистр ПЛИС ENA (адрес 080004h). 2-4 биты регистра ENA управляют величиной напряжения на динамике, т.е. позволяют задавать громкость звука: чем больше «единиц»

выставлено в этих битах, тем громче звук. Частота звука задается частотой смены нулей и единиц в управляющих битах регистра ENA. Ниже, в табл. 3.5, приведены частоты нот первой октавы.

Частоты нот каждой соседней октавы отличаются в 2 раза. Например, частота ноты «ля» второй октавы 880 Гц.

Особенности обработки прерываний в стенде SDK-1. В микроконтроллере ADuC812 девять источников прерываний с двумя уровнями приоритетов (см. табл. 3.6). Когда происходит прерывание, значение программного счетчика помещается в стек, а в сам счетчик загружается адрес соответствующего вектора прерывания.

Таблица 3. Частоты музыкальных нот   Нота Частота, Гц До 261, Ре 293, Ми 329, Фа 349, Соль 391, Ля 440, Си 493, Таблица 3.


Адреса векторов прерывания микроконтроллера ADuC Прерывание Наименование Адрес вектора PSMI Монитор источника питания ADuC812 43Н IE0 Внешнее прерывание INTO 03Н ADCI Конец преобразования АЦП 33Н TF0 Переполнение таймера/счетчика 0 0BH IE1 Внешнее прерывание INT1 13H TF1 Переполнение таймера/счетчика 1 1BH I2CI/ISPI Прерывание от IJC/SPI 3BH RI/TI Прерывание от UART 23H TF2/EXF2 Переполнение таймера/счетчика 2 2BH Для каждого источника прерывания программист может задать один из двух уровней приоритета: высокий и низкий. Прерывание с высоким уровнем приоритета может прерывать обслуживание прерывания с низким уровнем приоритета, а если прерывания с разными уровнями происходят одновременно, то прерывание с высоким приоритетом будет обслужено первым.

Обслуживание прерывания не может быть прервано прерыванием с таким же уровнем приоритета. Если два прерывания с одинаковым уровнем приоритета происходят одновременно, то порядок их обработки определяется с помощью следующей табл. 3.7:

Таблица 3.   Порядок обработки прерываний с одинаковым уровнем приоритета Источник Очередность Описание PSMI 1 Монитор источника питания ADuC IE0 2 Внешнее прерывание INTO ADCI 3 Конец преобразования АЦП TF0 4 Переполнение таймера/счетчика IE1 5 Внешнее прерывание INT TF1 6 Переполнение таймера/счетчика I2CI+ISPI 7 Прерывание от I2C/SPI RI+TI 8 Прерывание от UART TF2+EXF2 9 (Низшая) Переполнение таймера/счетчика Прерывания ADuC812 имеют вектора в диапазоне 0003h-0043h, которые попадают в область младших адресов памяти программ. Это пространство соответствует 8Кб (0000h-2000h) FLASH-памяти.

В стенде SDK-1.1 пользователь не имеет возможности записи во FLASH память (запись программ осуществляется во внешнюю память программ и данных), следовательно, не может подставить свои процедуры обработки прерываний (точнее, команды перехода к процедурам) по адресам, соответствующим векторам прерываний.

Рис. 3.15. Использование прерываний в SDK-1. Проблема использования прерываний в пользовательских программах решается следующим образом (см. рис. 3.15):

  По адресам (0003h-0043h) векторов прерываний во FLASH-памяти SDK 1.1 располагаются команды переходов на вектора пользовательской таблицы, размещенной в адресах 2003h-2043h.

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

В ходе выполнения лабораторной работы производится ознакомление с организацией и принципом работы не только таймеров/счетчиков по прерываниям, но и внешних прерываний INT0/INT1. Необходимо отметить, что в случае последних возможны следующие настройки: по перепаду (фронт или спад напряжения) или по уровню напряжения на внешнем входе. В контроллере SDK-1.1 линии счетного входа таймера/счетчика 0/1 (Т0/1) и внешних прерываний INT0/INT1 выведены на DIP-переключатели SW3-1 (см. рис. 3.16).

Рис. 3.16. Расположение линий Т0/1 и INT0/1 МК ADuC812 (справа) и их вывод на DIP-переключатели (слева) на принципиальной электрической схеме контроллера SDK-1. Необходимо настроить внешнее прерывание INT0/1 так, чтобы оно работало по спаду, а не по уровню (регистр специального назначения TCON).

Для корректной работы внешнего прерывания INTO 5-й бит регистра управления ENA (адрес 0x080004 ПЛИС) должен быть равен 1.

Контрольные вопросы для определения степени готовности студента самостоятельно работать с оборудованием, приборами и осуществлять необходимые расчеты, замеры и оформления:

1. Для чего используются таймеры?

2. В чем отличие двух режимов работы таймера?

3. Какие основные функции системного таймера Вам известны?

4. Из каких двух частей должен состоять драйвер системного таймера?

5. Как регулируется яркость свечения светодиода?

6. Какой регистр используется для управления звуковым излучателем?

7. Особенности обработки прерываний в стенде SDK-1.1?

Задания по лабораторной работе (формулировки по нескольким вариантам с учетом максимальной индивидуализации заданий).

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

Разрабатываемые драйверы устройств должны быть выполнены в виде отдельных программных модулей (файлов), содержащих функции по работе с заданным одним устройством.

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

В варианте задания с использованием светодиодов представлен лишь фрагмент анимации, при этом все анимации являются циклическими. По приведенному фрагменту требуется определить алгоритм анимации и реализовать его. Смена яркости свечения светодиодов должна быть плавной, без видимых «рывков» и эффекта «мерцания».

Задание 1. Контроллер SDK-1.1 на линейку светодиодов циклически отображает приведенную ниже анимацию или выводит количество замыканий входа Т0 (счетный вход таймера 0 на рис. 3.16). Подсчет количества замыканий входа должен быть реализован с помощью таймера- счетчика 0. Смена режима отображения производится по поступлению сигнала внешнего прерывания INTO (рис. 3.16). В анимации должны использоваться не менее 6 градаций яркости свечения светодиодов (например, 0%, 20%, 40%, 60%, 80% и 100%). В результате выполнения работы должны быть разработаны драйверы системного таймера, таймера- счетчика, светодиодных индикаторов, внешнего прерывания.

Задание 2. Контроллер SDK-1.1 циклически проигрывает восходящую гамму нот первой октавы (длительность каждой ноты - 1 секунда) и на линейку светодиодов выводит количество замыканий входа ТО (счетный вход таймера на рис. 3.16). Подсчет количества замыканий входа должен быть реализован с помощью таймера-счетчика 0. В результате выполнения работы должны быть разработаны драйверы системного таймера, таймера- счетчика, звукового излучателя, светодиодных индикаторов.

Содержание отчета по лабораторной работе:

• Титульный лист.

• Цель, задачи, предмет и объект лабораторной работы по данной теме.

• Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

  • Описание индивидуального задания по лабораторной работе.

• Модель взаимодействия прикладной программы, прикладной части драйверов и системной части драйверов.

• Программный код разработанной программы, с пояснениями.

• Ответы на контрольные вопросы.

• Выводы.

• Литература, используемая для выполнения лабораторной работы.

Пример выполнения индивидуального задания В приведенном примере программы реализована анимация на светодиодных индикаторах. Исходные коды драйвера ПЛИС смотрите в разделе 6.2.

unsigned long systime = 0;

/////////////////////////////////////////////////////////////////////////// // Инициализация Таймера 0 (1000Гц) /////////////////////////////////////////////////////////////////////////// void InitSystimerO( void ) { TCON = 0x00;

// Выключение таймера 0 (и таймера 1) TMOD = 0x01;

// Выбор режима работы 16-разрядный таймер TH0 = OxFC;

// Инициализация таймера 0:

TL0 = 0x67;

// настройка на частоту работы 1000 Гц (чуть больше) TCON = 0x10;

// Включение таймера } /////////////////////////////////////////////////////////////////////////// // Чтение милисекундного счетчика /////////////////////////////////////////////////////////////////////////// unsigned long GetMsCounter( void ) { unsigned long res;

ET0 = 0;

res = systime;

ET0 = 1;

return res;

} /////////////////////////////////////////////////////////////////////////// // Возвращает прошедшее время (от момента замера) /////////////////////////////////////////////////////////////////////////// unsigned long DTimeMs( unsigned long t2 ) { unsigned long tl = ( unsigned long )GetMsCounter();

  return tl - t2;

} /////////////////////////////////////////////////////////////////////////// // Задержка в милисекундах /////////////////////////////////////////////////////////////////////////// void DelayMs( unsigned long ms ) { unsigned long tl = ( unsigned long )GetMsCounter();

while ( 1 ) { if ( DTimeMs( tl ) ms ) break;

} } /////////////////////////////////////////////////////////////////////////// TO_ISR /////////////////////////////////////////////////////////////////////////// // Обработчик прерывания от таймера 0.

/////////////////////////////////////////////////////////////////////////// void TO ISR( void ) interrupt ( 1 ) { // Время в милисекундах systime++;

THO = 0xFC;

// Инициализация таймера 0:

TLO = 0x67;

// настройка на частоту работы 1000 Гц (чуть больше) } //////////////////////// SetVector ////////////////////////// // Функция, устанавливающая вектор прерывания в пользовательской таблице // прерываний.

// Вход: Vector - адрес обработчика прерывания, // Address - вектор пользовательской таблицы прерываний.

// Выход: нет.

// Результат: нет. ////////////////////////////////////////////////////////////// void SetVector(unsigned char xdata * Address, void * Vector) { unsigned char xdata * TmpVector;

// Временная переменная // Первым байтом по указанному адресу записывается // код команды передачи управления ljmp, равный 02h *Address = 0x02;

// Далее записывается адрес перехода Vector TmpVector = (unsigned char xdata *) (Address + 1);

*TmpVector = (unsigned char) ((unsigned short)Vector 8);

++TmpVector;

*TmpVector = (unsigned char) Vector;

// Таким образом, по адресу Address теперь // располагается инструкция ljmp Vector   } void main( void ) { unsigned char light = 1;

InitSystimerO();

// Установка вектора в пользовательской таблице SetVector( 0x200В, (void *)Т0 ISR );

// Разрешение прерываний от таймера ET0 = 1;

ЕА = 1;

while( 1 ) { leds( light );

if( light == 0xFF ) light = 1;

else light |= light 1;

DelayMs( 300 );

} } Порядок выполнения лабораторной работы, оформления и оценки ее результатов, а так же процедура защиты работы.


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

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

3.7. Лабораторная работа 7. Последовательный интерфейс RS-232.

UART учебно-лабораторного стенда SDK-1.   Цель, задачи, предмет и объект лабораторной работы по данной теме.

Целью лабораторной работы является изучение последовательного интерфейса RS-232. UART учебно-лабораторного стенда SDK-1. Задачи:

Разработать и написать драйверы последовательного канала для учебно лабораторного стенда SDK-1.1 с использованием и без использования прерываний.

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

Объектом лабораторной работы является стенд SDK-1.1.

Предметом лабораторной работы являются изучение последовательного интерфейса RS-232. UART учебно-лабораторного стенда SDK-1. Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

  Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности аналогичны лабораторной работе №4.

Литература (основная и дополнительная), требуемая для выполнения лабораторной работы. Для выполнения лабораторной работы студент использует УМП по выполнению лабораторной работы, также может быть использована следующая литература:

основная: [1-4];

дополнительная: [37], [38], [50], [51].

Краткое изложение основных теоретических и методических аспектов проблемы, составляющей содержание предмета лабораторной работы (определения, принципы, методика расчетов, схемы, алгоритмы, условия сравнения и др.).

Последовательный порт в микроконтроллерах MCS-51 позволяет осуществлять последовательный дуплексный ввод-вывод в синхронном и асинхронном режимах с разными скоростями обмена. Помимо обычного ввода вывода, в нем предусмотрена аппаратная поддержка взаимодействия нескольких микроконтроллеров.

Схематически контроллер последовательного порта представлен на рис.

3.17. Как видно из рисунка, регистр SBUF, доступный пользователю для чтения и записи, есть на самом деле два регистра, в один из которых можно только записывать, а из другого - читать. Контроллер позволяет дуплексный обмен данными, т.е. одновременно может передавать и принимать информацию по линиям TxD (Р3.1) и RxD (Р3.0) соответственно.

Рис. 3.17. Схема контроллера UART МК ADuC Передача инициируется записью в SBUF байта данных. Этот байт переписывается в сдвиговый регистр, из которого пересылается бит за битом.

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

Прием осуществляется в обратном порядке: после начала процесса приема принятые биты данных последовательно сдвигаются в сдвиговом регистре,   пока не будет принято их установленное количество, затем содержимое сдвигового регистра переписывается в SBUF и устанавливается флаг RI. После этого возможен прием следующей последовательности бит. Необходимо отметить, что запись принятого байта из сдвигового регистра в SBUF происходит только при условии, что RI=0, поэтому при заборе пользовательской программой очередного байта из SBUF ей необходимо сбрасывать этот флаг, иначе принятый в сдвиговый регистр, но не записанный в SBUF, следующий байт будет безвозвратно утерян.

Контроллер последовательного порта может работать в одном из четырех режимов (один синхронный и три асинхронных), различающихся скоростями обмена (бод) и количеством передаваемых/принимаемых бит:

Режим 0 (синхронный): данные передаются и принимаются через RxD, TxD является синхронизирующим (выдает импульсы сдвига). Скорость в этом режиме фиксирована (1/12 частоты тактового генератора).

Режим 1 (8 бит данных, асинхронный, переменная скорость). Передаются 10 бит: старт-бит, 8 бит данных (SBUF) и стоп-бит.

Режим 2 (9 бит данных, асинхронный, фиксированная скорость).

Передаются 11 бит: старт-бит, 8 бит (SBUF), бит TB8/RB8 (посылка/прием соответственно) и 1 стоп-бит. Биты ТВ8 и RB8 содержатся в регистре SCON (биты 3 и 2 соответственно), первый устанавливается программно, а второй содержит 9-й бит принятой комбинации. С помощью них можно организовать, например, контроль четности или обмен с двумя стоп-битами.

Режим 3 (9 бит данных, асинхронный, переменная скорость). То же, что и режим 2, только скорость обмена переменная.

В режиме 1 и 3 используются Таймер 0 и/или Таймер 1 для настройки скорости обмена.

Организация буферизированного последовательного ввода-вывода в стенде SDK-1. В микроконтроллере ADuC812 прерывание от последовательного канала имеет номер 4, адрес-вектор 0x23 и генерируется контроллером последовательного порта во время установки флага TI или RI. Чтобы разрешить это прерывание, нужно установить биты ES и ЕА регистра IEN0.

Управление обработчику прерывания передается тогда, когда UART либо готов к передаче очередного байта (Т1=1), либо принял байт из канала (RI=1).

При использовании этой схемы появляется проблема посылки первого байта.

Пусть прикладная программа желает послать байт, когда очередь WFIFO пуста и в порт данные не записывались длительное время (Т1=0). Так как обработчик прерываний, обслуживающий очередь, вызывается только при установленных флагах RI или TI, прикладной программе придется либо самой записать первый байт в SBUF (начав тем самым процесс передачи), либо, записав байты для передачи в очередь WFIFO, искусственно установить флаг TI (вызвав тем самым обработчик, который обслужит очередь). Проблема разрешима, однако при ее решении необходимо учитывать, что TI также сброшен, когда контроллер занят посылкой байта, даже если очередь (WFIFO) пуста (посылка последнего байта в очереди).

  Рис. 3.18. Драйвер UART (диаграмма DFD) Организация программы На рис. 3.19 изображены основные компоненты программы, которая должна быть результатом выполнения задания: драйвер последовательного канала;

разборщик/преобразователь данных, переданных (принятых) по UART;

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

Рис. 3.19. Основные составляющие программы Драйвер последовательного канала, организованного по опросу, должен содержать три функции: функция инициализации UART, функция передачи и приема байта данных по UART.

Драйвер последовательного канала по прерыванию состоит из функции инициализации UART, обработчика прерывания от UART, циклических буферов чтения и записи, API-функций: чтения байта из последовательного канала и записи байта в последовательный канал. Взаимодействие обработчика и API- функций осуществляется только через буфер. Обработчик взаимодействует с последовательным каналом напрямую. Если прерывание вызвано приходом байта по последовательному каналу, то обработчик записывает байт в буфер чтения RFIFO. Если прерывание вызвано окончанием   передачи, то обработчик проверяет состояние буфера записи WFIFO, и, если он не пуст, считывает и пересылает следующий байт.

Рис. 3.20. Компоненты драйвера последовательного канала, организующего обмен данными по прерыванию Функция чтения байта ReadUART() проверяет состояние буфера RFIFO, и если он не пуст, считывает из него байт Функция WriteUART() записывает байт в буфер записи последовательного канала WFIFO. Если до записи буфер был пуст, необходимо аппаратно вызвать обработчик прерывания, чтобы инициировать передачу данных. В случае, когда к моменту записи в буфере уже находятся какие-либо данные, обработчик вызывать не надо, так как запись была инициирована раньше и в данный момент последовательный канал занят передачей данных, записанных в буфер ранее.

Принятые при помощи драйвера UART данные требуют обработки в соответствии с вариантом задания: смена нижнего регистра на верхний, фильтрация только по числовым или буквенным значениям, по количеству вводимых значений и др. Таким образом, требуется написать функцию (разборщик/преобразователь), которая будет отфильтровывать значения, неудовлетворяющие заданному алфавиту корректных символов. Далее над отфильтрованными данными производится указанная в варианте задания операция: арифметическое действие или конвертирование. Обработка ошибок в разборщике/преобразователе и прикладном алгоритме тоже должна быть предусмотрена.

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

Организация обработчика прерывания UART Окончание передачи байта и окончание приема байта по последовательному каналу вызывают одно и тоже прерывание и в обработчике два этих прерывания различаются программно. Обработчик логически разделен на две части: одна работает при установленном флаге RI (окончание приема), а другая при установленном флаге TI (окончание передачи).

  Контрольные вопросы для определения степени готовности студента самостоятельно работать с оборудованием, приборами и осуществлять необходимые расчеты, замеры и оформления:

1. Для чего предназначен последовательный порт в микроконтроллерах MCS-51?

2. Опишите схему контроллера UART МК ADuC81.

3. В каких режимах может работать контроллер последовательного порта?

4. Раскройте особенности организации буферизированного последовательного ввода-вывода в стенде SDK-1.1.

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

6. Раскройте особенности организации обработчика прерывания UART.

Задания по лабораторной работе (формулировки по нескольким вариантам с учетом максимальной индивидуализации заданий).

В рамках лабораторной работы необходимо разработать программу для контроллера SDK-1.1 (ведомый), который обменивается данными с персональным компьютером (ведущий). В качестве канала связи используется последовательный канал RS-232. На стороне персонального компьютера имеется инструментальное средство для обеспечения взаимодействия с SDK 1.1 - это терминальная программа М3Р.

Программа должна выполнять две задачи в соответствии с вариантом задания. Первая задача выполняется при помощи драйвера последовательного канала, работающего по опросу, - это реализация так называемого “эха”: со стороны персонального компьютера передаются символы контроллеру SDK 1.1, на которые контроллер отвечает определенным образом (см. вариант задания). Вторая задача выполняется при помощи драйвера последовательного канала, реализованного в режиме прерываний с буферизацией байтов в буфере FIFO. Такой задачей является реализация устройства, которое выполняет одну арифметическую операцию над десятичными числами, или конвертора из одной системы счисления в другую. Переключение между двумя задачами в программе должно быть выполнено с использованием DIP- переключателей (см. лабораторная работа № 1).

Этапы выполнения задания:

1. Написать драйвер последовательного канала по опросу и простую тестовую программу для него.

2. Написать драйвер последовательного канала, осуществляющий асинхронный обмен данными по прерыванию, и отладить при помощи уже написанной тестовой программы (см. п. 1).

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

В тестовой программе должна быть продемонстрирована работа с последовательным интерфейсом и по опросу, и асинхронно по прерыванию, т.е.

должны быть реализованы и использованы драйверы UART двух видов для решения двух разных задач, указанных в варианте задания.

  Разрабатываемые драйверы устройств должны быть выполнены в виде отдельных программных модулей (файлов), содержащих функции по работе с заданным одним устройством.

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

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

Задание. Задание состоит из двух частей: первая выполняется с использованием драйвера последовательного канала по опросу, вторая - по прерыванию. Переключение между двумя частями в тестовой программе должно быть выполнено с использованием DIP-переключателей (лабораторная работа № 1). Скорость последовательного канала - 9600 бит/с.

1. Каждый принятый по последовательному каналу символ (от персонального компьютера к SDK-1.1) передается в утроенном виде в обратную сторону (от SDK-1.1 к персональному компьютеру) и отображается в терминальной программе. Причем все символы русского алфавита отображаются в нижнем регистре, все символы английского алфавита - в верхнем регистре. Например, на символ «л» («Л») ответом является «ллл», «1» «111» и т.д.

2. Конвертор из десятичной в двоичную систему счисления. Диапазон преобразуемых значений - от 010 до 25510 включительно. 8-разрядная сетка для отображения двоичных чисел. Контроллеру SDK-1.1 по последовательному каналу со стороны персонального компьютера с использованием терминальной программы передается десятичное число для конвертирования, причем число это отображается в терминале, а концом ввода является перевод на следующую строку (CRLF). После чего контроллер возвращает результат преобразования числа в двоичную систему счисления, который отображается в терминале персонального компьютера и на светодиодных индикаторах стенда SDK-1.1 (лабораторная работа № 1). Каждое новое преобразование начинается с новой строки. Сигнализация в случае ввода некорректных значений сообщение об ошибке в последовательный канал.

Содержание отчета по лабораторной работе:

• Титульный лист.

• Цель, задачи, предмет и объект лабораторной работы по данной теме.

• Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

• Описание индивидуального задания по лабораторной работе.

• Иллюстрация организации и функционирования разработанного программного обеспечения (драйверы, тестовая программа) в виде блок-схемы, диаграммы процессов, потоков данных, диаграммы состояний автоматов и других способов структурного и поведенческого описания программы (по выбору студента).

• Программный код разработанной программы, с пояснениями.

  • Ответы на контрольные вопросы.

• Выводы.

• Литература, используемая для выполнения лабораторной работы.

Пример выполнения индивидуального задания Простейшим из способов организации последовательного обмена является асинхронный обмен с программной проверкой готовности. Примером такого обмена может служить работа с контроллером последовательного канала (UART) МК ADuC812 в стенде SDK-1.1 «по опросу». Если требуется переслать байт, то: 1) сбрасывается TI;

2) в SBUF записывается нужный байт данных;

и 3) ожидается, пока TI не будет установлен контроллером. С приемом здесь сложнее: нужно постоянно проверять флаг RI и, если он установлен, то читать принятый байт из SBUF и сбрасывать RI. Такой способ удобен, когда разработчику четко известно, когда произойдет прием данных и когда его завершать. Неудобен он тем, что время выполнения самой программы напрямую зависит от скорости обмена. В самом деле, чем медленнее скорость, тем дольше по времени цикл ожидания готовности к приему/посылке следующего байта.

Пример программы:

/* init sio Инициализирует последовательный канал на заданной скорости.

Вход: char speed - скорость. Задается константами, описанными в заголовочном файле sio.h bit sdouble - дублирование скорости: 0 - не дублировать скорость, заданную аргументом speed;

1 - дублировать.

Выход: нет Результат: нет */ void init sio( unsigned char speed ) { TH1 = speed;

TMOD |= 0x20;

//Таймер 1 будет работать в режиме autoreload TCON |= 0x40;

//Запуск таймера SCON = 0x50;

//Настройки последовательного канала ES =0;

//Запрещение прерываний от приемопередатчика } /* RSioStat Возвращает ненулевое значение, если буфер приема не пуст Вход: нет Выход: нет Результат:

  0 - буфер приема пуст, 1 - был принят символ */ unsigned char rsiostat(void) return RI;

} /* wsio Отправляет символ по последовательному каналу Вход: unsigned char с - символ, который нужно отправить Выход: нет Результат: нет */ void wsio( unsigned char с ) { SBUF = с;

TI =0;

while ( !TI ) ;

} /* rsio Дожидается приема символа из последовательного канала и возвращает его.

Вход: нет Выход: нет Результат: принятый символ */ unsigned char rsio(void) { while( !RI );

RI = 0;

return SBUF;

} /* type Выводит ASCIIZ-строку в последовательный канал Вход: char *str - указатель на строку Выход:нет Результат: нет */ void type(char * str) {   while( *str ) wsio( *str++ ) ;

} /* main */ void main( void ) { unsigned char c;

init sio( S9600 ) ;

type("Тест драйвера SIO для стенда SDK-1.l\r\n");

type("Нажимайте кнопки для тестирования... \r\n");

while( 1 ) { if( rsiostat () ) { с = rsio () ;

switch( с ) { case '1': type("\r\ntest l\r\n");

break;

case '2': type("\r\ntest 2\r\n");

break;

case '3': type("\r\ntest 3\r\n");

break;

default: wsio( с );

break;

} } } } Порядок выполнения лабораторной работы, оформления и оценки ее результатов, а так же процедура защиты работы.

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

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

3.8. Лабораторная работа 8. Разработка драйвера клавиатуры учебно-лабораторного стенда SDK-1.   Цель, задачи, предмет и объект лабораторной работы по данной теме.

Целью лабораторной работы является разработка драйвера клавиатуры учебно лабораторного стенда SDK-1. Задачи:

Разработать и написать драйвер клавиатуры для учебно-лабораторного стенда SDK-1.1.

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

  Объектом лабораторной работы является стенд SDK-1.1.

Предметом лабораторной работы являются технологии  разработки  драйвера клавиатуры для учебнолабораторного стенда SDK1.1.  Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности.

Перечень и характеристика оборудования, приборов и материалов, необходимых для выполнения лабораторной работы с указанием требований по технике безопасности аналогичны лабораторной работе №4.

Литература (основная и дополнительная), требуемая для выполнения лабораторной работы. Для выполнения лабораторной работы студент использует УМП по выполнению лабораторной работы, также может быть использована следующая литература:

основная: [1-4];

дополнительная: [38], [50], [51], [8], [9], [21] Краткое изложение основных теоретических и методических аспектов проблемы, составляющей содержание предмета лабораторной работы (определения, принципы, методика расчетов, схемы, алгоритмы, условия сравнения и др.).

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



Pages:     | 1 | 2 || 4 | 5 |
 





 
© 2013 www.libed.ru - «Бесплатная библиотека научно-практических конференций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.