- •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.3.1.2 Принцип работы шины I²c
Вследствие
различных
технологий
микросхем
(КМОП,
НМОП,
биполярная), которые могут быть подключены к шине, уровни логического
нуля (НИЗКИЙ) и логической единицы (ВЫСОКИЙ) не фиксированы и зависят
от соответствующего уровня Vdd. Один синхроимпульс генерируется на
каждый пересылаемый бит [7, 18].
Данные на линии SDA должны быть стабильными в течение ВЫСОКОГО
периода синхроимпульса. ВЫСОКОЕ или НИЗКОЕ состояние линии данных
должно меняться, только если линия синхронизации в состоянии НИЗКОЕ.
Рисунок 50. Пересылка бита по шине I²C
Данные по линии SDA передаются байтами, при этом каждый байт должен
оканчиваться битом подтверждения. Количество байт, передаваемых за один
сеанс связи, не ограничено. Данные передаются, начиная со старшего бита.
Если приёмник не может принять еще один целый байт, пока он не выполнит
какую-либо другую функцию (например, обслужит внутреннее прерывание), он
может удерживать линию SCL в НИЗКОМ состоянии, переводя передатчик в
состояние ожидания. Пересылка данных продолжается, когда приёмник будет
готов к следующему байту и отпустит линию SCL (опять срабатывает правило
монтажного И).
Рисунок 51. Пересылка данных по шине I²C
2.3.1.3 Сигналы старт и стоп
Процедура обмена данными по шине I²C начинается с того, что ведущий
формирует состояние СТАРТ – ведущий генерирует переход сигнала линии
110
SDA из ВЫСОКОГО состояния в НИЗКОЕ при ВЫСОКОМ уровне на линии
SCL [7, 18].
Этот
переход
воспринимается
всеми
устройствами,
подключенными к шине как признак начала процедуры обмена. Процедура
обмена завершается тем, что ведущий формирует состояние СТОП – переход
состояния линии SDA из НИЗКОГО состояния в ВЫСОКОЕ при ВЫСОКОМ
состоянии линии SCL. Состояния СТАРТ и СТОП всегда вырабатываются
ведущим. Считается, что шина занята после фиксации состояния СТАРТ. Шина
считается освободившейся через некоторое время после фиксации состояния
СТОП.
Определение сигналов СТАРТ и СТОП устройствами, подключенными к
шине достаточно легко, если в них встроены необходимые цепи. Однако
микроконтроллеры без таковых цепей должны осуществлять считывание
значения линии SDA как минимум дважды за период синхронизации для того,
чтобы определить переход состояния.
Рисунок 52. СТАРТ и СТОП состояния
2.3.1.4 Подтверждение
Подтверждение при передаче данных обязательно, кроме случаев
окончания
передачи
ведомой
стороной.
Соответствующий
импульс
синхронизации генерируется ведущим. Передатчик отпускает (ВЫСОКОЕ)
линию SDA в течение синхроимпульса подтверждения. Приёмник должен
удерживать линию SDA в течение ВЫСОКОГО состояния синхроимпульса
подтверждения в стабильно НИЗКОМ состоянии [7, 18]. Конечно, время
установки
и
удержания
также
должны
быть
приняты
во
внимание
(электрические и временные параметры).
Таким образом передача 8 бит данных от передатчика к приемнику
завершаются
дополнительным
циклом
(формированием
9-го
тактового
импульса линии SCL), при котором приемник выставляет НИЗКИЙ уровень
сигнала на линии SDA, как признак успешного приема байта.
В том случае, когда ведомый-приёмник не может подтвердить свой адрес
(например, когда он выполняет в данный момент какие-либо функции
реального времени), линия данных должна быть оставлена в ВЫСОКОМ
состоянии. После этого ведущий может выдать сигнал СТОП для прерывания
пересылки данных. Если в пересылке участвует ведущий-приёмник, то он
должен сообщить об окончании передачи ведомому-передатчику путем не
подтверждения последнего байта. Ведомый-передатчик должен освободить
111
линию данных для того, чтобы позволить ведущему выдать сигнал СТОП или
повторить сигнал СТАРТ.