- •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 Программирование жки
1.2.5.1 Основные характеристики pcf8583
I2C-интерфейс.
ОЗУ емкостью 240 байт для пользовательских данных.
Календарь на 4 года.
Функция будильника/сигнализации и определения переполнения.
Поддержка 12- или 24-часовой формата времени.
Внешний тактовый генератор – 32,768 кГц или 50 Гц.
Автоматическое наращивание адреса при работе с памятью.
Программируемые функции будильника, таймера, счетчика событий и
прерывания.
1.2.5.2 Описание
Часы/календарь PCF8583 содержит оперативную память объемом
256
байт. Адреса и данные передаются последовательно через двунаправленную
шину I2C. Встроенный регистр адреса автоматически наращивается после
чтения или записи каждого байта данных [14].
Адресный вывод А0 используется для настройки адресов устройств, что
позволяет подсоединять к одной шине I2C две микросхемы PCF8583.
27
Встроенная микросхема генератора, работающая на частоте 32,768 кГц, и
первые 8 байт оперативной памяти используются для часов, календаря и
функций счетчика. Следующие 8 байт могут быть запрограммированы на
использование в качестве регистров сигнализации (функция будильника), или
же к ним можно обращаться как к свободным адресам памяти. Остальные 240
байт относятся к оперативной памяти.
Таблица 1. Назначение выводов микросхемы PCF8583.
Рисунок 3. Структурная схема часов / календаря PCF8583
Обозначения:
28
Обозначение |
Вывод |
Описание |
|
|
|
|
|
OSC1 (OSCI) |
1 |
Вход генератора на частоте 50 Гц или вход для импульса по событию. |
|
|
|
|
|
OSC2 (OSCO) |
2 |
Выход генератора. |
|
|
|
|
|
A0 |
3 |
Адресный вход. |
|
|
|
|
|
VCC |
4 |
Отрицательный импульс. |
|
|
|
|
|
SDA |
5 |
Последовательная линия данных. |
|
|
|
|
|
SCL |
6 |
Последовательная линия синхронизации. |
|
|
|
|
|
INT |
7 |
Выход прерывания с открытым стоком (активный низкий уровень выходного сигнала). |
|
|
|
|
|
Vdd |
8 |
Положительный импульс. |
|
|
|
|
|
PCF8583 OSCILLATOR – тактовый генератор;
POWER-ON RESET – сброс по включению питания;
I2C-BUS INTERFACE – интерфейс шины I2C;
DIVIDER – делитель;
CONTROL LOGIC – логика управления;
ADDRESS REGISTER – адресный регистр.
Таблица 2. Память RTC: регистровая модель
Микросхема PCF8583 содержит оперативную память объемом 256 байт с
8-битным
адресным
регистром,
осуществляющим
автоматическое
29
Назначение ячеек |
Адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр управления / состояния |
00h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим работы «часы» |
Режим работы «счетчик событий» |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистры-счетчики |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сотые доли секунды (BCD) |
Младший байт счетчика событий (BCD) |
01h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секунды (BCD) |
Средний байт счетчика событий (BCD) |
02h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Минуты (BCD) |
Старший байт счетчика событий (BCD) |
03h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Часы (BCD) |
Свободный |
04h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Год / дата (BCD) |
Свободный |
05h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дни недели / месяц (BCD) |
Свободный |
06h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таймер (счет от 0 до 99 BCD), значение 1 тика определяется настройками регистра 08h |
Таймер (счет от 0 до 99 в формате BCD), значение 1 тика определяется настройками регистра 08h |
07h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Будильник/сигнализация |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр управления будильником/сигнализацией |
08h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистры сигнализации |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Количество сотых долей секунды для сигнализации (BCD) |
Младший байт количества событий для сигнализации (BCD) |
09h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Количество секунд для сигнализации (BCD) |
Средний байт количества событий для сигнализации (BCD) |
0Ah |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Количество минут для сигнализации (BCD) |
Старший байт количества событий для сигнализации (BCD) |
0Bh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Количество часов для сигнализации (BCD) |
Свободный |
0Ch |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
День месяца (года) для сигнализации (BCD) |
Свободный |
0Dh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Месяц, день недели для сигнализации (BCD) |
Свободный |
0Eh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Значение таймера для сигнализации (от 0 до 99 сотых долей секунды, секунд, минут, часов, дней в формате BCD), значение 1 тика определяется настройками регистра 08h |
Значение таймера для сигнализации (таймер инкрементируется от 0 до 99 каждый импульс-событие, каждые 100 импульсов, каждые 10000, каждый 1000000, в формате BCD), значение 1 тика определяется настройками регистра 08h |
0Fh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОЗУ данных |
10h- FFh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
инкрементирование адреса, встроенную микросхему генератора (частота 32,768
кГц), делитель частоты, последовательную двунаправленную шину I2C и схему,
осуществляющую сброс по включению питания.
Первые 16 байт ОЗУ (адреса памяти от 00 до 0F) представляют собой
адресуемые 8-битовые регистры специального назначения. Первый регистр
(адрес 00) используется в качестве регистра управления/состояния. Регистры по
адресам с 01 по 07 – счетчики для функций часов. Регистры, расположенные по
адресам с 08 по 0F, могут быть запрограммированы в качестве регистров
сигнализации (функция будильника) или использованы как обычные регистры
памяти (когда сигналы отключены).