Память данных
Память программ
Уровни стека
Ресурсы процессора
Основная обработка USB происходит на низком уровне в программе обработки прерывания и, таким образом, невидима для основной программы. Однако, она использует ресурсы процессора: память программ, память данных, регистры, уровни в стеке и циклы процессора.
Аппаратный стек в микроконтроллерах PIC16C745/765 имеет глубину всего 8 уровней. Поэтому вложенность подпрограмм и прерываний не может быть более 8. Процесс нумерации USB требует 6 уровней, так что самое лучшее, если основная программа будет удерживаться от выполнения подпрограмм и обработки прерываний пока процесс нумерации не завершен. Макрокоманда ConfiguredUSB служит для этой цели: она проверяет два младших разряда USWSTAT и ожидает пока не завершится процесс нумерации.
Программа обработки прерывания USB, включая подпрограммы интерфейса, без дескрипторных таблиц занимает 1024 слова. Таблицы настройки и параметров устройства могут занимать дополнительно 256 слов. Расположение этих частей программы не ограничено, для управления размещением каждой части сценарий компоновщика может быть отредактирован.
|
|
За исключением общедоступной памяти данных, которая используется для стека регистров специальных функций, обслуживание прерывания USB занимает примерно 40 байт памяти данных в банке 2. Для использования основной программой остается вся универсальная память данных в банках 0 и 1 и половина банка 2.
PIC16C745/765 имеет двухпортовую буферную память емкостью 64 байта. 24 байта используются для таблицы дескрипторов буферов (BDT), а оставленные 40 — для буферов.
Оконечной точке 0 при вводе и выводе требуются специализированные буферы, так как транзакция установки не может быть приостановлена. Остальные три буфера распределяются между четырьмя возможными оконечными точками. Но в соответствии со спецификацией USB устройства с низкой скоростью могут иметь только 2 оконечные точки.
Заданная по умолчанию конфигурация выделяет индивидуальные буферы для ЕР0 OUT, EP0 IN, EP1 OUT и ЕР1 IN. Последний буфер отводится для совместного использования ЕР2 IN и ЕР2 OUT. В соответствии со спецификацией для устройств с низкой скоростью, кроме ЕР0, могут одновременно функционировать только 2 оконечные точки. Следовательно, эта конфигурация поддерживает большинство возможных комбинаций оконечных точек (ЕР1 OUT и ЕР1 IN, EP1OUT и EP2IN, ЕР1 OUT и ЕР2 OUT, EP1 IN и ЕР2 OUT, ЕР1 IN и ЕР2 IN). Единственная комбинация, которая не обеспечивается этой конфигурацией. — ЕР2 IN и ЕР2 OUT. Если в устройстве необходима эта конфигурация, то функция USBRESET может быть отредактирована так, чтобы эта конфигурация обеспечивалась за счет буферов ЕР1.