Мегаобучалка Главная | О нас | Обратная связь


Лекция 8. Графическая среда разработки программного обеспечения для микроконтроллеров с архитектурой AVR“Algorithm Builder



2016-01-26 1032 Обсуждений (0)
Лекция 8. Графическая среда разработки программного обеспечения для микроконтроллеров с архитектурой AVR“Algorithm Builder 0.00 из 5.00 0 оценок




 

Операторы алгоритма делятся на две группы.

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

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

 

Операторы алгоритма в основном записываются в объектах “Field”, условные переходы реализуются посредством объекта “Condition”, а безусловный переход – посредством объекта “

JMP Vector”. Формат записи операторов существенно отличается от классического ассемблера. Он построен по визуально-функциональному принципу и содержит образ выполняемого действия. Запись операторов должна соответствовать шаблону, воспринимаемому компилятором.

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

 

Символ “#” в шаблоне операторов предполагает константу, представленную либо непосредственно, либо в виде алгебраического выражения, “Rd” и “Rr” – рабочие регистры, “Pn” – регистр ввода-вывода.

Операторы представлены в виде таблицы.

 

Операнд Комментарий

R Рабочий регистр, стандартный или объявленный в секции Working registers: (...)

# Константа (...)

SRAM Var Переменная, объявленная в секции SRAM: (...)

EEPROM Var Переменная, объявленная в секции EEPROM: (...)

[#] Ячейка SRAM, адресуемая непосредственно

[X] Ячейка SRAM, адресуемая косвенно, по X

[--X] Ячейка SRAM, адресуемая косвенно, по X с предекрементом

[X++] Ячейка SRAM, адресуемая косвенно, по X с постинкрементом

[Y] Ячейка SRAM, адресуемая косвенно, по Y

[--Y] Ячейка SRAM, адресуемая косвенно, по Y с предекрементом

[Y++] Ячейка SRAM, адресуемая косвенно, по Y с постинкрементом

[Y+#] Ячейка SRAM, адресуемая косвенно, по Y со смещением адреса на # байт

[Z] Ячейка SRAM, адресуемая косвенно, по Z

[--Z] Ячейка SRAM, адресуемая косвенно, по Z с предекрементом

[Z++] Ячейка SRAM, адресуемая косвенно, по Z с постинкрементом

[Z+#] Ячейка SRAM, адресуемая косвенно, по Z со смещением адреса на # байт

P Регистр ввода-вывода (...)

EE[#] Ячейка EEPROM адресуемая непосредственно

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

 

Операнды с косвенной адресацией являются однобайтными. Для многобайтных операций с косвенной адресацией необходимо приведение их формата. Для этого к записи необходимо добавить двоеточие и объявление формата, например:

 

#hAB3E->[Y]:Word

 

такой макро-оператор будет преобразован в следующую последовательность операторов:

 

#h3E->r16

r16->[Y]

#hAB->r16

r16->[Y+1]

 

В многобайтных макро-операторах, кроме сдвигов вправо, действия начинаются с младшего байта (в операторах сдвига вправо – со старшего). Учитывая это, существуют ограничения на возможность создание макро-операций с косвенной адресацией:

 

- для операций, которые начинаются с младшего байта невозможно использование операндов с предекременом, например: [--X]:Word+24000

 

- для операций, которые начинаются со старшего байта (сдвиги вправо) невозможно использование операндов с постинкрементом, например: [Z++]:Int24>>

 

Кроме того, невозможно создание многобайтного макро-оператора с операндом [X], поскольку для регистра X в системе команд AVR отсутствуют косвенная адресация со смещением (

[X+q]). Используйте [X++] или [--X].

Если создание макро-операции окажется невозможным, то компилятор выдаст сообщение: “

Such macro-operation can not be created” (“Такая макрооперация не может быть реализована”).

Макро-операторы записываются исключительно в объектах “Field”. Шаблоны возможных макро-операторов представлены в таблице:

 

Шаблон Коментарий

* -> * Копирование

* + * Арифметическое сложение

* - * Арифметическое вычитание

* & * Побитная операция “И”

* ! * Побитная операция “ИЛИ”

* ^ * Побитная операция “Исключающее ИЛИ”

* Сброс (запись нуля)

* ++ Инкремент

* -- Декремент

- * - Побитная инверсия

* >> Логический сдвиг вправо

> * >> Логический сдвиг вправо с переносом

± * >> Арифметический сдвиг вправо

<< * Логический сдвиг влево

<< * < Логический сдвиг влево с переносом

 

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

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

 

Если в макро-операторе предполагается операция с непосредственной константой, то в этом случае целесообразнее использовать рабочие регистры, объявленные в старшей половине. В противном случае будут использоваться промежуточные инструкции загрузки частей константы в регистр r16. Это может привести к увеличению размера кода, вплоть до удвоения, хотя ошибочной такая запись не будет.

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

 

Для реализации циклов удобно использовать макро-условие: “R--”. Оно включает в себя декремент однобайтного регистра и ветвление, если результат не равен нулю.

 

Объект “Label” – (метка)

 

Представляет собой вертикальный штрих, расположенный внутри блока операторов и необязательное имя, располагающееся слева или справа от штриха. Предназначена метка для обозначения мест в алгоритме, куда возможно осуществление условных и безусловных переходов. Для ее введения, необходимо либо выбрать пункт меню “Object\Label”, либо нажать клавиши “Alt+L”, либо нажать кнопку с изображением буквы L на панели инструментов. При необходимости метке может быть назначен конкретный адрес программы, для этого перед именем (если оно есть) необходимо записать константу или алгебраическое выражение, которое определяет этот адрес. Для изменения расположения имени метки на противоположное нажмите клавишу “Tab”.

 

Метки обслуживания прерываний.

Для удобства программирования Algorithm Builder поддерживает специальный вид меток – метки обслуживания прерываний. Для обслуживания прерывания обычным путем необходимо размещение по адресу вектора прерывания кода безусловного перехода на соответствующую подпрограмму. При использовании специального вида меток компилятор проделывает все это автоматически. Для этого вам необходимо дать метке (вершине) стандартное имя прерывания, и пометить ее как макро-образование, нажав клавишу “F2”, при этом имя будет отображаться жирным шрифтом. Тот же результат можно проще получить, выбрав пункт меню “Objects\Interrupt vectors\…”.

 

Встретив хотя бы одну такую метку, компилятор заполнит свободное пространство векторов прерывания кодом возврата из подпрограммы обслуживания прерывания (“RETI”), а по соответствующему прерыванию адресу разместит код безусловного перехода на данную метку.

 

Объект “Vertex” – (вершина блока)

По своему отображению и назначению полностью идентичен метке, но, в отличие от нее, задает расположение блока на рабочей плоскости и всегда является его началом. Для того, чтобы создать вершину необходимо либо выбрать пункт меню “Object\Vertex”, либо нажать клавиши “Alt+V”, либо нажать кнопку с изображением буквы V на панели инструментов, либо с помощью мыши, нажав левую кнопку на необходимое место поля в комбинации с клавишами “

Alt+Ctl+Shift”.

 

Объект “Condition” – (условный переход)

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

 

Редактирование вектора производится либо при помощи клавиш направления в комбинации с клавишей “Alt”, либо при помощи мыши при нажатой левой кнопке так же в комбинации с клавишей “Alt”. Для перехода от редактирования условия к редактированию имени вектора и, затем, изменения его расположения на противоположное, нажмите клавишу “Tab”. Для того, чтобы ввести новый объект, необходимо либо выбрать пункт меню “Object\Condition”, либо нажать клавиши “Alt+C”, либо нажать кнопку с изображением буквы C на панели инструментов.

 

Операторы условного пропуска следующего оператора.

Здесь возможны три варианта конструкции объекта “Condition”:

1. Вектор объекта отсутствует, а имя вектора – либо отсутствует, либо содержит зарезервированное слово “Skip”. В нижеследующих примерах выполнение операции:

 

“[X]->r2” будет пропущено, если выполнится условие “r1=r2”.

 

NOP

“r1=r2”.

“[X]->r2”

NOP

 

 

2. Записывается инверсное условие, вектор отсутствует, а подлежащая пропуску инструкция вписывается как имя вектора. В этом случае объект будет интерпретирован как: выполнить инструкцию, если условие выполняется. Нижеследующие примеры полностью идентичны.

 

NOP

“r1=r2”.

“[X]->r2”

 

NOP

 

3. Если последующая инструкция является коротким безусловным переходом (RJMP), допускается запись инверсного условия, а вектор этого условия будет интерпретирован как последующий безусловный переход, таким образом, объект будет интерпретироваться как: произвести короткий безусловный переход, если условие выполняется. Далее приводятся три полностью идентичных примера.

 

NOP

R1=R2 стрелка к той строку куда необходимо перейти

 

Отладочная среда AVR STUDIO.

 

Отладочная среда разработки приложений для микроконтроллеров семейства AVR содержит :

  • Транслятор ассемблера (Atmel AVR macroassembler)
  • Отладчик (Debugger)
  • Программное обеспечение верхнего уровня для поддержки внутрисхемного программирования.( In-System Programming) ISP)

 

Отладочная среда поддерживает выполнение программ как в виде ассемблерного текста так и в виде исходного текста языка С. Отладочная среда AVR поддерживает все типы микроконтроллеров AVR и имеет два режима работы :

  • режим программной симуляции
  • режим управления различными типами внутрисхемных эмуляторов фирмы Atmel ( In Circuit Emulators)

Интерфейс пользователя не изменяется при выборе между режимами отладки.

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

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

В AVR STUDIO для отладки программ предусмотрены две команды пошагового режима Step Over и Trace into Разница между ними в том что команда Step Over не работает в подпрограммах.

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

отладочная среда не поддерживает следующие режимы и узлы МК

  • аналого цифровой преобразователь
  • аналоговый компаратор
  • режим часов реального времени
  • режим пониженного энергопотребления

Для аппаратной поддержки AVR STUDIO применяются

  • стартовые и специализированные наборы разработчика
  • внутрисхемные программаторы
  • внутрисхемные эмуляторы

В процессе отладки можно инициализировать внутренне ОЗУ и EEPROM (в трансляционном файле формата .EEP ) или сохранять их содержимое в формате .HEX Для этого служит пункт Up/Download Memory в меню File

Через меню File можно открывать выполненные другими пользователями прошивки Open распечатывать написанные программы Print проверять состояние устройств подключенных к последовательному порту COM Port setting .

Меню Tool инструменты содержит команды запуска управляющих программы

меню View содержит средства просмотра :

  • ячеек памяти программ Program Memory
  • памяти данных окно Data
  • EEPROM окно Eeprom
  • регистров портов ввода вывода окно new IO
  • хода исполнения программы окно Memory
  • контроля за изменениями переменных Watch
  • отображения состояния программного счетчика , указателя стека содержимого регистра статуса SREG и индексных регистров X, Y и Z текущего времени исполнения программы тактовой частоты ядра микроконтроллера окно Processor
  • просмотра состояния регистров Registers ( Если в процессе выполнения программы в очередном цикле значение, какого либо регистра изменится то этот регистр будет выделен красным цветом. При этом если в следующем цикле значение регистра останется прежним то цветовое выделение будет снято. Аналогичный контроль за изменениями применен в окнах ввода вывода памяти и переменных. )
  • контроля за состоянием периферийных устройств окно I/O window

 

Меню Edit правка аналогична стандартному текстового редактора.

Меню Windows позволяет регулировать размещение открывающихся окон

Help содержит справочную информацию на английском языке

project позволяет открывать и создавать новые проекты и сохранять их содержимое

 

Меню debug отладчик позволяет осуществлять

 

 

breakpoint регулирует выбор точек останова

Trace& triggers осуществляет трассировку

Option позволяет осуществлять симуляцию или эмуляцию программы

 

AVR studio 3.56

Клавиши

Создание программы

Открыть AVR studio 3.56

Открыть меню новый проект в меню проект в появившемся окне create new project ввести имя проекта в строку project name. Это же имя будет автоматически скопировано в окно initial file

Для определения папки в которой будет находится проект необходимо щелкнуть на кнопке …. Справа от окна location в открывшемся окне select folder в строке current folder необходимо написать имя папки. И щелкнуть на select после чего произойдет возврат в окно create new project

Затем выберите тип проекта Atmel AVR Assembler à Next à select deug platform and device à debug platform à avr Simulator в окне device тип микроконтроллера если частота будет выше появится сообщение

Таким образом мы активируем окно ассемблера с проетом

Символ “. “ директива ассемблера

«;» коментарии не влияющие на работу программмы

F2 поиск маркеров команд в программе

Ctrl +F2 установка маркеров отладчика

F7 ассемблирование программы с сохранением в формате . hex

F11 отладка открытие workspace

Shift +F5 – Reset сброс

Ctrl +F5 - Break назад остановка отладки

F9 – установка метки точки останова

F5 – выполнение программы до точки останова

Ctrl +F10 переход к выполнению команды помеченной курсором

 

Трансляция и проверка правильности написания.

Project à AssembleàProject Output в этом окне содержатся информация о количестве слов кода и данных о наличии ошибок и другая информация. Для локализации ошибок надо установить курсор мыши на сообщение и два раза щелкнуть левой кнопкой мыши. В результате курсор будет установлен на строку вызвавшую сообщение об ошибке и эта строка будет выделена цветом. Если исходный ассемблерный текст содержал сегмент энергонезависимых данных то при трансляции будет создан файл с разрешением .еер . Этот файл содержит даннные для внутренней ЕЕPROM МК и имеет тот же формат что и выходной файл.

Результатом трансляции является выходной файл

Отладка проекта

Для отладки необходим объектный файл object

Запуск отладчика выполняется через процедуру

Build and run на панели управления

В начале осуществляется трансляция входного ассемблерного файла при которой генерируется и объектный файл а затем объектный файл помещается в отладчик.

Для старых версий предусмотрен вариант трансляции объектного файла на при этом варианте нельзя редактировать исходный файл программы непосредственно в отладчике

Для генерации объектного файла необходимо указать формат выходного файла транслятора

При первом запуске отладчика в окнеOption à Simulator Option выбирается тип микроконтроллера Device и частота процесссорного ядра frequency

В процессе отладки программа может выполняться

Полностью debug àavto step

В пошаговом режиме debug àtrace

Трассируя блоки функций debug àmulti step

До точки указанной курсором debug àRun to cursor

По точкам останова breakpoints à toggle Breakpoint

 

Для отладки в пошаговом режиме применяются команды

Ster Over ( не работающая в под программах) и trace into

Просмотр программы осуществляется в меню View вид , регистров registers, переферийных устройств в окне I /O Windows

 

Лекция 15 программаторы Программатор ХХХ prog

 

Программатор поддерживает следующие форматы файлов:

 

Standard/Extended Intel HEX

Binary image

Motorola S

POF

JEDEC

PRG

Они предназначены для программирования:

· микросхем памяти [EPROM, EEPROM, FLASH],

· внутреннего ППЗУ микроконтроллеров,

· микросхем программируемой логики [PLD] (только для ChipProg+, MultiProg).

Программатор рассчитаны на совместную работу с IBM PC совместимым компьютером. Связь с компьютером осуществляется через стандартный принтерный порт.

 

Порядок работы с программатором:

· Удалить микросхему из колодки программатора (если она была

установлена).

· Подключить программатор к сети переменного тока 220В.

Для MultiProg переключателем на корпусе программатора включить

питание. Должен загореться зеленый светодиод, индицирующий подачу

питания на программатор.

· Подсоединить программатор к стандартному принтерному порту

компьютера c помощью кабеля связи, входящему в комплект поставки

программатора.

· На компьютере запустить программную поддержку xxxProg.

· В программной поддержке установить требуемый тип микросхемы.

· Установить микросхему в розетку программатора (микросхемы

устанавливаются в розетку в соответствии с рисунком на корпусе

программатора).

· Выполнить необходимые действия с микросхемой. Если в

процессе работы с микросхемой на корпусе программатора загорится красный

светодиод "ALARM", а на экране компьютера появится предупреждающее

сообщение о срабатывании схемы защиты тока, то это означает, что

микросхема неисправна.

· Перед выключением программатора или сменой типа микросхемы

необходимо удалить микросхему из розетки.

· Выключить питание программатора.

· Отсоединить программатор от компьютера.

 

 

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

Программное обеспечение xxxProg в плане взаимодействия с микросхемами построено по классической схеме программаторов "файл" - "буфер" - "микросхема". В программной поддержке программатора реализованы буфера памяти. Буфер памяти является промежуточным звеном между файлом и микросхемой:

Файл <----> Буфер <----> Микросхема

Одним из основных элементов программатора являются буфера памяти. Буфер памяти - это объект, предназначенный для хранения данных. Буфер памяти программатора является промежуточным звеном между файлом и микросхемой.

В xxxProg реализована гибкая структура буферов памяти:

· допускается создания бесконечного количества активных буферов.

Ограничением на количество может служить только отсутствие свободной

памяти в системе.

· каждый буфер в своем составе имеет определенное количество

подслоев. Каждый подслой ассоциируется с конкретным адресным пространством

установленной микросхемы.

Например,

- для микросхемы Intel 87C51FA каждый буфер имеет в своем составе

два подслоя: подслой кодовой памяти и подслой таблицы кодирования

(encryption table);

- для микросхемы Microchip PIC16F84 каждый буфер имеет в своем

составе три подслоя: подслой кодовой памяти, подслой памяти данных

EEPROM, подслой пользовательских идентификаторов.

· допускается иметь неограниченное количество окон просмотра

содержимого каждого буфера.

 

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

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

Система тестов разделена на две группы:

· тестирования качества связи с аппаратурой программатора,включает в себя только тестирование качества связи с аппаратурой программатора.

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

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

 



2016-01-26 1032 Обсуждений (0)
Лекция 8. Графическая среда разработки программного обеспечения для микроконтроллеров с архитектурой AVR“Algorithm Builder 0.00 из 5.00 0 оценок









Обсуждение в статье: Лекция 8. Графическая среда разработки программного обеспечения для микроконтроллеров с архитектурой AVR“Algorithm Builder

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1032)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.017 сек.)