Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > AVR |
|
||||||||||||
22.14. Управление конечной точкой INПакеты IN отправляются Device-контроллером по запросу IN Host-стороны. Все данные могут быть записаны ЦПУ, который подтверждает или нет заполненный банк. 22.14.1. Обзор Первоначально необходимо настроить конечную точку. Бит TXINI устанавливается аппаратно, когда освобождается текущий банк. Если бит TXINE установлен, это приводит к запуску прерывания. Одновременно с ним выполняется установка бита FIFOCON. Чтобы разрешить USB-контроллеру передавать данные, ЦПУ нужно записать их в FIFO и сбросить бит. Если конечная точка IN состоит из нескольких банков, то одновременно с этим происходит переход к следующему банку данных. Биты TXINI и FIFOCON автоматически обновляются аппаратными средствами, независимо от состояния следующего банка. Бит TXINI необходимо обнулять только перед обнулением FIFOCON. Бит RWAL всегда отражает состояние текущего банка. Данный бит равен 1, когда разрешается программная запись данных в банк, и равен 0, когда банк полон. 22.14.2. Подробное описание ЦПУ записывает данные в соответствии со следующей последовательностью:
Если конечная точка использует 2 банка, то одновременно с заполнением ЦПУ одного банка Host-сторона может считывать другой банк. Затем, когда ЦПУ сбрасывает FIFOCON, очередной банк может быть уже готов (свободен), а TXINI устанавливается незамедлительно. 22.14.2.1. Функция ABORT Потребность в функции ABORT инициируется Host-стороной и возникает в следующих ситуациях:
В такой ситуации необходимо воспользоваться битом ликвидации последнего записанного банка KILLBK, придерживаясь следующего алгоритма. Таблица 22.1. Блок-схема функции ABORT 22.15. Изохронный режим22.15.1. Ошибка незаполнения Ошибка незаполнения может возникнуть на этапе IN, если Host-сторона пытается прочитать пустой банк. В этой ситуации запускается прерывание UNDERFI. Данная ошибка может также возникнуть на этапе OUT, если Host-сторона отправляет пакет, а банки уже заполнены. Обычно ЦПУ не обладает достаточным быстродействием и пакет теряется. Ошибка незаполнения не может возникнуть по вине ЦПУ, если последний будет выполнять чтение, только если банк готов отдавать данные (RXOUTI=1 или RWAL=1). 22.15.2. Ошибка CRC Ошибка CRC может возникнуть на этапе OUT, если USB-контроллер примет поврежденный пакет. В такой ситуации запускается прерывание STALLEDI. Это не предотвращает запуск прерывания RXOUTI. 22.16. Ошибка переполненияОшибка переполнения может возникнуть в конечной точке типа CONTROL, ISOCHRONOUS, BULK или INTERRUPT на этапе OUT, если Host-сторона пытается записать в банк, размер которого слишком мал для пакета. В этой ситуации, запускается прерывание OVERFI, если таковое было разрешено прежде. Для такого пакета генерируется подтверждение NACK, а также генерируется прерывание RXOUTI (если его работа была разрешена). Банк заполнен первыми байтами пакета. Ошибка переполнения на этапе IN не возникнет по вине ЦПУ, если последний будет записывать данные, только когда банк готов к этому (TXINI=1 или RWAL=1). 22.17. ПрерыванияНа следующем рисунке показаны все источники прерываний:
Все прерывания разделяются на два вида: операционные (т.е. их генерация является частью нормальной работы) и нештатные (ошибки). Предусмотрена генерация следующих видов операционных прерываний:
Нештатные прерывания генерируются, когда:
Предусмотрена генерация следующих операционных прерываний:
Нештатные прерывания:
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|