3399 ИЗУЧЕНИЕ МИКРОКОНТРОЛЛЕРОВ ATMEGA 603/103

Лабораторная работа № 1

РЕАЛИЗАЦИЯ ФУНКЦИЙ ПЕРЕСЫЛКИ

Цель работы: программирование на языке ассемблера микроконтроллеров семейства ATmega, приобретение навыков работы           с программным пакетом  AVR Studio.

 

Теоретическая  часть

AVR Studioэто интегрированное отладочное средство программирования МК семейства AVR фирмы Atmel.

AVR Studio включает в себя редактор исходного текста  программы, компилятор с языка Assembler, программу-симулятор для всех  типов    AVR-микроконтроллеров.

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

- управлять состояниями флагов, ЦПУ и таймеров/счетчиков;

- изменять содержание регистров, всех видов памяти, статус и состояние прерываний;

- работать    с EEPROM- памятью, SPI- и UART- интерфейсами, портами и  с  другим   периферийным  оборудованием, входящим в состав выбранного типа МК.

 

Порядок  выполнения работы

Прежде чем начать выполнять лабораторную работу, проведите небольшой подготовительный этап. Для этого, используя Norton Commander, FAR или Windows Commander, создайте свой собственный каталог, нажав клавишу F7. Скопируйте в свой каталог специальные файлы М103def.inc, M603def.inc (находящиеся, например, c:\LBI\AVR ASM), пометив их клавишей Insert и нажав F5. С помощью этих файлов будет задаваться тип программируемого микроконтроллера. Далее этот тип микроконтроллера необходимо  будет указывать в программе. Например, если используется микроконтроллер Aтmega 603 [1], то  самой первой строкой программы будет строка подключения специального файла данного микроконтроллера к работе, то есть строка .includeM603def.inc”. Обязательно запомните путь к созданному вами каталогу. Закройте Norton Commander, FAR или Windows Commander, то есть ту программу, с которой вы работали. На этом подготовительный этап закончен и можно приступать к запуску программного пакета AVR Studio [2].

Для запуска программы щелкните левой кнопкой мыши по кнопке Пуск, расположенной на рабочем столе операционной системы, и в появившемся меню выберите последовательно: Программы / ATMEL AVR Tools / AVR Studio 3.00. После нажатия левой кнопки мыши на экране появится первое окно AVR Studio с ограниченным меню, позволяющим начать работу с создания проекта.

Для создания нового проекта выберите  в главном меню пункт Project / New. На экране появится окно выбора нового проекта (Select new project type), в котором  задайте имя проекта (Project name), например qwe, и тип проекта (Project type). В окне Project type выделите щелчком левой кнопки мыши пункт AVR Assembler и нажмите кнопку OК. После создания проекта на экране появится окно проекта с указанным ранее вами именем qwe. Это окно будет содержать меню, в котором правой кнопкой мыши пометьте пункт Assembler Files, а левой кнопкой мыши в новом появившемся меню - строку Add FileСистемные окна могут иметь названия как на английском, так и на русском языке. Русские названия приведены в круглых скобках. Так как в нашем проекте нет файла, его необходимо создать в открывшемся окне Open (Открытие файла). Но прежде чем создавать файл, щелкните левой кнопкой мыши по окошку Look in (Папка) и укажите путь к созданному  раннее, в подготовительном этапе, каталогу [если вы находитесь в своем каталоге при появлении на экране окна Open (Открытие файла), то щелкать мышью по окошку Look in (Папка) не надо]. После того как вы все это сделали, введите имя файла с расширением .asm (например, qwe.asm) в строку File name (Имя файла) и нажмите кнопку Open (Открыть). Значок файла qwe.asm появится в окне проекта под строкой Other Files. Именно этот файл будет компилироваться.

Прежде чем компилировать файл, надо ввести текст программы. Для того чтобы его ввести, дважды щелкните левой кнопкой мыши по значку файла qwe.asm.  В результате появится запрос системы о подтверждении создания файла qwe.asm. Нажмите кнопку Yes (Да). На экране появится окно qwe.asm, в котором необходимо с помощью клавиатуры  набрать исходный текст программы на ассемблере. В качестве примера наберите следующий текст программы (без нумерации строк и комментариев).

<1> .include"M603def.inc" ;директива подключения специального файла,

; задающего тип микроконтроллера

<2> ldi R26,0x73  ; загрузка в регистр R26 шестнадцатеричного

; числа 0x73

<3> ldi R20,18      ; загрузка в регистр R20 десятичного числа 18

<4> sts 0x61,R20  ; пересылка из регистра  R20 в ячейку SRAM

; памяти по адресу 0х61

<5> ldi R17,4        ; загрузка в регистр 17 десятичного числа 4

<6> lds R18,0x61  ; пересылка в регистр R18 из ячейки памяти с

; адресом 0х61

<7> add R17,R18   ; суммируем содержимое регистров R17 c R18,

; результат в R17

<8> clr R27           ; обнуляем старшие разряды регистра Х

<9> st x,R17          ; заносим по адресу  0х73 содержимое регистра R17

<10> out PortB,R17 ; выдаем на выход порта В содержимое

; регистра R17

Комментарии к командам можно не вводить,  а пользоваться ими из предлагаемого текста программы.

После того как программа набрана, ее необходимо откомпилировать. Но прежде чем компилировать программу, в главном меню выберите пункт  Project и выделите пункт Assembler entry file. Таким образом,  вы как бы пометите свой файл для его  дальнейшей компиляции. После этого в главном меню опять выберите опцию Project и в появившемся меню левой кнопкой мыши щелкните на строке Assemble (F7). Результаты компиляции программы будут видны в появившемся окне Project Output. При обнаружении ошибок на экран будут выведены номера строк программы, содержащих ошибки, и причины ошибок. Следует иметь в виду, что номера строк в сообщении могут не совпадать с номерами строк в листинге программы. Поэтому если у вас возникли ошибки  в тексте программы, внимательно проверьте его еще раз.

Для быстрого доступа к строке, где находится ошибка, дважды щелкните левой кнопкой мыши в окне Project Output на строке сообщения об ошибке. При выполнении данных действий у вас откроется окно с текстом программы (qwe.asm), а небольшая синяя стрелка в левой части экрана будет указывать на строку, в которой допущена ошибка. Сделайте окно qwe.asm активным (просто перейдите в него, подведя курсор мыши к той строке, в которой находится ошибка) и исправьте ошибку. Если в программе компилятор обнаружил несколько ошибок, следует повторить действия, указанные выше, столько раз, сколько ошибок найдено в вашей программе.

Выполните повторную компиляцию программы и убедитесь, что в программе нет ошибок. Если компиляция будет выполнена успешно, система выдаст сообщение, что компиляция проведена без ошибок (Assemble complete with no errors), а значит, можно приступать к проверке правильности работы программы в режиме отладки. Но перед тем как приступать к отладке программы, закройте окно Project Output. Оно вам больше не понадобится.

Приступая к отладке, необходимо   знать  действия,   которые   выполняют  команды   с   ресурсами микроконтроллера, а также структуру микроконтроллера и принцип его работы. Главное - сравнить ожидаемое действие с наблюдаемым в среде отладки. Таким образом, разработчик программы может убедиться в правильности ее работы.

В первую очередь познакомьтесь с меню отладки Debug , которое откроется после щелчка кнопки на названии меню в верхней строке окна среды. Это меню имеет следующие пункты.

  • · Reset (SHIFT+F5). Команда Reset выполняет действие по возврату на начало программы. Если команда выдана в процессе выполнения программы, то выполнение будет остановлено. После выполнения команды Reset информация во всех окнах будет модифицирована. Если программа ранее не запускалась, то команда Reset недоступна.
  • · Go (F5). Команда Gо запускает программу на выполнение. Программа будет выполняться, пока ее не остановит пользователь или не произойдет столкновение с точкой останова. Команда Go доступна только тогда, когда выполнение программы остановлено.
  • Break (CTRL+F5). Команда Break останавливает выполнение программы. Когда выполнение остановлено, информация во всех окнах будет модифицирована. Команда Break доступна только в процессе выполнения программы.
  • Trace Into (F11). Команда Trace Into выполняет одну инструкцию (команду). После того как команда Trace Into выполнится, информация во всех окнах будет модифицирована.
  • · Step Over (F10). Команда Step Over выполняет одну инструкцию. Если команда содержит вызов процедуры, то процедура будет выполнена до конца. В случае когда команда запускает на выполнение инструкцию, на которой установлена точка останова, выполнение программы приостанавливается.
  • · Step Out. Команда Step Out выполняется, пока текущая процедура не завершена. Если во время выполнения команды встречается пользовательская точка останова, то выполнение программы останавливается. После того как команда выполнилась, информация во всех окнах будет модифицирована.
  • · Run to Cursor (F7). По команде Run To Cursor программа выполняется, пока не достигнет инструкции, обозначенной курсором в окне исходного текста программы (qwe.asm) (Sourse Window). Если происходит столкновение с точкой останова, то выполнение программы не приостанавливается. Если же инструкция, обозначенная курсором, недостижима по какой-либо причине, программа будет выполняться, пока ее не остановит пользователь. Поскольку команда Run То Cursor зависит от позиции курсора, она будет доступна только тогда, когда окно Sourse Window активно.
  • · Multi Step. Команда Multi Step в меню Debug выполняет предварительно установленное число команд. Число команд должно быть определено с помощью меню Debug Options в окне Number of Single Steps. Команда Multi Step активна до момента, пока не исполнится предварительно установленное число команд (Number of Single Steps),  либо не будет остановлена пользователем, либо не произойдет столкновение с точкой останова.
  • · Auto Step многократно выполняет команды Single Steps. Задержка между каждой командой выбирается в меню Debug Options в окне Single Step Delay (ms). Команда Auto Step активна, пока не будет остановлена действием пользователя (Break) или  не столкнется с точкой останова.
  • · Debug Options. Меню Debug Options позволяет установить параметры отладки.

Проведите отладку программы в пошаговом режиме. Для этого воспользуйтесь клавишей FI1 или войдите в  пункт главного меню Debug/ Trace into. После первого нажатия клавиши F11 появится окно Simulator Options, в котором следует выбрать тип используемого микроконтроллера  и установить частоту тактового генератора. Тип микроконтроллера укажите в окне Device. Нажмите на стрелку в строке Custom, в  результате чего на экране появится выпадающий список, в котором выберите тип микроконтроллера. Необходимо учитывать, что тип микроконтроллера должен совпадать с тем типом, который вы использовали при программировании. Так как в нашей программе был использован специальный файл для микроконтроллера ATmega 603 (М603def.inc), то и из списка следует выбрать микроконтроллер ATmega 603. Тактовая частота задается в окошке Frequency. Установите ее равной 4 МHz. Задав тип микроконтроллера и тактовую частоту генератора, нажмите кнопку OK. (Если в дальнейшем вам необходимо будет изменить тип используемого микроконтроллера или его тактовую частоту, то выберите пункт главного меню Options/ Simulator Options.)

В окне исходного текста программы (qwe.asm) строка с командой, которая будет выполнена после очередного нажатия клавиши F11, помечается желтой стрелкой слева.

Для наблюдения за ходом выполнения программы с помощью пункта главного меню View откройте следующие окна:

  • Registers (Alt+0) – окно, выводящее содержимое регистров;
  • New Memory View (Alt+4) - новое окно памяти показывает содержимое ячеек памяти;
  • New IO View (Alt+5). Открыв это окно, необходимо еще и раскрыть содержимое именно того порта, с которым и будет осуществляться работа. В нашей программе это порт В. То есть следует найти строку Port B и раскрыть ее, щелкнув на значке «+» слева от строки. В окне появятся управляющие регистры порта В. В данной лабораторной работе вам понадобится просматривать содержимое только одного управляющего регистра порта В – это регистр Port B Data.

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

Если вам необходимо перезапустить программу с начала, выберите в меню отладчика  команду Reset (SHIFT+F5).



 
меньший от и до мм переходы. окно в ту папку куда копируем