320 likes | 578 Views
Интерфейсы периферийных устройств. Определения.
E N D
Интерфейсы периферийных устройств
Определения • Периферийные устройства (ПУ) - это устройства ЭВМ, не входящие в состав центральной части ВС и предназначенные для взаимодействия ВС с объектами внешнего мира. Под объектами внешнего мира будем подразумевать пользователей, другие ЭВМ(ВС), объекты управления, коммуникационные среды вычислительных сетей и носители информации устройств внешней памяти. • Интерфейс - совокупность унифицированных технических и программных средств, используемых для сопряжения устройств в вычислительной системе или сопряжения между системами
Интерфейс • Функциональная совместимость – общность управляющих сигналов, генерируемых обменивающимися модулями. Управляющие сигналы должны иметь заданное смысловое значение и определенные временные параметры. • Электрическая совместимость модулей обеспечивается заданными уровнями вырабатываемых ими сигналов, их нагрузочными способностями, мощностью и т.п. • Механическая совместимость предполагает применение определенных типов и размеров плат, кабелей, соединителей и т.д.
Интерфейс • Протокол обмена - совокупность правил и соглашений, определяющих работу функциональных устройств и процедур в процессе взаимодействия • Аппаратная часть • Программное обеспечение
Классификация • По назначению (универсальные, специализированные); • По характеру передаваемых данных (параллельные, последовательные); • По режиму передачи данных (дуплексные, полудуплексные, симплексные); • По способу обмена (асинхронные, синхронные); • По области применения (внешние, внутренние).
Способы передачи данных Интерфейсы бывают: • Последовательные • Параллельные (параллельно-последовательные) • Параллельно-параллельные • Последовательно-параллельные
Способы обработки данных • Программный несовмещенный ввод-вывод • Программный ввод-вывод с прерываниями программы • Ввод-вывод через канал прямого доступа в память
Программный несовмещенныйввод-вывод • Обращение к ПУ осуществляется в моменты времени, определенные программой ЦП; • Все действия по управлению реализуются командами прикладной программы; • Синхронизация ЦП и ПУ достигается организацией программного ожидания момента готовности ПУ.
Пример void send_sym(intsym){ RW=0; RS=1; E=1; D=sym; E=0; delay(); } …
Пример void uart_send() { TI=0; SBUF = ‘S’; While(!TI); TI=0; SBUF = ‘O’; While(!TI); TI=0; SBUF = ‘S’; While(!TI); } char uart_recive () { while(!RI); RI=0; return SBUF; }
Прерывания Прерывание - процесс переключения ЦП с одной программы на другую по внешнему сигналу с сохранением информации для последующего возобновления прерванной программы. Этапы: • ПУ формирует запрос прерывания. • Запросы могут поступать асинхронно. • Запросы сохраняются в специальном регистре. • Состояние регистра анализируется программно или аппаратно. • Либо информация о месте возникновения запроса передаётся в виде адреса ячейки памяти (векторная система прерываний). • Вызывается программа-обработчик прерывания.
Прерывания Таблица векторов прерываний ADuC842 Идентификация прерываний в Keil C51
Пример void int0 (void) interrupt 0 // адрес обработчика - 0x00B { P0=0; } int main(){ EA=1; //разрешаем прерывания EX0=1; //разрешаем внешнее прерывание 0 while (1) { P0=i; t1(); i*=2; if (i == 16) i = 1; } }
Пример void int_uart (void) interrupt 4 // адрес обработчика - 0x023 { P0=0x15; } int main(){ EA=1; //разрешаем прерывания ES=1; //разрешаем прерывание от UART’а … while (1) { P0=i; t1(); i*=2; if (i == 16) i = 1; } }
Прерывания • Порядок действий процессора
Синхронизация Передача может быть: • Синхронная • Асинхронная
Асинхронная передача, стробирование
Асинхронная передача, запрос-ответ
Самосинхронизирующееся кодирование
Интерфейс 1-Wire Основные характеристики: • Асинхронный (запрос-ответ) • Однопроводный • Полудуплексный • На линии может быть только одно мастер-устройство • Мастер-устройство не имеет адреса
Запись одного бита Передача логического «0» Передача логической «1»
Адресация • Каждое устройство имеет уникальный адрес
Команды Команды для определения адресов устройств: • Поиск • Чтение • Сравнение • Пропуск Специфические команды: • Конвертирование температуры • Чтение температуры
Импульс сброса intonewire_reset(){ Q=0; delay(640); Q=1; delay(2); pr = Q; delay(60); return(pr); }
Отправка бита void onewire_send_bit(int bit) { Q = 0; if (bit){ delay(5); Q = 1; delay(90); }else{ delay(90); Q = 1; delay(5); } }
Чтение бита intonewire_read_bit(){ Q = 0; delay(2); Q = 1; delay(8); return (Q); }
Обмен с датчиком onewire_start(){ onewire_reset(); onewire_send_byte(0xCC); onewire_send_byte(0x44); } onewire_read_temperature(){ onewire_reset(); onewire_send_byte(0xCC); onewire_send_byte(0xBE); for (t=0;t<9;t++){ temp[t]=onewire_read_byte(); } }