- •Конспект лекций оглавление
- •Общие с ведения о микроконтроллерах
- •Обобщенная структурная схема микроконтроллера
- •Система прерываний
- •Работа системы прерываний
- •Стек данных
- •Микроконтроллеры Intel, Motorola и Microchip
- •Краткое описание особенностей микроконтроллеров
- •Работа сср в режиме шим
- •Примеры контроллеров 18еххх, 16еххх. Характеристики 16 и 18 серии.
- •Периферийные модули
- •Основные характеристики микроконтроллеров
- •Рекомендации по схематическому решению для портов (16 серия)
- •Структура памяти
- •Банк памяти быстрого доступа
- •Регистр выбора банка памяти данных bsr (18 серия)
- •Косвенная адресация, регистра indf и fsr
- •Операция косвенной адресации
- •Механизм косвенной адресации
- •Работа с памятью рiс16fххх
- •Чтение из еерrом-памяти
- •Запись еерrом данных
- •Управление прерываниями Серия рiс16ххх
- •Система прерывании рiс18fхх2
- •Обработка прерываний
- •Контроллеры pic16f87x
- •Карта памяти микроконтроллеров:
- •Структурная схема микроконтроллеров pic16f87x:
- •Служебные регистр:
- •Контроллеры 18 серии
- •Карта памяти микроконтроллеров рiс18f242/442:
- •Регистры конфигурации контроллера:
- •Аппаратный умножитель 8х8
- •Модуль ацп
- •Конфигурация выводов модуля ацп (рiс16f873/76)
- •Источник опорного напряжения
- •Параллельные порты ввода/вывода
- •Последовательный синхронный порт (мssр)
- •Временные диаграммы работы mssp
- •Пример соединения двух мк через spi
- •Режим i2c последовательного порта mssp.
- •Асинхронно-синхронный последовательный порт (usart)
- •Временные диаграммы работы usart в асинхронном режиме
- •Ведомый параллельный порт (psp)
- •Временные диаграммы порта psp
- •Способы кодирования данных
- •Универсальная последовательная шина (usb) Краткий обзор шины
- •Протоколы передачи
- •Питание
- •Оконечные точки
- •Нумерация устройств
- •Описатели
- •Классы устройств / Драйверы класса
- •Микроконтроллеры с модулем usb
- •Приемопередатчик
- •Регистры управления и состояния модуля usb
- •Регистр флагов прерываний модуля usb (uir)
- •Регистр разрешения прерываний модуля usb (uie)
- •Регистр флагов ошибок модуля usb (ueir)
- •Регистр разрешения прерывания по ошибкам модуля usb (ueie)
- •Регистр состояния модуля usb (ustat)
- •Регистр управления модулем usb (uctrl)
- •Регистр адреса usb (uaddr)
- •Регистр состояния программного обеспечения usb
- •Регистры управления оконечными точками (uepn)
- •Буферы оконечных точек
- •Программирование модуля usb
- •Программное обеспечение usb
- •Основные функции и подпрограммы
- •Ресурсы процессора
- •Уровни стека
- •Память программ
- •Память данных
- •Буферные регистры
- •Выбор страниц/Выбор банков
- •Интегрирование подпрограмм usb в программу
Ресурсы процессора
Основная обработка 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.
Выбор страниц/Выбор банков
Микропрограммные библиотеки выполнены с осторожным использованием битов переключения банков и страниц. При переключении банков должен обеспечиваться вызов правильных регистров. Регистр PCLATH изменяется, когда выполняются операции CALL или GOTO за пределы текущего сегмента памяти программ. ServiceUSBInt изменяет W, STATUS, FSR и PCLATH, следовательно, они должны быть сохранены при входе в программу обработки и восстановлены при выходе.