- •1 Введение во встраиваемые вычислительные системы
- •1.1 Определения, особенности, классификация
- •1.1.6.1 Уровень предприятия (1)
- •1.1.6.2 Уровни объекта (2) и подсистемы (3)
- •1.1.6.3 Уровень функциональных узлов (4)
- •1.1.6.4 Уровень оборудования функциональных узлов (5)
- •1.1.6.4.1 Устройства ввода-вывода
- •1.1.6.4.2 Устройство сопряжения с объектом
- •1.2 Механизмы реального времени
- •1.2.4.1 Классификация прерываний
- •1.2.4.2 Функции системы прерываний и их реализация
- •1.2.5.1 Основные характеристики pcf8583
- •1.2.5.2 Описание
- •1.2.5.3 Режимы работы часов
- •1.2.5.4 Регистры-счетчики
- •1.2.5.5 Будильник
- •1.2.5.6 Регистры сигнализации
- •1.2.5.7 Таймер
- •1.2.5.8 Режим счетчика событий
- •1.2.5.9 Вывод прерывания int
- •2 Технические средства встраиваемых систем
- •2.1 Элементная база микропроцессорной техники для
- •2.2 Модульный принцип организации процессора ввс
- •2.2.4.1 Энергонезависимая память e2prom: историческая справка
- •2.2.4.2 Основные характеристики eeprom at24Cxx
- •2.2.4.3 Описание
- •2.2.4.4 Организация памяти
- •2.2.4.5 Адресация модулей eeprom
- •2.2.4.6 Операция записи
- •2.2.4.7 Операция чтения
- •2.2.5.1 Однонаправленные порты
- •2.2.5.2 Двунаправленные порты и порты с альтернативной функцией
- •2.2.6.1 Программируемые таймеры в микроконтроллере с ядром Intel
- •2.2.6.2 Модули таймеров-счетчиков со схемами входного захвата,
- •2.2.7.1 Классификация ацп
- •2.2.9.1 Контроллер последовательного интерфейса в
- •2.2.10 Подсистема синхронизации
- •2.2.11 Механизмы начальной инициализации встроенной памяти
- •2.2.11.1 Внешнее программирование встроенного пзу
- •2.3 Сетевые интерфейсы встраиваемых систем
- •2.3.1.1 Концепция шины I²c
- •2.3.1.2 Принцип работы шины I²c
- •2.3.1.3 Сигналы старт и стоп
- •2.3.1.4 Подтверждение
- •2.3.1.5 Синхронизация
- •2.3.1.6 Форматы обмена данными по шине I²c (7-битный адрес)
- •2.3.1.7 Арбитраж
- •2.3.1.8 Достоинства шины I²c
- •2.3.2.1 Согласование и конфигурация линии связи
- •2.3.2.2 Защитное смещение
- •2.3.2.3 Исключение приема при передаче в полудуплексном режиме
- •2.3.4.1 Протоколы реального времени
- •2.3.4.2 Резервирование каналов и кольцевая топология
- •2.3.4.3 Отличия от обычного Ethernet
- •2.3.6.1 Преимущества
- •2.3.6.2 Преимущества plc по сравнению с Wi-Fi
- •2.3.6.3 Недостатки
- •2.3.9.1 Физический уровень
- •2.3.9.2 Контроллер шины
- •2.3.9.3 Оконечные устройства
- •2.3.9.4 Монитор канала
- •3 Программное обеспечение и инструментальные
- •3.1 Особенности программного обеспечения ввс
- •3.1.4.1 Особенности плк
- •3.1.4.2 Варианты построения систем на базе плк
- •3.1.4.3 Особенности программирования плк
- •3.1.4.4 Варианты реализации плк
- •3.1.4.5 Цикл плк
- •3.1.4.6 Области применения плк
- •3.1.4.7 Сравнение с микроконтроллерами
- •3.2 Языки программирования
- •3.2.8.1 Удобочитаемость
- •3.2.8.2 Лёгкость создания программ
- •3.2.8.3 Надёжность
- •3.2.10 Краткий обзор языков, используемых при проектировании
- •3.2.10.1 Язык программирования Си
- •3.2.10.3 Платформа Java
- •3.2.10.4 Платформа .Net
- •3.2.10.5 Язык программирования ada
- •3.2.10.6 Язык программирования Esterel
- •3.2.10.7 Язык программирования Lustre
- •3.3 Инструментальные средства отладки и тестирования
- •Ieee 1149.1 jtag - механизм граничного сканирования
- •3.3.3.1 Реализация jtag-инструментария
- •3.3.4.1 Цели и задачи профилировки
- •3.3.4.2 Общее время исполнения
- •3.3.4.3 Удельное время выполнения
- •3.3.4.4 Определение количества вызовов
- •3.3.4.5 Определение степени покрытия
- •3.3.5.1 Обеспечение корректности программного кода: обзор
- •3.4 Разработка программного продукта
- •3.4.2.1 Сложность проектирования и разработчики- одиночки
- •3.4.2.2 Оценка времени проектирования
- •3.4.2.3 Использование новых технологий
- •3.4.4.1 Безопасность и перемены
- •3.4.4.6 Играй в защите
- •3.4.4.7 Сбор метрических данных
- •3.4.4.8 Что дает давление сверху
- •3.4.4.9 Сердитый начальник
- •3.4.4.10 Туманные спецификации
- •3.4.4.11 Конфликт
- •3.4.4.12 Кто такой катализатор проекта
- •3.4.4.13 Человеку свойственно ошибаться
- •3.4.4.14 О персонале
- •3.4.4.15 Проблемы социологии
- •3.4.4.16 О патологической политике (еще раз)
- •3.4.4.17 Злоба и скупость
- •3.4.4.18 Основы здравого смысла
- •4 Устройство современного контроллера на примере
- •4.1 Назначение стенда
- •4.2 Состав стенда
- •4.3 Разъемы стенда и назначение выводов
- •4.4 Обзор компонентов принципиальной электрической
- •4.4.3.1 Матричная клавиатура
- •4.4.3.2 Жидкокристаллический индикатор
- •4.4.3.3 Светодиодные индикаторы
- •4.4.3.4 Звукоизлучатель
- •4.4.3.5 Дискретные входы-выходы
- •4.4.10 Фильтрующие емкости
- •4.5 Микроконтроллер aDuC812
- •4.6 Расширитель портов ввода-вывода на базе плис
- •4.6.1 Регистр клавиатуры kb
- •4.6.2 Регистр шины данных жки data_ind
- •4.6.3 Регистр данных параллельного порта ext_lo
- •4.6.4 Регистр данных параллельного порта ext_hi
- •4.6.5 Регистр управления ena
- •4.6.6 Регистр управления жки c_ind
- •4.6.7 Регистр управления светодиодами sv
- •4.6.8 Логическая схема плис: доступ к периферийным устройствам
- •4.6.9 Жидкокристаллический индикатор
- •4.6.9.1 Историческая справка
- •4.6.9.2 Подключение жки
- •4.6.9.3 Контроллер жки
- •4.6.9.4 Память данных жки (ddram)
- •4.6.9.9 Таблица команд контроллера жки
- •4.6.9.10 Операции чтения и записи команд/данных
- •4.7 Внешняя память программ и данных
- •5 Инструментальные средства для работы со стендом
- •5.1 Программирование стенда sdk-1.1
- •5.2 Компилятор sdcc
- •5.2.10 Использование меток
- •5.2.11 Директива __naked
- •5.2.12 Формат Intel hex
- •5.3 Инструментальная система m3p
- •5.4 Утилита make
- •5.5 Система контроля версий
- •6 Примеры программирования стенда sdk-1.1
- •6.1 Приступаем к работе
- •6.2 Программирование светодиодных индикаторов
- •6.3 Программирование последовательного канала
- •6.4 Программирование таймера
- •6.5 Программирование жки
2.2.9.1 Контроллер последовательного интерфейса в
микроконтроллере с ядром Intel MCS-51
Последовательный
порт
в
микроконтроллерах
MCS-51
позволяет
осуществлять последовательный дуплексный ввод-вывод в синхронном и
асинхронном режимах с разными скоростями обмена. Помимо обычного ввода-
вывода,
в
нем
предусмотрена
аппаратная
поддержка
взаимодействия
нескольких микроконтроллеров.
Схематически контроллер последовательного порта представлен ниже на
рисунке. Как видно из рисунка, регистр SBUF, доступный пользователю для
чтения и записи, есть на самом деле два регистра, в один из которых можно
только записывать, а из другого – читать. Контроллер позволяет дуплексный
обмен данными, т.е. одновременно может передавать и принимать информацию
по линиям TxD (P3.1) и RxD (P3.0) соответственно.
Передача инициируется записью в SBUF байта данных. Этот байт
переписывается в сдвиговый регистр, из которого пересылается бит за битом.
98
Как только байт будет переслан целиком, устанавливается флаг TI,
сигнализирующий о том, что контроллер готов к передаче очередного байта.
Рисунок 46. Схема контроллера UART МК ADuC812 (Intel MCS-51)
Прием осуществляется в обратном порядке: после начала процесса приема
принятые биты данных последовательно сдвигаются в сдвиговом регистре,
пока не будет принято их установленное количество, затем содержимое
сдвигового регистра переписывается в 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 стоп-бит. Биты TB8 и RB8
содержатся в регистре SCON (биты 3 и 2 соответственно), первый
устанавливается программно, а второй содержит 9-й бит принятой
комбинации. С помощью них можно организовать, например, контроль
четности или обмен с двумя стоп-битами.
Режим 3 (9 бит данных, асинхронный, переменная скорость). То же, что
и режим 2, только скорость обмена переменная.
В режиме 1 и 3 используются Таймер 0 и/или Таймер 1 для настройки
скорости обмена.
Режим контроллера UART, а также другие параметры его работы задаются
в регистре специального назначения SCON (98h).
99
7
SM0
6
SM1
5
SM2
4
REN
3
TB8
2
RB8
1
TI
0
RI
Таблица 6. Описание регистра специального назначения SCON
Как было сказано выше, скорости обмена в разных режимах различаются.
В двух из них скорости фиксированы, а в двух других переменные. Рассмотрим
подробнее способы задания скорости обмена в каждом из режимов.
Режим 0. Фиксированная скорость обмена. В этом режиме скорость
вычисляется следующим образом:
baudrate
Core _ Clk
12
, где Core_Clk есть внутренняя тактовая частота МК.
Режим 2. Скорость обмена зависит от значения бита SMOD (старший
бит в регистре PCON (087h)). Если SMOD=0 (по умолчанию), то
100
Бит |
Описание |
|
|
|
|
|
|
|
|
|
|
|
|
|
SM0 SM1 |
Режим работы UART: SM0 SM1 Выбранный режим работы 0 0 Режим 0 0 1 Режим 1 1 0 Режим 2 1 1 Режим 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
SM2 |
Включает поддержку взаимодействия нескольких микроконтроллеров в режимах 2 и 3. В Режиме 0 бит SM2 должен быть сброшен (SM2=0). При приеме в Режиме 1 при SM2=1 RI не устанавливается, если не был принят правильный стоп-бит; если же SM2=0 RI установится как только будет принят байт данных. Если SM2=1, то при приеме в режимах 2 и 3 RI не устанавливается в том случае, если принятый 9-й бит (RB8) равен 0. |
|
|
|
|
|
|
|
|
|
|
|
|
|
REN |
(Receiver Enable) Если установлен, то разрешен прием данных. Устанавливается и сбрасывается программно. |
|
|
|
|
|
|
|
|
|
|
|
|
|
TB8 |
(Transmitter Bit 8) 9-й бит посылаемых данных в режимах 2 и 3. Устанавливается и сбрасывается программно. |
|
|
|
|
|
|
|
|
|
|
|
|
|
RB8 |
(Receiver Bit 8) 9-й бит принимаемых данных в режимах 2 и 3. В режиме 1, если SM2=0, в RB8 записывается принятый стоп-бит (точнее то, что было принято в момент приема стоп-бита). В режиме 0 не используется. |
|
|
|
|
|
|
|
|
|
|
|
|
|
TI |
(Transmitter Interrupt) Флаг завершения посылки. Устанавливается аппаратно по завершении посылки 8-го бита данных в режиме 0 или стоп-бита в других режимах. При ES = 1 (бит 4 регистра IEN0 (0A8h)) происходит прерывание №4 (вектор 023h), когда TI устанавливается контроллером в 1. Сбрасывается программно. |
|
|
|
|
|
|
|
|
|
|
|
|
|
RI |
(Receiver Interrupt) Флаг завершения приема. Устанавливается аппаратно по завершении приема 8-го бита данных в режиме 0 или стоп-бита в других режимах. При ES = 1 (бит 4 регистра IEN0 (0A8h)) происходит прерывание №4 (вектор 023h), когда RI устанавливается контроллером в 1. Сбрасывается программно. |
|
|
|
|
|
|
|
|
|
|
|
|
|
скорость определяется как 1/64 тактовой частоты. SMOD=1 удваивает
это значение. В общем случае:
baudrate
2 SMOD f osc
64
Режимы 1 и 3. В этих режимах порт можно синхронизировать от двух
источников: от Таймера 1 или Таймера 2, или обоих (один для передачи,
другой
для
приема
байта
данных).
Источник
синхронизации
определяется
значением
бита
BD (старший
бит
регистра
ADCON(0D8h)): если BD=1, то используется встроенный генератор
импульсов, в противном случае используется таймер 1.
При использовании Таймера 1 скорость обмена определяется временем
переполнения таймера и значением бита SMOD:
baudrate
2 SMOD TM1OVrate
32
,
где TM1OVrate – время переполнения Таймера 1, зависящее от режима его
работы. Таймер 1 может быть установлен как «таймер» или как «счетчик», в
любом режиме работы. Прерывание от таймера при этом обычно запрещается.
Чаще всего таймер 1 устанавливают как «таймер» в режиме 2 («auto-reload»):
для этого старшая тетрада регистра TMOD (089h) должна равняться 0010b. При
таком использовании после каждого переполнения регистра таймера TL1 в него
загружается значение из регистра TH1. Скорость обмена в этом случае
вычисляется по формуле:
baudrate
2 SMOD
32
f osc
12 (256− TH1)
В следующей таблице приведены способы задания некоторых стандартных
скоростей обмена: