- •Вопросы к первой контрольной точке:
- •1) Комбинационная логика, основные элементы (и, или, не), их схемы на кмоп транзисторах.
- •5) Регистры на основе d-триггеров. Параллельные регистры, последовательные (сдвиговые) регистры. Временная диаграмма работы сдвигового регистра.
- •6) Общая структура микроконтроллерного устройства, алу, программный счётчик.
- •7) Виды памяти микроконтроллеров (на примере семейства avr). Стек и его инициализация.
- •8) Прерывания, вектор прерываний.
- •9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.
- •10) Регистры ввода-вывода. Схема устройства вывода микроконтроллера, управляющие регистры, режимы работы.
5) Регистры на основе d-триггеров. Параллельные регистры, последовательные (сдвиговые) регистры. Временная диаграмма работы сдвигового регистра.
Схема регистра (параллельного) Схема регистра (последовательного)
6) Общая структура микроконтроллерного устройства, алу, программный счётчик.
В рамках единой базовой архитектуры 8-битные МК AVR подразделяются на 4 семейства: Classic устаревшие Tiny небольшой объем память 1-2 КБайта и ограниченная периферия Mega развитая периферия, расширенный объем данных (до 256 Кб) и программ XMega 16-битные МК, развитая периферия (к примеру, встроенный 12-битный ЦАП, блок прямого доступа к памяти), наибольший объем памяти и повышенная тактовая частота (до 120 МГц).
Общая структура микроконтроллерного ядра
АЛУ (арифметическое-логическое устройство) — устройство, предназначенное для выполнения логических и математически операций над двоичными числами. АЛУ входит в состав любого микропроцессора.
Счётчик команд представляет собой регистр, в котором содержится адрес следующей исполняемой команды, при этом напрямую из наполняемой программы он недоступен. Размер счетчика команд зависит от объема имеющейся памяти программ и составляет от 16 разрядов. При нормальном выполнении программы содержимое счетчика команд автоматически увеличивается на 1 или на 2 (в зависимости от выполняемой команды) в каждом машинном цикле. Этот порядок нарушается при выполнении команд перехода, вызова и возврата из подпрограмм, а также пи. возникновении прерываний.
Программный счётчик (РС – Program Counter) используется для указания следующей команды выполняемой программы. Это счётчик с параллельным вводом и параллельным выводом. В процессорах с принстонской архитектурой содержимое РС поступает по шине данных в схему управления памятью, указывая адрес считываемой команды. Программные счётчики часто входят в состав схемы управления памятью – это позволяет избежать передачи адреса по внутренней шине данных.
Основные характерные особенности программного счётчика, следующие:
параллельная загрузка нового содержимого с шины данных;
возможность возврата к адресу первой команды программы (возможность сброса);
реализация счёта на увеличение (инкремента) для адресации следующей команды.
7) Виды памяти микроконтроллеров (на примере семейства avr). Стек и его инициализация.
В микроконтроллерах семейства AVR реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и данных, но также и шины доступа к ним. Способы адресации и доступа к этим областям памяти также 28 различны. Такая структура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно увеличивает производительность. Каждая из областей данных (ОЗУ и энергозависимая ERROM) также расположена в своем адресном пространстве.
Общая структура памяти в МК AVR Устройство Пам. Данных
Память программ предназначена для хранения команд, управляющих функционированием микроконтроллера. Память программ также часто используется для хранения таблиц констант, не меняющихся во время работы программы.
В качестве промежуточных операндов используются 32 ячейки – оперативные регистры общего назначения (РОН). Доступ к этим ячейкам самый быстрый, а число операций с их содержимым наиболее разнообразное. При написании программ на Ассемблере эти регистры обозначаются как R0, R1, R2 … R31, и делятся на три группы:
Младшие R0 – R15 – обычные регистры общего назначения, но в некотором смысле неполноценные. С ними не работают многие команды, например, загрузка непосредственного числа.
Старшие R16 – R31 – полноценные регистры, работающие со всеми командами без исключения.
Индексные R26…R31 – шесть последних регистров из старшей группы отличаются от остальных. В принципе, их можно использовать и как обычные регистры общего назначения. Но, кроме этого, они могут образовывать регистровые пары X(R26:R27), Y(R28:R29), Z(R30:R31) которые используются как указатели при работе с памятью.
Стек представляет собой область памяти, которую микроконтроллерное ядро использует для сохранения и восстановления адресов возврата и подпрограмм прерываний. Практически у всех МК AVR стек размещается в оперативной памяти. Для адресации текущего элемента (вершины стека) используется указатель стека SP (Stack Pinter). Это однобайтовый РВВ SPL у моделей с объёмом памяти данных до 256 байт, или двухбайтовые SPH:SPL (SPH – старший байт, SPL – младший байт) у старших моделей с большим объемом памяти.
Так как после подачи напряжения питания (или после сброса) в регистрах содержится нулевое значение, в самом начале программы указатель стека необходимо проинициализировать, записав в него значение конечного адреса памяти данных. При вызове подпрограмм адрес команды, расположенной за указанной вызова, сохраняется в стеке. Значение указателя стека при этом уменьшается на два, так как для хранения счетчика команд требуется два байта. При возврате подпрограммы этот адрес извлекается из стека и загружается в счетчик команд. Значение указателя стека соответственно увеличивается на два. То же происходит и во время вызова прерываний.
При старте МК обычно первым делом проводят инициализацию стека, записывая в 16- битный регистр SP адрес, откуда он будет увеличиваться. Делается это следующим образом:
LDI R16, Low(RAMEND) OUT SPL, R16 LDI R16, High(RAMEND) OUT SPH, R16
