Главная страница
Навигация по странице:

  • © МИРЭА, А.Н.Богаченков Цифровые устройства и микропроцессоры II часть Практические занятия Занятие 7

  • Функциональная схема устройства

  • © МИРЭА, А.Н.Богаченков

  • . . . 3 ЦУМП, Практические занятия, © МИРЭА, А.Н.Богаченков

  • © МИРЭА, А.Н.Богаченков Алгоритм основной программы

  • © МИРЭА, А.Н.Богаченков Цифровые устройства и микропроцессоры II часть Практические занятия Занятие 8

  • Форматы представления пиксела изображения

  • Управление индикацией


    Скачать 1.95 Mb.
    НазваниеУправление индикацией
    Дата04.10.2021
    Размер1.95 Mb.
    Формат файлаpdf
    Имя файлаTsUMPY_Praktiki.pdf
    ТипЗадача
    #241407
    страница3 из 4
    1   2   3   4
    © МИРЭА, А.Н.Богаченков
    Алгоритм обработчика прерывания по флагу передачи
    Прерывания по флагу передачи разрешаются после подготовки передаваемого сообще- ния, обработчик вызывается сразу же для загрузки в регистр передачи первого байта. При записи в регистр передачи флаг передачи автоматически сбрасывается. Следующий вызов произойдет, как только данные начнут передаваться по каналу, и регистр передачи освобо- дится для следующего байта.
    Интерфейс с расширенными возможностями может иметь не одиночные регистры при- ема/передачи, а целые буферы для блоков данных (с организацией FIFO). Подробнее см. ма- териал лекций.
    Вход
    Возврат
    Выборка текущего кода из буфера и загрузка в регистр передачи
    Признак процесса передачи установлен да нет
    Возврат
    Декремент счетчика передаваемых кодов
    Все коды переданы да нет
    Возврат
    Сброс признака процесса передачи
    Запрет прерываний от интерфейса передачи

    1
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    Цифровые устройства и микропроцессоры
    II часть
    Практические занятия
    Занятие 7
    Программирование устройства ввода с клавиатуры
    Задача. Реализовать ввод символов с клавиатуры с числом клавиш не менее 80 и вы- вод символов на дисплей. Предусмотреть переключение регистра символов (строч- ные/прописные, цифры/знаки). Обеспечить защиту от дребезга.
    Устройство может использоваться для подготовки отправляемых по каналу связи со- общений, оформления информационных табло, ввода паролей и т.п.
    Функциональная схема устройства
    Клавиши объединены в матрицу из 8 строк и 10 столбцов. В такой схеме клавиши мо- гут нажиматься только по одной. Регистровая клавиша является независимой. Разряды порта
    B — входные, на них должны быть установлены подтягивающие резисторы. Один цикл опроса клавиатуры состоит в поочередном выставлении активных уровней на строках — разрядах PA0...PA7 и чтении состояния столбцов. Циклы повторяются непрерывно. Один из вариантов программного устранения дребезга — анализ результата за N последних циклов опроса, при совпадении результатов во всех этих циклах идентифицируется либо нажатие

    2
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    определенной клавиши, либо отсутствие нажатия. В разрабатываемом алгоритме для просто- ты будет использоваться N = 2. Если перебор строк производить с периодичностью 1 мс, полное время опроса клавиатуры составит 16 мс.
    Результатом чтения кода с клавиатуры является значение в одной из стандартных ко- дировок (ASCII, Windows, Unicod и др.). Это значение помещается в специальный регистр кода клавиши, опрос которого будет производиться отдельной функцией, аналогичной функциям консольного ввода в компьютерных программах (
    getch
    , getchar
    ). В компьютер- ном варианте функция не возвращает управления, пока клавиша не будет нажата. В нашем случае будет реализован механизм чтения кода без ожидания, если клавиша в момент вызова функции не нажата, возвращается значение -1. Сами коды клавиш определяются по номеру строки и номеру столбца, на пересечении которых находится клавиша, для этой цели удобно использовать два двумерных массива — основной и дополнительный, последний — если нажата регистровая клавиша ("Shift") .
    Исходя из прикладной задачи, в которой используется клавиатурный ввод, процесс опроса клавиатуры может быть организован как по системе прерываний (в случае, когда в любой момент требуется реакция на нажатие), так и единичным запуском данной процедуры.
    Для ввода и отображения текстовой строки в памяти создан символьный буфер — мас- сив размером с требуемой длиной вводимой строки. Каждый элемент массива хранит код символа (одно или двухбайтовый, в зависимости от кодировки), для очистки буфера и, соот- ветственно, дисплея в массив заносятся коды символа "пробел". Функция чтения кода клави- атуры должна возвращать код клавиши из регистра кода и тут же этот регистр очищать, что- бы при повторном вызове функции не идентифицировалось новое нажатие (если на самом деле не была нажата новая клавиша).
    Устройство отображения предметом детальной проработки в настоящем проекте не яв- ляется. На схеме показано наипростейшее сопряжение с символьным или графическим дис- плеем по интерфейсу I
    2
    C. В интерфейсе всего два сигнала и он медленный. Для символьного многострочного дисплея скорости хватает, а графический дисплей может быть применен только с низким разрешением (максимум 128 x 128 пикселей).
    Некоторые пояснения по алгоритму опроса. Пример диаграммы процесса представлен ниже.
    Подпрограмма вызывается с некоторой временной периодичностью, например, каждую миллисекунду. За один вызов опрашивается только одна строка. Код от столбцов при нажа- тии какой-то одной клавиши является унитарным (с одним активным уровнем), поэтому для
    Выбор строки 0
    Выбор строки 1
    Код столбца
    Выбор строки 7
    Один цикл сканирования
    . . .

    3
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    нахождения номера столбца необходимы дополнительные операции (реализация функции приоритетного шифратора). Один цикл опроса завершается после перебора всех строк, ре- зультатом его является "текущий" код нажатой в данный момент клавиши, сохраняемый да- лее как "предыдущий". Для всех последующих циклов "текущий" сравнивается с "предыду- щим" и только при их совпадении идентифицируется реальное нажатие клавиши. Но если клавиша остается нажатой, то для исключения повторной идентификации нового нажатия задействован флаг нажатия, который устанавливается при самом первом обнаружении нажа- той клавиши и не сбрасывается, пока клавиша не будет отпущена.
    Еще одна тонкость заложена в последовательности выбора строки и чтения состояния столбцов. Между этими событиями должна быть задержка на стабилизацию кода столбца (в клавиатурной матрице большие монтажные емкости и длинные дорожки). Эта задержка со- ответствует периоду вызова подпрограммы, в которой сначала производится операция чте- ния, и уже затем запись нового кода для выбора строки.
    Если в прикладной задаче не требуется постоянный опрос клавиатуры, то прерывания можно исключить, а приведенную подпрограмму при необходимости вызывать из основного потока, но поместив ее в программный цикл по числу строк и числу циклов опроса (в данном примере потребуется вызвать 16 раз). Не следует забывать о необходимости некоторой вре- менной задержки (см. предыдущий абзац).
    И еще один вариант обслуживания состоит в сохранении фонового процесса постоян- ного опроса по прерываниям (как в нашем случае), но при установке флага нажатия допол- нительно программно генерируется запрос прерывания, например, от некоего внешнего сиг- нала или другого источника (включая программные исключения ядра). В отдельном обра- ботчике прерывания уже реализуются необходимые действия в соответствии с введенным кодом клавиши. По такому принципу строится реакция на нажатие "горячих" клавиш в ком- пьютерных операционных системах.
    Доработки, предлагаемые для самостоятельной работы:
    1. Проверка вводимых символов на некоторый разрешенный набор (например, запрет некоторых знаков, ввод только определенных символов или цифр, ввод чисел в заданном диапазоне и т.п.).
    2. Использование курсора.
    3. Задание произвольного числа циклов опроса.
    4. Реализация автоповтора при удержании клавиши нажатой в течение некоторого вре- мени.
    5. Звуковая индикация нажатия клавиш.
    6. Сохранение текущего состояния ввода при сбросе.

    4
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    Алгоритм основной программы
    Клавиша нажата
    Начало нет
    Вывод на дисплей начальной заставки
    Аппаратная инициализация: портов, дисплея, таймера, прерываний, сторожевого таймера.
    Программная инициализация:
    - очистка регистра кода клавиши,
    - сброс флага нажатия,
    - задание номера начального цикла опроса,
    - очистка (заполнение пробелами) символь- ного буфера
    Вызов функции чтения кода клавиатуры
    Клавиша Backspace
    Клавиша Enter
    Число симв. < макс.
    Вывод буфера на дисплей
    Выполнение действий в соответствии с выполняемой задачей
    Увеличение числа введенных символов, сдвижка символов в буфере влево, запись нового символа в правую позицию
    Уменьшение числа введенных символов, сдвижка символов в буфере вправо
    Режим сна
    Число симв. > 0 да нет нет (буфер заполнен) да да да да нет нет
    (буфер пуст)
    Обслуживание сторожевого таймера

    5
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    Алгоритм подпрограммы опроса клавиатуры,
    вызывается по прерываниям от таймера
    Вход
    Выход
    Есть нажатие
    Определение кода клавиши по номерам строки, столбца и по состоянию клавиши Shift.
    Сохранение кода как текущего кода нажатой клавиши да нет
    Чтение состояния столбцов и клавиши Shift
    Строка последняя
    Цикл опроса
    Уст. признака 2-го цикла
    Уст. признака 1-го цикла
    Сравнение текущего и преды- дущего кодов клавиши
    Сохранение текущего кода как предыдущего
    Коды совпадают
    Запись кода в регистр кода нажатой клавиши, установка флага нажатия
    Очистка текущего кода клавиши (запись -1)
    Обнуление номера строки
    Определение выводимого кода по номеру строки.
    Вывод кода в порт
    Увеличение номера строки да нет
    1-й 2-й да нет
    Флаг нажатия не установлен
    Сброс флага нажатия установлен
    Есть нажатие да нет

    1
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    Цифровые устройства и микропроцессоры
    II часть
    Практические занятия
    Занятие 8
    Графический интерфейс в микроконтроллерах
    Введение
    Занятие посвящено вопросам сопряжения микроконтроллера с графическим дисплеем, элементам программирования аппаратного и пользовательского интерфейсов. Номенклатура выпускаемых в настоящее время дисплеев обширна [1]. Наиболее распространенными явля- ется жидкокристаллические дисплеи с активной матрицей (TFT – thin-film transistor), панели на основе органических светодиодов (OLED).
    Непосредственно экран дисплея состоит из множества точек (пикселей), которыми управлять напрямую процессор не способен (рис. 1) [2]. Поэтому обслуживанием отдельных пикселей занимается специализированный аппаратный контроллер, а с процессором осу- ществляется связь посредством одного из стандартных интерфейсов. Для автономных мик- ропроцессорных систем (которые и являются предметом изучения в курсе) применяют дис- плеи ограниченного размера и разрешения — до 7 дюймов (редко до 10) и до 800 х 480 точек
    (
    0.4 мегапиксела).
    Рис. 1
    Интерфейсы подключения
    Простейший вариант сопряжения был показан на предыдущем занятии — по интер- фейсу I
    2
    C (рис. 2). Главное достоинство этого варианта — минимальное число сигналов: так- товые импульсы и данные. А общеизвестный недостаток — низкая скорость, из-за чего в этой схеме могут использоваться дисплеи с относительно небольшим разрешением (наибо- лее распространены: от 64 х 32 точек до 128 х 128 точек). При стандартной скорости интер- фейса 400 кбит/с максимальная частота обновления для одноцветного дисплея 128 х 128 со- ставит около 20 кадров в секунду, для цветного — в 8...20 раз меньше.

    2
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    Рис. 2
    Гораздо большую скорость обеспечивает SPI. Большинство устройств с таким интер- фейсом могут работать на тактовых частотах до 10–20 МГц. Типичная схема подключения показана на рис. 3 [3]. Интерфейс SPI обычно применяется для работы с экранами разреше- нием до 320 x 240. Но для цветных дисплеев его скоростных возможностей не всегда хватает для быстрого вывода изображений.
    Рис. 3
    Поэтому достаточно широко распространен параллельный 8- или 16-разрядный интер- фейс, который часто обозначают как Motorola 6800 или Intel 8080. Схема подключения пред- ставлена на рис. 4. Помимо данных D0...D15 в нем присутствуют стандартные для парал- лельного обмена сигналы выбора CS, чтения RD, записи WR, а также специальный сигнал
    RS для выбора передачи в дисплей команд или данных (в стандарте 6800 сигнал RD/WR один, но есть сигнал разрешения E). Такой параллельный интерфейс способен работать с па- нелями разрешением до 800 x 480, но вывод на них динамически меняющегося изображения все равно является затруднительным.
    Рис. 4
    Более современной является еще одна разновидность параллельного интерфейса, но с раздельной передачей данных каждой цветовой составляющей, а также отдельными сигна- лами кадровой и строчной синхронизации — Parallel RGB (рис. 5) [3].
    Рис. 5

    3
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    Для непосредственного программного вывода через такой интерфейс требуются уже значительные вычислительные ресурсы. Поэтому в ряде модификаций микроконтроллеров он реализован аппаратно как встроенный периферийный модуль (LTDC — LCD-TFT Display
    Controller).
    Естественный недостаток параллельных интерфейсов — большое число сигналов, что вынуждает применять процессоры в корпусах с увеличенным числом выводов. В настоящее время приобретает популярность специализированный дисплейный интерфейс MIPI-DSI
    (Mobile Industry Processor Interface – Display Serial Interface). Схема сопряжения представлена на рис. 6 [3].
    Рис. 6
    Отличительной особенностью интерфейса являются дифференциальные линии переда- чи (как и во всех современных высокоскоростных интерфейсах — USB, Ethernet, LVDS,
    SATA и др.). Минимальное число пар в MIPI-DSI — две, одна для тактирования, другая для данных. Скорость передачи по одной паре доходит до 4.5 Гбит/с. Спецификация интерфейса позволяет наращивать число таких пар, тем самым увеличивая пропускную способность. Се- рийно выпускаемые фирмой STMicroelectronics модификации процессоров имеют 2 диффе- ренциальные пары, обеспечивающие скорости передачи данных 500–1000 Мбит/с.
    Дисплеи с повышенным разрешением (более 1 мегапикселов), в том числе мониторы компьютеров, телевизоров, как правило, не имеют встроенных контроллера и памяти, для связи с ними используется многоканальный LVDS интерфейс [4]. Подобный интерфейс при- сутствует только в отдельных модификациях микроконтроллеров, а также в сигнальных про- цессорах.
    Форматы представления пиксела изображения
    31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    R
    G
    B
    R
    G
    B
    R
    G
    B
    A
    R
    G
    B
    31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 бит. Монохромное изображение без града- ций яркости
    8 бит. Черно-белое изображение с 256 града- циями яркости, цветное с индексированными цветами и др.
    16 бит. Для яркости каждой цветовой состав- ляющей отведено 5 или 6 бит
    — номер бита
    24 бита. Яркость каждой цветовой составляю- щей кодируется 8 битами
    12 бит. Яркость (16 уровней) каждой цветовой составляющей кодируется 4 битами
    32 бита. Яркость каждой цветовой составляю- щей кодируется 8 битами. Дополнительные
    8 бит (alpha-канал) задают уровень прозрач- ности

    4
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    При 8-битном представлении пиксела используются различные способы кодирования.
    Для черно-белого — это всегда уровень яркости (0..255), для цветного — возможно выделе- ние по 2–3 бита для каждого цвета. Вариант с индексированными цветами часто использует- ся в изображениях, где не требуется точная цветопередача с различными оттенками (напри- мер, деловая графика), при этом каждому значению кода (0..255) ставится в соответствие
    16/24-битное представление цвета из отдельно загружаемой таблицы.
    12-битное кодирование применяется в дисплеях среднего качества (как в лабораторном макете). Но оно не очень неудобно, так как пиксел занимает не целое число байт.
    24-битное представление цвета ("True Color") широко используется в компьютерной и мобильной технике.
    Для специальных применений (художественных, полиграфических, измерительных) разрядность на канал (цвет) может составлять 10–16.
    С особенностями других кодировок предлагается ознакомиться самостоятельно по многочисленным материалам в Интернете.
    Буферная память
    Подавляющее большинство дисплеев со встроенными контроллерами имеют собствен- ную память, хранящую код для каждого пиксела. А иногда таких буферов может два и более.
    Каждый буфер отвечает за так называемый слой изображения. Один из вариантов их исполь- зования — "скрытное" рисование изображения в одном слое, пока на экране отображается другой, затем они быстро меняются ролями. Другой вариант — аппаратное объединение
    (микширование) изображений в разных слоях, например, неподвижного фона и движущегося объекта. Прямая запись в память, встроенную в дисплей, обычно используется при наличии низкоскоростных интерфейсов (I
    2
    C, SPI) и небольшой оперативной памяти процессора.
    Более скоростные интерфейсы, как уже отмечалось, не обслуживаются напрямую вы- числительным ядром, а функционируют в режиме прямого доступа к памяти. В этом случае графический буфер располагается на стороне процессора.
    Необходимый объем буферной памяти: для разрешения 320 x 240 — 75 Кбайт при 8- разрядном кодировании, 225 Кбайт при 24-разрядном, для разрешения 800 x 480 — 375
    Кбайт при 8-разрядном кодировании, 1125 Кбайт при 24-разрядном.
    Указанные объемы для большинства микроконтроллеров являются значительными, например, в лабораторном макете в режиме прямого доступа может быть задействовано не более 128 Кбайт, а в самых лучших модификациях объем ОЗУ не превышает 1 Мбайта. По- этому графический буфер обычно располагается во внешней статической или динамической памяти (SRAM, SDRAM) — рис. 7.
    Рис. 7.
    Процессор
    Контроллер
    DMA
    Внешняя память
    (SDRAM)
    Вычислительное ядро
    Контроллер интерфейса дисплея
    (LTDC)
    Дисплей
    TFT

    5
    ЦУМП, Практические занятия,
    © МИРЭА, А.Н.Богаченков
    Графическая память всегда является одномерным массивом, порядок расположения элементов, как правило, соответствует последовательности пикселов на экране по строке слева направо и по столбцам сверху вниз, т.е. точка с координатами (0, 0) находится в левом верхнем углу графического поля. Для дисплеев с однобитовым представлением пикселов память использует побайтовую адресацию, но каждый байт управляет одновременно 8 пик- селами, располагающимися по вертикали, т.е. при выводе на дисплей последовательности байт рисуется сразу 8 пиксельных строк.
    1   2   3   4


    написать администратору сайта