- •1) Комбинационная логика, основные элементы (и, или, не), их схемы на кмоп транзисторах.
- •Временная диаграмма работы сдвигового регистра.
- •6) Общая структура микроконтроллерного устройства, алу, программный счётчик.
- •Общая структура микроконтроллерного устройства (из интернета)
- •Программный счётчик.
- •7. Виды памяти микроконтроллеров (на примере семейства avr). Стек и его инициализация.
- •8. Прерывания, вектор прерываний.
- •9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.
- •Команды логических операций.
- •Команды операций с битами.
- •Команды пересылки данных.
- •Команды передачи управления.
- •Команды управления системой.
- •10. Регистры ввода-вывода. Схема устройства вывода микроконтроллера, управляющие регистры, режимы работы.
- •Источники тактовой частоты
- •Управляющие регистры таймера
- •Прерывания таймера
- •3. Цифро-аналоговые преобразователи. Структурная схема цап. Параллельная схема суммирования токов. Последовательная схема суммирования токов.
- •Классификация ацп
- •5. Структурная схема встроенного аналого-цифрового преобразователя, его основные параметры. Настройка ацп, управляющие регистры. Прерывания по завершению цикла преобразования.
- •17. Передача данных с использованием асинхронного последо-вательного интерфейса spi. Схема организации spi интерфейса, сдвиговые регистры. Пакетная передача данных.
- •18) Интерфейс i2c. Протокол передачи данных, режимы работы. Основные преимущества и недостатки интерфейса.
Программный счётчик.
Программный счётчик (РС – ProgramCounter) используется для указания следующей команды выполняемой программы. Это счётчик с параллельным вводом и параллельным выводом. В процессорах с принстонской архитектурой содержимое РС поступает по шине данных в схему управления памятью, указывая адрес считываемой команды. Программные счётчики часто входят в состав схемы управления памятью – это позволяет избежать передачи адреса по внутренней шине данных.
Основные характерные особенности программного счётчика, следующие:
параллельная загрузка нового содержимого с шины данных;
возможность возврата к адресу первой команды программы (возможность сброса);
реализация счёта на увеличение (инкремента) для адресации следующей команды.
Сигналы, обеспечивающие выполнение этих операций счётчиком, формируются дешифратором команд, управляющим последовательностью действий МП-компонента.
Параллельная загрузка используется для записи в программный счётчик адреса перехода при выполнении команды безусловного перехода («jump») или вызова подпрограммы («call»).
Начальное содержимое программного счётчика после запуска МП-устройства может иметь любое значение. Часто используется значение начального адреса 0000016, но ряд устройств начинают выполнение программы с других адресов. Аналогичная ситуация возникает с адресами прерываний (векторами прерываний). Обслуживание прерывания начинается с адреса (вектора прерывания), отличного от адреса, загружаемого при начальном запуске устройства. Но для реализации прерывания или запуска устройства используются обычно одни и те же аппаратные средства.
Из методички:
Счетчик команд представляет собой регистр, в котором содержится адрес следующей исполняемой команды, при этом напрямую из наполняемой программы он недоступен. Размер счетчика команд зависит от объема имеющейся памяти программ и составляет от 16 разрядов. При нормальном выполнении программы содержимое счетчика команд автоматически увеличивается на 1 или на 2 (в зависимости от выполняемой команды) в каждом машинном цикле. Этот порядок нарушается при выполнении команд перехода, вызова и возврата из подпрограмм, а также пи. возникновении прерываний.
После включения питания, а также после сброса микроконтроллера счетчик программ автоматически загружается нулевой стартовый адрес (0х00 в шестнадцатеричной системе) или начальный адрес сектора загрузчика. Как правило, по этому адресу располагается команда безусловного перехода к части программы, предназначенной для инициализации используемой периферии, откуда начинается выполнение программы. При возникновении прерывания в счетчик команд загружается адрес соответствующего вектора прерывания. Если прерывания используются в программе, по адресам векторов прерываний должны размещаться команды перехода к подпрограммам обработки прерываний.
7. Виды памяти микроконтроллеров (на примере семейства avr). Стек и его инициализация.
Организация памяти. В микроконтроллерах семейства AVRреализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и данных, но также и шины доступа к ним. Способы адресации и доступа к этим областям памяти также различны. Такая структура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно увеличивает производительность. Каждая из областей данных (ОЗУ и энергозависимая ERROM)также расположена в своем адресном пространстве.
Память пространств предназначена для хранения команд, управляющих функционированием микроконтроллера. Память программ также часто используется для хранения таблиц констант, не меняющихся во время работы программы. Память программ представляет собой электрически стираемое программируемое постоянное запоминающее устройство (ППЗУ, FLASHПЗУ). В связи с тем, что длина всех команд кратна одному слову (16 бит), память программ имеет 16-разрядную организацию. Логически память программ разделена на две неравные части: область прикладной программы и область загрузчика. В последней может располагаться специальная программа (тот самй загрузчик), позволяющая микроконтроллеру самостоятельно управлять загрузкой и выгрузкой прикладных программ. Если же возможность самопрограммирования микроконтроллера не используется, прикладная программа может располагаться и в области загрузчика. Для адресации памяти программ используется счетчик команд. Размер счетчика команд составляет 12…16 разрядов, в зависимости от объема адресуемой памяти.
Обобщенная карта памяти AVRМК:
По адресу 0х0000 памяти программ находится вектор сброса. После инициализации (сброса) МК выполнение программы начинается с этого адреса. Начиная с адреса 0х0001 или 0х0002 памяти программ располагается таблица векторов прерываний. При возникновении прерывания, после сохранения в стеке текущего значения счетчика команд, происходит выполнение команды, расположенной по адресу соответствующего вектора. Поэтому по этим адресам располагаются команды перехода к подпрограммам обработки прерываний. В моделях с объемом памяти менее 8 Кбайт в качестве этих команд используются команды относительного перехода (RJMP), а в остальных моделях – команды абсолютного перехода (JMP).
В качестве промежуточных операндов используется 32 ячейки – оперативные регистры общего назначения (РОН). Доступ к этим ячейкам самый быстрый, а число операций с их содержимым наиболее разнообразное. При написании программ на языке ассемблера эти регистры обозначаются как R0, R1, R2…R31, и делятся на три группы:
Младшие R0-R15 – обычные РОН, но в некотором смысле неполноценные. С ними не работают многие команды, например, загрузка непосредтственного числа.
Старшие R16-R31 – полноценные регистры, работающие со всеми командами без исключения.
Индексные R26…R31 – 6 последних регистров из старшей группы отличаются от остальных. В принципе, их можно использовать и как обычные РОН. Но, кроме этого, они могут образовывать регистровые пары X(R26:R27), Y(R28:R29), Z(R30:R31), которые используются как укащатели при работе с памятью.
Память данных. Память данныхAVRМК разделена на три части: регистровая память, оперативная память (статическое ОЗУ) и энергозависимое ЭСППЗУ (EEPROM).
Регистровая память включает 32 РОН, объединенных в файл, и служебные регистры ввода/вывода (РВВ). В старших моделях МК имеется также область дополнительных (Extended) регистров ввода/вывода (ДРВВ). Под РВВ в памяти МК отводятся 64 байта, а под ДРВВ – 160 байт. Введение ДРВВ связано с тем, что для поддержки периферийных устройств этих моделей обычных 64 регистров недостаточно. В обеих областях РВВ располагаются различные служебные регистры (регистры управления МК, регистры состояния), а также регистры управления периферийными устройствами, входящими в состав МК. Распределение адресов пространства ввода/вывода (как основного, так и дополнительного) зависит от конкретной модели МК и входящих в его структуру периферийных устройсвтв.
Кроме 32 РОН в структуру МК обычно включена оперативная память (ОЗУ), предназначенная для временного хранения переменных. Есть она не везде – в самых младших МК семейства Tinyоперативной памяти нет вовсе, в ее качестве выступают 32 РОН. Оперативная память представляет собой несколько сотен ячеек для временного хранения данных, от 64 байт до 4 килобайт, в зависимости от модели. В этих ячейках могут храниться любые данные, а доступ к ним осуществляется через команды LOADи STORE.
Для долговременного хранения различной информации, которая может изменяться в процессе функционирования готовой системы (калибровочные константы, серийные номера, ключи), в МК может использоваться энергозависимая EEPROM-память. ЕЕ объем составляет для различных моделей от 512 байт до 4 Кбайт. Эта память расположена в отдельном адресном пространстве, а доступ к ней осуществляется с помощью РВВ.
Стек.Стек представляет собой область памяти, которую микроконтроллерное ядро использует для сохранения и восстановления адресов возврата и подпрограмм прерываний. Практически у всех МК AVRстек размещается в оперативной памяти. Для адресации текущего элемента (вершины стека) используется указатель стека SP (StackPinter). Это однобайтовый РВВ SPLу моделей с объёмом памяти данных до 256 байт, или двухбайтовые SPH:SPL (SPH–старший байт,SPL– младший байт) у старших моделей с большим объемом памяти.
Так как после подачи напряжения питания (или после сброса) в регистрах содержится нулевое значение, в самом начале программы указатель стека необходимо проинициализировать, записав в него значение конечного адреса памяти данных. При вызове подпрограмм адрес команды, расположенной за указанной вызова, сохраняется в стеке. Значение указателя стека при этом уменьшается на два, так как для хранения счетчика команд требуется два байта.
При возврате подпрограммы этот адрес извлекается из стека и загружается в счетчик команд. Значение указателя стека соответственно увеличивается на два. То же происходит и во время вызова прерываний.
Схематическое расположение стека в памяти данных:
Во всех моделях AVRМК стек доступен со стороны пользовательской программы и может быть использован в процессе выполнения программы. Для работы со стеком существует всего две команды: занесение в стек (PUSH)и извлечение из стека (POP).
При старте МК обычно первым делом проводят инициализацию стека, записывая в 16-битный регистр SPадрес, откуда он будет увеличиваться. Делается это следующим образом:
LDIR16, Low(RAMEND)
OUTSPL, R16
LDI R16, High(RAMEND)
OUT SPH, R16
RAMEND– это макроопределение, указывающее на конец ОЗУ для каждого конкретного МК. При написании программ на языках более высокого уровня (C, C++) компилятор проводит эту операцию самостоятельно, без участия пользователя.
