- •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.5.2 Двунаправленные порты и порты с альтернативной функцией
Самой
простой
схемой
двунаправленного
порта
является
квазидвунаправленный порт со схемой, аналогичной схеме порта вывода с
однотактным выходным каскадом.
Vcc
Ш ина
Входны е
данны е
R L
Вы вод
п о р та
данны х
D
SET
Q
#W R
CLR
Q
Р е ги с тр - за щ е л ка д а н н ы х
Рисунок 23. Квазидвунаправленный порт
Регистр входных данных (на схеме не показан) подключен к внешнему
выводу
порта.
Перед
считыванием
входных
данных
необходимо
предварительно записать «1» в регистр-защелку выходных данных. Это закроет
транзистор и исключит влияние порта вывода на входной сигнал. Резистор RL
останется подключенным к входному сигналу и будет являться для него
дополнительной нагрузкой, однако, так как сопротивление резистора велико
(10..100 кОм), то даже на маломощный входной сигнал данная нагрузка не
окажет заметного влияния. Схема квазидвунаправленного порта используется в
семействе MCS-51.
Более часто используется схема переключаемого двунаправленного порта
с комплементарным выходным каскадом.
73
Она объединяет схемы порта ввода и порта вывода с двухтактной
выходной схемой, описанные выше. Переключение порта в режим ввода
осуществляется записью «1» в регистр «вход/выход». В этом случае (как было
указано при описании порта вывода) оба транзистора переводятся в закрытое
состояние и порт вывода не влияет на входной сигнал. В двунаправленных
портах резисторы pull-up и pull-down подключаются только в режиме ввода, для
чего на вход соответствующей схемы управления подключается выход регистра
«вход/выход» («1» - ввод).
А л ьтерн ативн ая ф ун кц ия
Р е ги стр
направления
V cc
порта
D
SET
Q
#O E
Вы вод
порта
CLR
Q
D
SET
CLR
Q
Q
Р е ги с тр - за щ е л ка
Ш ина
вы ходны х данны х
данны х
#RD
Р е ги с тр
входны х
данны х
SET
Q
D
Q
CLR
SET
Q
D
Т р и гге р Ш м и тта
или СЗД
P u llu p
V cc
#W R
C LR
Q
Р е ги с тр у п р а в л е н и я
" п о д д е р ж и в а ю щ и м и
резисторам и "
P u lld o w n
o
Рисунок 24. Переключаемый двунаправленный порт с комплементарным выходным каскадом
Кроме исполнения функции порта ввода-вывода, внешние выводы
микросхемы
могут
быть
задействованы
для
связи
с
внутренними
периферийными модулями микропроцессора, а так же с подсистемами
процессорного ядра, схем памяти и управления (с контроллером прерываний,
блоком интерфейса внешней памяти и т.п.). Данные функции называются
альтернативными. Обычно, когда вывод порта используется для выполнения
альтернативной функции основные схемы переводятся в состояние ввода или
вообще отключаются.
74
2.2.6
Таймеры-счетчики
Таймеры-счетчики предназначены для:
Подсчета временных интервалов (режим таймера);
Подсчета числа импульсов («внешних событий») на специальном
внешнем входе (режим счетчика).
Режим таймера
Тактирование
счетчика
выполняется
от
сигнала
внутренней
синхронизации процессора Fint. Обычно это частота процессорных циклов
формируемая от основного генератора. Подсчет временных интервалов
выполняется в периодах сигнала Fint.
Предделитель используется для снижения тактовой частоты, подаваемой
на регистр-счетчик. Это позволяет подсчитывать в более длительные
интервалы, но увеличивает шаг дискретизации, а соответственно уменьшает
точность. Предделитель может быть с фиксированным или программируемым
коэффициентом
деления.
У
программируемых
предделителей
обычно
выбирается коэффициент деления из ряда 1, 2, 4, 8, …
Запрос прерывания
Настройка предделителя
Направление счета
Настройка постделителя
Разрешение
Fint
IN cnt
Предделитель
Счетчик
Постделитель
прерывания
TF
Выход
Выбор
IN gate
полярности
Регистр перезагрузки
Выбор режима
Режим разрешения счета
Рисунок 25. Структурная схема таймера-счетчика
Регистр-счетчик накапливает (считает) значение временного интервала в
единицах входных тактов счетчика (после предделителя). Разрядность
регистра-счетчика определяет разрядность всего таймера-счетчика.
Постделитель встречается достаточно редко (PICmicro) и служит для
увеличения периода установки флага переполнения TF. Обычно постделитель –
это дополнительные разряды регистра-счетчика недоступные по чтению-
записи. Постделитель обычно программируемый на разные коэффициенты
деления как и предделитель.
TF – флаг переполнения таймера. Устанавливается при переходе всех
разрядов регистра счетчика-постделителя из 1 в 0. Обычно используется для
указания окончания временного интервала. По нему может вырабатываться
запрос прерывания.
75
От флага TF идет цепь обратной связи, задающая режим работы таймера:
1. Однократный счет: после переполнения в регистр-счетчик загружается
значение 0 и счет останавливается. Запуск следующего цикла –
специальной командой из программы;
2. Циклический счет с полным циклом: после переполнения в регистр-
счетчик загружается значение 0 и счет начинается снова. Полный цикл
счета таймера будет 2k тактов, где k – разрядность счетчик +
постделитель.
3. Циклический счет с автоперезагрузкой: после переполнения в регистр
счетчик загружается значение из регистра перезагрузки. Таким образом
счет можно начинать не с 0 и уменьшается (программируется)
длительность цикла таймера.
Во многих процессорах имеется специальный вывод INgate, который
выполняет функцию разрешения счета внешним сигналом. С помощью этого
механизма
легко
подсчитывать
длительность
временного
интервала,
определяемого длительностью импульса на входе INgate.
Режим счетчика
В отличие от режима таймера,
в
режиме счетчика
выбирается
тактирование от внешнего импульсного сигнала, подаваемого на вход INcnt.
При этом подсчитываются импульсы внешнего сигнала. Инкрементация или
декрементация счетчика происходит по перепаду (фронту) сигнала. Фронт
сигнала в данном случае называют «внешним событием». Полярность фронтов
можно программировать.
В
остальном
функционирование
в
режимах
счетчика
и
таймера
аналогично.