Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1вопрос.docx
Скачиваний:
11
Добавлен:
16.11.2018
Размер:
251.77 Кб
Скачать

13. Косвенная адресация с постинкрементом

При использовании команд косвенной адресации с постинкрементом после обращения по адресу, который находится в индексном регистре, содержимое индексного регистра уменьшается на 1.

Микроконтроллеры семейства поддерживают 6 команд (по 2 для каждого индексного регистра) косвенной адресации с постинкрементом: LD Rd, X+/Y+/Z+ пересылка байта из ОЗУ в РОН) и ST X+/Y+/Z+,Rd (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8…4 слова команды.

Перед выполнением операции регистр X, Y или Z декрементируется. Декрементированное содержимое регистра X, Y или Z является адресом операнда.

    1. Косвенная адресация данных с постинкрементом

14. Регістри управління паралельними портами

Порты микроконтроллера - это устройства ввода/вывода, позволяющие микроконтроллеру передавать или принимать данные. Стандартный порт микроконтроллера AVR имеет восемь разрядов данных, которые могут передаваться или приниматься параллельно. Каждому разряду (или биту) соответствует вывод (ножка) микроконтроллера. Ножки микроконтроллера также называют пинами. Для обозначения портов используются латинские буквы А, В, С и т.д. Количество портов ввода/вывода варьируется в зависимости от модели микроконтроллера.

Любой порт микроконтроллера можно сконфигурировать как вход или как выход. Для того чтобы это сделать, следует записать в соответствующий порту регистр DDRx необходимое значение. Кроме того, как вход или выход можно сконфигурировать отдельно любой вывод (пин) порта. В любом случае, хотите вы сконфигурировать весь порт или отдельный вывод, вам необходимо будет работать с ригистрами DDRx. DDRx - регистр направления передачи данных. Этот регистр определяет, является тот или иной вывод порта входом или выходом. Если некоторый разряд регистра DDRx содержит логическую единицу, то соответствующий вывод порта сконфигурирован как выход, в противном случае - как вход. Буква x в данном случае должна обозначать имя порта, с которым вы работаете. Таким образом, для порта A это будет регистр DDRA, для порта B - регистр DDRB и т. д.

15.

Для звязку з зовнішніми пристроями МК обладнаного периферійними модулями, що називаються портами. В залежності від типу МК в ньому можуть бути від 3 до 8 портів. Для управління паралельними портами призначені 3 регістри введення/виведення : PORTx, DDRx, PINx xє (А,В…)

Наприклад для порта А

PORTA - $1B

DDRA - $1A

PINA - $39

Призначення регістрів портів наступні:

PORTx – виконує подвійну функцію. Якщо порт налаштований на виведення то быти порту х зоначають стоп бітів цього порту. Якщо порт налаштований на введення то біти х визначають стоп внутрішнього підтягую чого регістра, якщо біт порту х =1 то підтягувальний регістр включаеться між виводом і напругою живлення.

DDRx – регістр DDR визначає передачі даних через даний порт. Якщо певний біт в регістрі DDR встановлюється в 1, то цей вивід працює на вивщення, цтак же цей працює на введення. МК AVR передбачають що управління бітом портів індивідуальне для кожного біту.

PINx – не є регістром, він забезпечує зчитування фізичного стану кожного з виводів порту

16.

Підтягувальний резистор - резистор, включений між провідником, по якому поширюється електричний сигнал, і живленням, або між провідником і землею.

Підтягувальний резистор потрібен, щоб гарантувати на логічному вході, з яким сполучений провідник, високий (у першому випадку) або низький (у другому випадку) рівень у випадках:

• провідник не з'єднаний з логічним виходом

• приєднаний логічний вихід знаходиться в високоімпедансное стані.

• коли розімкнений ключовий елемент на приєднаному логічному виході, який влаштований, як відкритий висновок ключового елементу. Ключовим елементом може бути польовий або біполярний транзистор, а відкритим висновком - колектор, емітер, стік або витік.

Підтягаючий резистор утворює ланцюг, що забезпечує підтяжку сигналу до живлення або до землі. У першому випадку підтяжка називається підтяжкою до живлення, у другому - підтяжкою до землі.

Підтягувальний "резистор слід встановлювати не тільки на виведенні / RESET, а й у тому випадку, коли виводи SCK, MOSI і MISO відповідних портів використовуються для програмування і підключені до програмуючого гнізда ISP, а також за виводами зовнішніх переривань, якщо вони задіяні. Якщо ці виводи не "підтягувати" до напруги живлення додатковими резисторами, то не виключені помилкові спрацьовування зовнішніх переривань, перезапуск системи, а при дуже потужних перешкодах - навіть псування програми в пам'яті програм. З іншого боку, коли виводи програмування служать і як звичайних портів, сконфігурованих на вихід, а в пристрої застосовуються режими енергозбереження, наявність "підтягувальних" резисторів може привести до зайвого споживання струму (при установці виведення в логічний нуль через резистор потече струм від джерела живлення на вхід МК). Якщо реалізований один з режимів енергозбереження, то потрібно ретельно проаналізувати схему, щоб виключити ситуації, при яких через ці резистори протікає струм.

Також завжди слід встановлювати зовнішні резистори при роботі виводів МК на загальну шину, як в інтерфейсі I2С, при підключенні до двухвиводних кнопок (особливо при наявності зовнішнього переривання).

17 Последовательность создания проэкта и программы для микроконтролера

AVR в среде программы AVR Studio

При старте Студия сразу же кидается в тебя мастером создания нового проекта. В центре будут уже созданные проекты, а нас интересует кнопка New Project. Жми ее и вводи параметры будущей разработки.Выбирай тип языка на котором будешь писать: Си или Ассемблер, а также имя будущего проекта. Также не помешает указать путь к папке с проектами. Студия умная и запомнит ее раз и навсегда и под каждый новый проект будет генерить новую папку. Так что скоро там будет полный гадюшник : Дальше есть две кнопки Finish и Next. Тебе надо жать на Next. Нажмешь на финиш и получишь пустой проект в котором даже процессор то не определен. А вот если Next, то будет следующий диалог:Сильно сомневаюсь, что у тебя первоначально сразу же будет AVR Dragon или какой нибудь ICE 2, так что мы будем симулировать. Выбирай симулятор. Чем отличается AVR Simulator от AVR Simulator2 я так и не понял, работают одинаково. Выбрал? Вот теперь FINISH HIM! В смысле жми Finish.Слева - окно ресурсов МК. Тут ты будешь глядеть что происходит с твоим контроллером. Какие где биты стоят, что на портах, что в счетных регистрах, что в регистрах конфигурации. В центре окно кода, справа же окно проекта - тут будут все файлы показаны. Внизу, под окном кода, отрыг сообщений компилятора. Там все ошибки и косяки отображаются при компиляции проги.

18.Засоби від лагодження програми для мікроконтролера AVR в середовищі програми AVR Studio. Варіанти виконання програми в режимі від лагодження. Можливості контролю вмісту пристроїв пам’яті в ході від лагодження програми.

Как уже говорилось, AVR Studio позволяет производить отладку приложений с использованием встроенного программного симулятора или внешнего внутрисхемного эмулятора. Когда пользователь запускает AVR Studio, программа проверяет наличие эмулятора на одном из последовательных портов компьютера. Если эмулятор найден, то выбирается как базовая система отладки. Если эмулятор не найден, то отладка будет выполняться на встроенном программном симуляторе AVR.

Внутрисхемный эмулятор позволяет производить отладку приложения на реальной целевой плате. Следует помнить, что в режиме реального времени эмулятор работает существенно быстрее, чем программный симулятор.

Отметим еще раз, что независимо режима работы отладчика, интерфейс AVR Studio не меняется. При переключении между различными режимами отладки все параметры среды сохраняются. Информация о текущем режиме отладчика выводится в строке состояния AVR Studio.

Отладка проекта при помощи программного симулятора

Для запуска отладчика необходимо выполнить процедуру Build and run, которая вызывается при нажатии на соответствующую кнопку на панели управления. Процедура Build and run выполняется в два этапа. Сперва происходит трансляция входного ассемблерного файла, при которой независимо от установок проекта, кроме выходного файла заданного формата генерируется и объектный файл. Затем этот объектный файл загружается в отладчик.

Для совместимости с прежними версиями в AVR Studio предусмотрен еще один вариант запуска отладчика - загрузка полученного в результате трансляции объектного файла (File -> Open) . Но при этом пользователь не имеет возможности редактировать исходный текст программы непосредственно в отладчике. Кроме того следует помнить, что для того, чтобы транслятор сгенерировал необходимый для запуска отладчика объектный файл, нужно в окне установок проекта указать в качестве формата выходного файла транслятора Object.

В AVR Studio для отладки программы предусмотрены две команды пошагового режима: Step Over и Trace into. Разница между ними в том, что команда Step Over не работает в подпрограммах. С помощью команд пошагового режима можно проследить изменения значений в регистрах устройств ввода/вывода, памяти и регистрового файла. К командам шагового режима относятся также Auto Step и Multi Step. Выбрав в меню Debug пункт Debug Options, можно установить в открывшемся окне параметры режимов Auto Step и Multi Step, а также некоторые другие опции симулятора

19 Команды арифметических и логических операций.

Основными арифметическими операциями являются сложение и вычитание двух чисел. Эти команды по большей части очевидны. Сложение и вычитание содержимого двух регистров производиться при помощи команд ADD и SUB. Модификации этих команд, которые учитывают значение флага переноса, позволяют выполнить операции над 8-, 16-, 24- и даже 32-разрядными числами со знаком, хранящимися в регистрах.

Поясним функции флагов отрицательного результата N (negative), переполнения V (overflow) и знака S (sign), так как они имеют некоторые особенности и сложны для понимания при первоначальном знакомстве.

Флаг отрицательного результата N просто копирует значение бита 7 результата, который показывает, является результат положительным или отрицательным числом.

Флаг переполнения V в регистре SREG указывает на переполнение во время сложения или вычитания чисел со знаком. Рассмотрим пример:

ADD R1, R2

Флаг V будет установлен в 1, если в регистрах R1 и R2 содержаться положительные числа, а результат их сложения окажется больше 127, или оба числа отрицательны, а результат будет меньше –128. Рассмотрим пример с конкретными значениями:

LDI R1, 100 ;100 = 0b01100100

LDI R2, 100 ;Занести 0b01100100 R1 и R2

ADD R1, R2 ;R1 = R1 + R2 = 200 = 0b11001000

Десятичное число 200 в двоичной записи имеет значение бита 7 равное 1, что указывает на получение отрицательного результата. Следовательно, после выполнения операции сложения флаг N будет установлен в 1. Но в данном случае вместе с флагом N будет так же установлен в 1 флаг V, указывая, что произошло переполнение при обработке чисел со знаком.

Если содержимое R1 = R2 = - 100, то результатом сложения этих чисел будет 0b00111000 в двоичной системе счисления, что является положительным числом. При этом флаг N будет сброшен в 0,показывая, что результата положителен, однако будет установлен флаг V, означающий, что на самом деле это не так.

Использование флага S = N ^ V позволяет рассматривать результат как 9-разрядное число со знаком, где старшим (знаковым) разрядом как раз и является флаг S. Как было отмечено при описании флага V, он устанавливается в 1, когда бит 7 результата имеет неправильное значение, то есть результат не представлен правильным числом со знаком в дополнительном коде. Выполнив операцию «ИСКЛЮЧАЮЩЕЕ ИЛИ» над значением флага V и бита 7 результата, который храниться в бите N, вы получите реальный знак результата. В первом примере (100 + 100) происходит установка в 1 флагов V и N, в результате флаг S будет равняться нулю (1 ^ 1 = 0). Во втором примере (- 100 - 100) флаг N сбрасывается в 0, а флаг V устанавливается в 1, поэтому флаг S будет равняться единице, указывая на то, что результат отрицательный.

Флаг S должен использоваться со старшим байтом числа. При операциях с 16-, 24- и 32-разрядными числами значение флага S надо проверять только после завершения последней операции со старшим байтом числа. При операциях с младшими байтами используется флаг переноса С, как обычно при выполнении сложения и вычитания.