Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзамен Мпп.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

Будова ядра мікроконтролера Atmel avr.

Функції. Угода про виклики функцій.

Соглашение вызова определяет следующие особенности процесса использования подпрограмм:

Расположение входных параметров подпрограммы и возвращаемых ею значений. Наиболее распространённые варианты:

  • В регистрах.

  • В стеке.

  • В регистрах и стеке.

Порядок передачи параметров. При использовании для параметров стека определяет, в каком порядке параметры должны быть помещены в стек, при использовании регистров — порядок сопоставления параметров и регистров. Варианты:

  • прямой порядок — параметры размещаются в том же порядке, в котором они перечислены в описании подпрограммы. Преимущество — единообразие кода и записи на языке высокого уровня;

  • обратный порядок — параметры передаются в порядке от конца к началу. Преимущество — при любом количестве параметров на вершине стека после адреса возврата оказывается сначала первый параметр, за ним второй и так далее. Это упрощает реализацию подпрограмм с неопределённым числом параметров произвольных типов.

Кто возвращает указатель стека на исходную позицию:

  • вызываемая подпрограмма — это сокращает объём команд, необходимых для вызова подпрограммы, поскольку команды восстановления указателя стека записываются только один раз, в конце подпрограммы;

  • вызывающая программа — в этом случае вызов становится сложнее, но облегчается использование подпрограмм с переменным количеством и типом параметров.

Какой командой вызывать подпрограмму и какой — возвращаться в основную программу. Например, в стандартном режиме x86 подпрограмму можно вызвать через call near, call far и pushf/call far (для возврата применяются соответственно retn, retf, iret).

Содержимое каких регистров процессора подпрограмма обязана восстановить перед возвратом.

Соглашения вызова зависят от архитектуры целевой машины и компилятора.

Організація обробки переривань на мові Асемблера.

Звертання до 16-бітних регістрів мікроконтролера Atmel AVR

Директиви асемблеру Atmel AVR. Приклади використання.

Інтерфейс зв’язку USB.

Интерфейс USB в микроконтроллерных устройствах часто применяется для связи с персональным компьютером. Разработка спецификаций на шину USB производится в рамках международной некоммерческой организации USB Implementers Forum (USB-IF).

Пропускная способность шины, соответствующей спецификации USB 1.1, составляет 12 Мбит/с. Спецификация USB 2.0 определяет шину с пропускной способностью 480 Мбит/с. Существует три режима передачи данных: низкоскоростной (LS, Low-speed), полноскоростной (FS, Full-speed), высокоскоростной (HS, High-speed, только для USB 2.0). Согласно спецификации USB, к одному разъему можно подключить до 127 устройств, но накладываются ограничения пропускной способности и мощность шины USB. Полоса пропускания делится между всеми устройствами, подключенными к шине. Ограничение мощности актуально для устройств, которые берут питание непосредственно от шины.

Шина USB состоит из следующих элементов. Хост-контроллер (Host Controller) — это главный контроллер, управляющий работой всех устройств на шине, допускается наличие только одного хост-контроллера. Устройство (Device) может представлять собой хаб, функцию или их комбинацию (Compound Device). Порт (Port) — это точка подключения устройств на шине. Хаб (Hub — концентратор) — устройство, которое обеспечивает дополнительные порты на шине USB. Корневой хаб (Root Hub) — это хаб, входящий в состав хоста. Функция (Function) — это устройство или его отдельный блок, способный передавать и принимать информацию по шине USB. Каждая функция предоставляет конфигурационную информацию, описывающую её возможности и требования к ресурсам. Перед использованием функция должна быть сконфигурирована хостом — ей должна быть выделена полоса в канале и выбраны опции конфигурации. Логическое устройство (logical device) USB представляет собой набор конечных точек.

Физическая архитектура USB-шины определяется основным правилом: все устройства подключаются к хосту либо непосредственно через порт, либо через хаб (рис. 4.19). При этом к каждому порту хаба может подключаться периферийное устройство или другой хаб. Допускается до 5 уровней каскадирования хабов.

Рисунок 4.19

Логическая архитектура выглядит как звезда, центром которой является прикладное ПО, а вершинами — набор конечных точек (рис. 4.20). Набор независимых конечных точек с которыми ПО обменивается информацией образуют логическое устройство USB. Каждому логическому устройству USB (как функции, так и хабу) назначается свой адрес (1—127), уникальный на данной шине USB. Каждая конечная точка логического устройства идентифицируется своим номером (0—15) и направлением передачи (IN — передача к хосту, OUT — от хоста). Прикладная программа ведет обмен информацией с каждой конечной точкой.

Рисунок 4.20

Механизм передачи данных по шине USB является асинхронным и блочным. Блок передаваемых данных называется USB-фреймом или USB-кадром и передается за фиксированный временной интервал. Оперирование командами и блоками данных реализуется при помощи логической абстракции, называемой каналом. Внешнее устройство также делится на логические абстракции, называемые конечными точками. Таким образом, канал является логической связкой между хост-контроллером и конечной точкой внешнего устройства. Для передачи команд (и данных, входящих в состав команд) используется канал по умолчанию, а для передачи данных открываются либо потоковые каналы, либо каналы сообщений.

Для предотвращения ошибочных соединений все устройства, работающие с шиной USВ могут использовать только три типа разъемов: "А", "В" и "Mini-B". Разъемы "А" (рис. 4.21а) используются в хостах и хабах, разъемы "В" (рис. 4.21.б) используют "ведомые" устройства, а разъемы "mini-В" (рис. 4.21в) позиционируются для применения в малогабаритных мобильных устройствах.

Рисунок 4.21

Конструктивно разъемы выполнены так, что сначала происходит соединение шины питания, потом шины данных. Спецификация USB определяет стандартную цветовую гамму для проводников внутри USB-кабеля. Кабель также имеет линии VBus и GND для передачи питающего напряжения 5 В к устройствам и сигнальные линии D+ и D-. Эта информация отражена в табл. 4.4.

Таблица 4.4

Номер контакта

Цвет

Описание

1

Красный

+5 В, питание

2

Белый

D-, данные "минус"

3

Зеленый

D+, данные "плюс"

4

Черный

GND, земля

Корпус

Медная оплетка

Экран

Информационные сигналы и питающее напряжение 5 В передаются по четырехжильному кабелю. Для передачи данных по шине используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Сигналы синхронизации и данные кодируются по методу NRZI. В этой кодировке логическая "1" представлена неизменным уровнем на протяжении битового интервала, а логический 0 представляет собой смену уровня на противоположный на протяжении битового интервала.

В низкоскоростных, полноскоростных устройствах дифференциальная "1" передается путем подтяжки линии D+ к напряжению более 2,8 В, а линии D- к напряжению менее 0,3 В. Скорость, используемая устройством, подключенным к конкретному порту, определяется по уровням сигналов D+ и D-, смещаемых нагрузочными резисторами приемопередатчиков, а для HS-устройств определяется на этапе конфигурирования. Более того, эти резисторы так же служат для уведомления хоста или хаба о том, что к шине USB подключено новое устройство. Дифференциальный "0" передается путем подтяжки линии D+ к напряжению менее 0,3 В, а линии D- к напряжению более 2,8 В. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D-. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Интерфейс определяет следующие состояния: Data J State и Data К State - состояния передаваемого бита; Idle State - состояние паузы на шине; Resume State - сигнал "пробуждения" для вывода устройства из "спящего" режима; Start of Packet (SOP) - начало пакета; End of Packet (ЕОР) - конец пакета; Disconnect - устройство отключено от порта; Connect - устройство подключено к порту; Reset - сброс устройства.

Спецификация USB жестко оговаривает условия питания устройств, подключенных к шине. В зависимости от принципа питания можно выделяются три класса USB-устройств: с питанием от шины (Bus Powered Devices) и малым потреблением (не более 100 мА); с питанием от шины и большим потреблением (не более 500 мА); с собственным источником питания (Self Powered Devices) - основную мощность потребляют от собственного блока питания, а от шины не более 100 мА, а.

Все операции по передаче данных по шине USB инициируются хостом. Периферийные устройства сами начать обмен данными не могут, а только реагируют на команды хоста. Хост-контроллер интерфейса шины USB по методу NRZI формирует кадры. Каждый кадр состоит из наиболее приоритетных посылок, состав которых формирует ПО хоста. Каждая передача состоит из одной или нескольких транзакций в свою очередь состоящая из пакетов. Каждый пакет содержит идентификатор, данные и контрольную сумму. Упрощенная схема показана на рис. 4.22.

Рисунок 4.22

Спецификация шины определяет четыре различных типа передачи (transfer type) данных для конечных точек:

управляющие передачи (Control Transfers) - используются хостом для конфигурирования устройства во время подключения, для управления устройством и получения статусной информации в процессе работы. Протокол обеспечивает гарантированную доставку таких посылок. Длина поля данных управляющей посылки не может превышать 64 байт на полной скорости и 8 байт на низкой. Для таких посылок хост гарантированно выделяет 10% полосы пропускания.

передачи массивов данных (Bulk Data Transfers) - применяются при необходимости обеспечения гарантированной доставки данных от хоста к функции или от функции к хосту, но время доставки не ограничено. Такая передача занимает всю доступную полосу пропускания шины. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет у таких передач самый низкий, они могут приостанавливаться при большой загрузке шины. Допускаются только на полной скорости передачи.

передачи по прерываниям (Interrupt Transfers) - используются в том случае, когда требуется передавать одиночные пакеты данных небольшого размера. Каждый пакет требуется передать за ограниченное время. Операции передачи носят спонтанный характер и должны обслуживаться не медленнее, чем того требует устройство. Поле данных может содержать до 64 байт на полной скорости и до 8 байт на низкой. Предел времени обслуживания устанавливается в диапазоне 1—255 мс для полной скорости и 10—255 мс — для низкой.

изохронные передачи (Isochronous Transfers) - применяются для обмена данными в "реальном времени", когда на каждом временном интервале требуется передавать строго определенное количество данных, но доставка информации не гарантирована. Такие передачи занимают предварительно согласованную часть пропускной способности шины и имеют заданную задержку доставки.

Контроллер циклически (с периодом 1,0 ± 0,0005 мс) формирует кадры (frames), в которые укладываются все запланированные передачи (рис.4.23).

Рис. 4.23 Поток кадров USB

Каждый кадр начинается с посылки пакета-маркера SOF, который является синхронизирующим сигналом для всех устройств. В конце каждого кадра выделяется интервал времени EOF. В режиме высокоскоростной передачи пакеты SOF передаются в начале каждого микрокадра (период 125 ± 0,0625 мкс). Хост планирует загрузку кадров так, чтобы в них всегда находилось место для наиболее приоритетных передач, а свободное место кадров заполняется низкоприоритетными передачами больших объемов данных. Каждый кадр имеет свой номер циклически увеличивающийся во время EOF. В каждом кадре может быть выполнено несколько транзакций.

Логическое соединение между конечной точкой устройства и ПО хоста образуют канал (pipe) (рис.4.24).

Рисунок 4.24

Существует две модели каналов:

потоковый канал (поток, streaming pipe) - это канал для передачи данных, структура которых определяется клиентским ПО. Поток всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух разных потоковых каналов - ввода и вывода.

канал сообщений (message pipe или control pipe) - это канал для передачи данных, структура которых определяется спецификацией USB. Каналы этого типа двунаправленные и применяются для передачи управляющих посылок. Каналы сообщений строго синхронизированы - нельзя начинать передачу нового сообщения, пока не завершена обработка предыдущего. Полоса пропускания шины делится между всеми установленными каналами. Выделенная полоса закрепляется за каналом, и если установление нового канала требует такой полосы, которая не списывается в уже существующее распределение, запрос на выделение канала отвергается. Канал сообщений, связанный с нулевой конечной точкой, называется основным каналом сообщений (Default Control Pipe или Control Pipe 0), а остальные каналы (клиентские каналы, Client Pipe) создаются в процессе конфигурирования устройства. Их владельцами являются драйверы устройств. По клиентским каналам могут передаваться как потоки, так и сообщения с помощью любых типов передач.

Маркер транзакции отмечает начало очередной транзакции на шине USB и позволяет адресовать до 127 функций USB (нулевой адрес используется для конфигурирования) и по 16 конечных точек в каждой функции. Поле данных пакета SOF (рис. 4.25) содержит номер кадра, циклический контрольный код:

Рисунок 4.25

Пакет SOF используется для отметки начала кадра. Хотя хост-контроллер оперирует 32-битным счетчиком кадров, в маркере SOF передаются только младшие 11 бит.

Информация по каналу передается в виде пакетов (Packet, рис. 4.26).

Рисунок 4.26

Каждый пакет начинается с поля синхронизации SYNC (SYNChronization), за которым следует идентификатор пакета PID (Packet IDentifier), значения которого приведены в спецификации шины USB. Поле Check представляет собой побитовую инверсию PID. Два младших бита идентификатора определяют группу, к которой принадлежит пакет.

В поле данных пакетов может содержаться от 0 до 1023 байт данных, за которыми следует 16-разрядный циклический контрольный код, вычисленный по полю Data (рис. 4.27.).

Рисунок 4.27

Пакет данных всегда должен посылать целое число байт. Для режима LS максимальный 1 размер пакета равен 8 байтам, для FS — 1023 байта, а для HS — 1024 байта.

Протокол USB использует циклический избыточный код (CRC, Cyclic Redundancy Checksums) для защиты полей пакета. CRC-контроль является более мощным методом обнаружения ошибок и используется для обнаружения ошибок на уровне блоков данных. Он основан на делении и умножении многочленов.

Любое устройство с интерфейсом USB имеет конечную точку с нулевым номером (Endpoint Zero). Эта точка позволяет хосту опрашивать устройство с целью определения его типа и параметров, выполнять инициализацию и конфигурирование устройства. Нулевая точка устройства доступна после того, как устройство подключено к шине, включено и получило сигнал сброса по шине (bus reset). Кроме нулевой точки, устройства имеют дополнительные конечные точки, которые используются для обмена данными с хостом. Дополнительные точки могут работать либо только на прием данных от хоста (входные точки, IN), либо только на передачу данных хосту (выходные точки, OUT). Эти точки после включения питания или сброса находятся в неопределенном состоянии и недоступны для работы до тех пор, пока хост не выполнит процедуру конфигурирования устройства.