61
А. А. Зубарев ПРОГРАММНАЯ ЭМУЛЯЦИЯ УСТРОЙСТВ НА МИКРОКОНТРОЛЛЕРАХ В СРЕДЕ VISUAL MICRO LAB By Advanced Micro Tools R1 PB7 VDD 10K V1 PA0 VSS SLIDE; K1 PB7 VSS LATCHED VISUAL MICRO Release 3.12 for AVR Bring your microcontroller into the 21 st Centuri…

VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

А. А. Зубарев

ПРОГРАММНАЯ ЭМУЛЯЦИЯ

УСТРОЙСТВ НА МИКРОКОНТРОЛЛЕРАХ

В СРЕДЕ VISUAL MICRO LAB

By Advanced Micro Tools

R1 PB7 VDD 10K V1 PA0 VSS SLIDE; K1 PB7 VSS LATCHED

VISUAL MICRO

Release 3.12 for AVR Bring your microcontroller into the 21st Centuri…

Page 2: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Федеральное агентство по образованию

Сибирская государственная автомобильно-дорожная академия (СибАДИ)

А. А. Зубарев

ПРОГРАММНАЯ ЭМУЛЯЦИЯ УСТРОЙСТВ

НА МИКРОКОНТРОЛЛЕРАХ В СРЕДЕ

VISUAL MICRO LAB

Учебное пособие

Омск Издательство СибАДИ

2007

Page 3: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

УДК 681.06.621.3 ББК 32.973.26-018.2 З 91

Рецензенты

д-р техн. наук, проф. А.П. Попов (ОмГТУ), канд. техн. наук, доц. К.Р. Сайфутдинов (ОмГТУ)

Работа одобрена редакционно-издательским советом академии в качестве учебного пособия по дисциплинам “Проектирование автоматических систем”, “Микропроцессорные устройства автоматики” для специальности 220301 “Автоматизация технологических процессов и производств”, а также “Проектирование микропроцессорных систем ”, “Разработка микропроцессорных устройств диагностики автомобилей и тракторов” для специальности 140607 “Электрооборудование автомобилей и тракторов” и для проведения учебной практики.

Зубарев А.А. Программная эмуляция устройств на микроконтроллерах

в среде Visual Micro Lab: Учебное пособие. – Омск: Изд-во СибАДИ, 2007. – 60 с. Предназначено для студентов всех форм обучения по специальностям, изучающим

проектирование автоматических систем на микроконтроллерах, и может быть использовано в курсовом и дипломном проектировании.

Учебное пособие в простой и доступной форме знакомит читателей с программным продуктом Visual Micro Lab (VMLAB) от фирмы Advanced Micro Tools, предназначенным для моделирования электронных схем, содержащих однокристальный микроконтроллер. Использование VMLAB позволяет проверить работу устройства, содержащего микроконтроллер, дополненный любой частью аппаратных средств (внешних электронных компонентов), не паяя (не макетируя) его электрическую схему, при этом легко меняя состав программного и аппаратного обеспечения.

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

Табл. 3. Ил. 23. ISBN 5-93204-274-5 © А.А. Зубарев, 2007

Page 4: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

ОГЛАВЛЕНИЕ

1. Знакомство с программным продуктом Visual Micro Lab ……. 4 1.1.Основные сведения о системе Visual Micro Lab ………………. 4 1.2 Что такое виртуальная модель...................................................... 4 1.3. Работа с VMLAB.............................…........................................... 5 1.4. Модели микроконтроллеров AVR фирмы Atmel.....…............... 5 1.5. Возможные узлы электрической схемы с МК AVR.................... 6 1.6. Особенности моделирования МК AVR...............................…..... 8 1.7. Какие режимы МК не моделируются…………..……………… 8

2. Пользовательский интерфейс VMLAB............................................ 9 2.1. Главное окно……………………………….…………………… 9 2.2. Панель инструментов ……………….……………….…………. 9 2.3. Панели проекта………………………..………………………… 11 2.4. Текстовый редактор…………………………………….……….. 12 2.5. Окно Code Notebook -записная книжка кода………………….. 14 2.6. Окно Scope – виртуальный осциллограф……………………… 15 2.7. Окно просмотра Watch……………………………………….. 16 2.8. Окно сообщений Messages…………………………………… 17 2.9. Окно панели управления Control panel………………………. 17 2.10. Окна памяти Memory …………………………………………. 19 2.11. Окно регистров и флагов Registers ……………………………. 20 2.12. Окна внешних устройств Peripherals…………..……………… 21 2.13. Окно портов ввода/вывода I/O Ports …………………………. 21 2.14. Диалог модификации Modify Dialog…………..………………. 21 2.15. Менеджер просмотра Watch Manager..………………………… 22 2.16. Инспектор отладки Debug Inspector…………………..………... 23 2.17. Сообщения об ошибках и предупреждения……………………. 25

3. Основные директивы……………………………………………….. 29 4. Библиотека аппаратных компонентов…………………………… 36 5. Файлы, включаемые в проект……………………….…………….. 44

5.1 . Спецификация файлов AVR ……………………….……………. 44 5.2. Проектный файл…………………………………………...……… 45 5.3. Использование GNU/WinAVR Cи-компилятора…….………… 47 5.4. Использование компиляторов сторонних разработчиков……… 49

6. Создание нового проекта…………………………………………… 50 6.1. Создание нового проекта по шагам……………………………. 50 6.2. Оптимизация работы VMLAB ………………………………… 52 6.3. Работа с двумя микроконтроллерами (режим Multiprocess)….. 53

7. Примеры проектов…………………………………………………… 54 Контрольные вопросы……………………………………………… 59

Page 5: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

1. ЗНАКОМСТВО С ПРОГРАММНЫМ ПРОДУКТОМ VISUAL MICRO LAB

1.1. Основные сведения о системе Visual Micro Lab

Visual Micro Lab визуальная микролаборатория, в дальнейшем

VMLAB, является виртуальной средой проектирования (имитационного моделирования). Это инструмент проектирования схем на микроконтроллерах, объединяющий в одной среде:

- мощный многофайловый и многооконный редактор текста; - встроенную среду разработки (Integrated Development Environment

IDE) микроконтроллеров; - символьный отладчик, обеспечивающий смешанный режим

моделирования для аналогово-цифровых схем; - устройство проверки качества кода. VMLAB обеспечивает вас виртуальной лабораторией проектирования

микроконтроллеров (МК), в которой моделируются аппаратные средства и программное обеспечение приложений. Это одновременно анализатор электрической цепи, IDE и мощный логический анализатор (цифровой осциллограф).

VMLAB обеспечивает преимущества: гибкое представление аппаратной и программной (hw/sw) частей

системы; системные остановы в контрольных точках при отладке системы; проверку кода: ICE предупреждает об относительно опасных

подключениях порта ввода/вывода; возможность пройти алгоритм управления с обратной связью с ICE,

работающий в пошаговом режиме; простое изменение аппаратных средств путем изменения некоторых

данных в файле проекта (*.PRJ файле). В пособии рассматривается существующая на сегодняшний день

(декабрь 2006 г.) версия продукта V.3.12 с Web-сайта разработчика – http:// www. amctools.com.

1.2. Что такое виртуальная модель

Виртуальная модель (виртуальный прототип) – цельная модель

приложения (включая программное обеспечение + аппаратные средства), которая позволяет воспроизводить его поведение в действительности.

VMLAB основан в уникальном движке моделирования CCCP (Concurrent Co-simulator of Circuits and Processors – параллельный имитатор цепей и процессов).

Page 6: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

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

1.3. Работа с VMLAB

Чтобы создать приложение с VMLAB, необходимо: 1. Создать проектный файл (ПФ), указав в нем параметры МК и

подключаемые программные модули, используя команду New Project или Оpen Project, если проект создан предварительно.

2. Добавить или изменить аппаратные средства вокруг МК в ПФ, используя меню Components.

3. Создать или изменить программные модули, определенные в шаге 1, используя встроенный текстовый редактор. Программные модули помещаются в окно Code Notebook.

4. Создать hw/sw базу данных, используя команду Build. Любая ошибка/предупреждение будет показываться в окне сообщений.

Двойной щелчок по сообщенной ошибке и VMLAB укажет её местоположение, переведя курсор непосредственно на строку, содержащую ошибку.

5. При отсутствии ошибок VMLAB включает зеленый свет на «светофоре» кнопке панели инструментов, запускающей приложение. На этом шаге вы может наблюдать переменные, аппаратные сигналы, содержание регистраторов МК, памяти и периферии; и шаг за шагом, просматривая анимированный код, останавливаясь в контрольных точках и т.д., вы можете проверить работу приложения.

6. Когда приложение готово, вы получаете .HEX-файл для программирования МК.

Процесс программирования МК в настоящем учебном пособии не рассматривается.

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

1.4. Модели микроконтроллеров AVR фирмы Atmel

Модели МК, которые поддерживаются программой VMLAB, приведены в табл. 1.

Page 7: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Таблица 1 Модели МК AVR, которые поддерживает MVLab Model Flash,Кбайт EEPROM,байт RAM,байт I/O

ATiny11 1 --- --- 6 ATiny12 1 --- --- 6 ATiny15 1 64 --- 6 ATiny22 2 128 128 6

AT90S2343 2 128 128 4 AT90S2323 2 128 128 3 AT90S1200 1 64 --- 15 AT90S2313 2 128 128 15 AT90S4433 4 256 128 20 AT90S4414 4 256 256 32 AT90S8515 8 512 512 32

AT90S8515_64K 8 5125 12 16 AT90S4434 4 256 256 32 AT90S8535 8 512 512 32 ATmega8 8 512 1024 23

ATmega16 16 512 1024 32 ATmega161 16 512 1024 32

ATmega161_64K 16 512 1024 24 ATmega162 16 512 1024 32 ATmega32 32 1024 2048 32 ATmega64 64 2048 4096 48 ATmega128 128 4096 4096 48

ATmega128_64K 128 4096 4096 40 Примечание. Устройства с суффиксом _64K представляют соответствующий

МК с 64K внешнего SRAM.

1.5. Возможные узлы электрической схемы с МК AVR Все выводы портов, вывод Reset (СБРОС) и выводы AREF являются

электрическими узлами в ПФ. Электрические узлы, доступные для различных моделей МК, представлены в табл. 2.

Таблица 2

Электрические узлы, доступные для моделей МК Модель Доступные электрические узлы

1 2 ATTiny11 СБРОС, PB0-PB5, ACO ATTiny12 СБРОС, PB0-PB5, ACO ATTiny15 СБРОС, AREF, PB0-PB5, ACO ATTiny22 СБРОС, PA0-PB5, ACO AT90S2323 СБРОС, PB0-PB2, ACO AT90S2343 СБРОС, PB0-PB4, ACO AT90S2313 СБРОС, PB0-PB7, PD0-PD5, ACO, TIMOVF1 AT90S4433 СБРОС, AREF, PB0-PB5, PC0-PC5, PD0-PD7, ACO

Окончание табл. 2

Page 8: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

1 2 AT90S4414 СБРОС, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, ACO, TIMOVF1 AT90S8515 СБРОС, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, ACO, TIMOVF1 AT90S8515_64K СБРОС, PB0-PB7, PD0-PD7, ACO, TIMOVF1 AT90S4434 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, ACO,

TIMOVF1 AT90S8535 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, ACO,

TIMOVF1 ATmega8 СБРОС, AREF, PB0-PB7, PC0-PC6, PD0-PD7, ACO, TIM1OVF,

ADC6, ADC7 ATmega16 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, ACO,

TIM1OVF ATmega161 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, PE0-PE2,

ACO, TIM1OVF ATmega161_64K СБРОС, AREF, PB0-PB7, PD0-PD7, PE0-PE2, ACO, TIM1OVF ATmega162 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, PE0-PE2,

ACO, TIM1OVF, ATmega32 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, ACO,

TIM1OVF ATmega64 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, PE0-PE7,

PF0-PF7, PG0-PG4, ACO, TIM1OVF ATmega128 СБРОС, AREF, PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7, PE0-PE7,

PF0-PF7, PG0-PG4, ACO, TIM1OVF ATmega128_64K СБРОС, AREF, PB0-PB7, PD0-PD7, PE0-PE7, PF0-PF7, PG0-PG4,

TIM1OVF

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

ACO – этот псевдоузел подключен непосредственно к выводу аналогового компаратора.

TIMOVF1 этот псевдоузел показывает переполнение таймера TIMER1.

Узел СБРОСА действует реально таким способом: если на этом узле логический "0" сброс AVR. Рестарт может быть легкий или глубокий в разных ситуациях сброса, выполняемых регистром статуса MCUSR.

Использование узла в ПФ вызывает включение этих узлов в схему. Например, для ATMega16 требуется подключить сопротивление 10кОм

между выводами PA0 и PA1 порта А: .MICRO " ATMega16" ; выбранный МК ; PA0, и т.д. – выводы порта А используются как узлы R1 PA0 PA1 10К ; резистор 10 кОм между выводами PA0 и PA1. VMLAB содержит встроенную проверку имени узла относительно

содержащихся в МК имен портов ввода/вывода. Если вы, например,

Page 9: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

назовете узел по имени "PC1" для МК, который не содержит порт C, будет выдана ошибка.

Кроме МК Atmel AVR VMLAB поддерживает МК ST62 фирмы ST Microelectronics, но в данном пособии они не рассматриваются.

1.6. Особенности моделирования МК AVR

VMLAB обеспечивает точное и реалистическое моделирование

следующих особенностей AVR микроконтроллера: весь набор команд, включая режимы SLEEP; всю периферию: АЦП, таймеры, сторожевой таймер, UART, SPI и т.д.; порты ввода/вывода, включая аналоговые эффекты: гистерезис, выходное сопротивление, все режимы порта; оценку потребления мощности (см. панель управления); прерывания. Обеспечивается полный показ состояния центрального процессора,

периферийных устройств, памяти (ОЗУ, FLESH и EEPROM) – при выборе соответствующих опций в меню View.

Частота синхронизации МК AVR определяется в соответствии с директивой.CLOCK. Если эта директива не найдена, она принимается по умолчанию 1MГц.

Команда SLEEP моделируются бесконечной внутренней петлей команд циклов центрального процессора.

Сторожевой таймер моделируется специальным способом, чтобы упростить код проекта. В реальном МК после достижения 0 (при счете в обратном направлении) сторожевой таймер произвел бы сброс. Вместо выполнения этого VMLAB выдает предупреждение о времени выполнения, высвечивая строку, где сброс имел бы место; это позволяет продолжать программу. С этого времени сторожевой таймер заблокирован. Эта особенность позволяет проектировать сначала код без сторожевого таймера, а затем выбирать места, где вставить контрольные точки, используя меню Options | Error reporting | Watchdog, чтобы выбрать контрольный режим моделирования.

1.7. Какие режимы МК не моделируются

Следующие режимы работы еще не моделируются (их планируется

включить в будущие обновления): USART: синхронный режим и режим многопроцессорности. Функциональные возможности fuse-битов. VMLAB моделирует только сброс и изменение вектора (fuses BOOTSZ и BOOTRST).

Page 10: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

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

как анализ переходных процессов, анализ на переменном токе. Не моделируются катушки индуктивности, транзисторы и т.д.

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

2. ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС VMLAB

2.1. Главное окно

Главное окно появляется после запуска VMLAB и состоит (сверху – вниз) из строки заголовка, строки командного меню, панели инструментов, рабочего поля и строки состояния (рис.1).

Рис. 1. Главное окно

2.2. Панель инструментов

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

Page 11: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Кнопка Действие Эквивалент меню

Создать новый текстовый файл File|New

Открыть файл File|Open

Сохранить файл в активном редакторе File|Save

Открывает проектный файл Project|Open project

Копировать Edit|Copy

Вставить Edit|Paste

Отменить предыдущее действие Edit|Undo

Искать текст Search|Find

Повторить последнюю операцию Find или Replace Search|Next

Идти в следующую закладку Search|Find

Идти в предыдущую закладку Search|Find

Строить hw/sw базу данных Project|Build

Запуск / продолжение hw/sw моделирования Run|Go

Идти на одну команду, пропустить подпрограмму Run|Step

Выполнить шаг, войти в подпрограмму Run|Step

Выйти из подпрограммы Run|Step

Остановить hw/sw моделирование Run|Pause

Легкий рестарт, сохраните оперативную память МК Run|Restart

Глубокий рестарт, стирание оперативной памяти МК Run|Restart

Переключатели (вкл/выкл) мультипликации кода Run|Animate code

Печатать File|Print

Справка

Выберите рабочую панель 2.3. Панели проекта

Page 12: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Специфическая комбинация рабочего размещения окон называется

панелью (рис. 2). Например, чтобы редактировать код, полезно иметь большое окно Code Notebook и окно Messages, чтобы видеть ход моделирования и т.п.

Как использовать панели

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

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

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

Рис. 2. Рабочая панель проекта

Как выбирать панель проекта

Page 13: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Рис. 3. Выбор варианта панели проекта по умолчанию

Используйте кнопку на инструментальной панели и выберите надлежащий номер из раскрывающегося списка (рис. 3) или используйте ALT + <desk_number> . Например: ALT+1 для панели 1, ALT+2 для панели 2 и т.д. Второй путь намного быстрее.

Сконфигурируйте ваши 5 панелей, когда не загружен никакой проект: они и будут ваши заданные по умолчанию панели.

2.4. Текстовый редактор

VMLAB содержит встроенный текстовый редактор, обеспечивающий

стандартные возможности Windows, плюс дополнительные возможности: 1. Способность окна к разбиению. Редактор может разбивать окна (горизонтально или вертикально),

позволяя отобразить два различных раздела одного файла (командой Split, доступной с правой кнопкой во всплывающем меню).

2. Выделение блока. Классические операции Copy/Cut/Paste могут выполняться на

выделенном блоке (рис. 4).

Рис. 4. Выделение блока

Page 14: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

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

3. Неограниченное число строк. Компьютерная память – единственный предел. Так или иначе мы

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

4. Бесконечный откат. В редакторе VMLAB нет никакого предела в восстановлении отмены

(undo). Память отмены будет очищена после выполнения команды Save. 5. Специальное окно для кода. Файлы, определенные директивами .PROGRAM и .SOURCE, в ПФ

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

6. Оперативная отладка. Действия отладки – установка контрольной точки, просмотр

переменной после выполнения трассировки и т.д. делаются непосредственно в исходном тексте. Чтобы просмотреть переменную: 1) двойной щелчок по ней или 2) навести курсором на переменную и щелкнуть правой кнопкой (всплывающее меню). Там есть команда, чтобы непосредственно добавить переменную в окно Watch.

7. Нахождение метки и использование символов. Если курсор на символе, правая кнопка вызовет всплывающее меню и

покажет две команды: Find Label и Show usage. 8. Гистограмма использования кода. В логарифмической масштабе показывается число проходов, которые

программа делает через определенную строку как желтая полоса непосредственно на строке кода.

9. Подсвечивание исходного текста программы. Зарезервированные слова, константы (числа, строки), комментарии и

директивы могут быть окрашены или подсвечены согласно пользовательскому предпочтению – см. меню Options | Editor | Colors.

10. Просмотр символов щелчком мыши (просмотр «мышь-По-символу»).

Переменные могут наблюдаться непосредственно, щелкая мышью по данному символу. Даже в структурах или массивах!

Page 15: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

11. Поддержка внешних редакторов. Чтобы работать с внешним редактором, используются команды: - File | Reload / Reload All – Файл | Перезагрузка /Перезагружает все. Используйте эту команду всякий раз, когда файл был изменен с другим

редактором и вы хотите обновить его в редакторах текста VMLAB. - File | Automatic Reload-– Файл | Автоматическая перезагрузка. Вышеупомянутые действия автоматически выполняет VMLAB, если

вы установили Automatic Reload Flag (флажок автоматической перезагрузки). Каждый раз, когда обнаружено различие в любом файле, выполняется перезагрузка. Этот флажок рекомендуют установить, если вы решаете работать с другим текстовым редактором.

2.5. Окно Code Notebook – записная книжка кода

Окно Code Notebook – специальный редактор (рис. 5) – окно с меню-

вкладками, с именами файлов. Это окно служит для файлов кода, определенных в ПФ директивой .PROGRAM.

Рис. 5. Окно Code Notebook

Если любой из выбранных модулей недоступен для редактирования (подобно .OBJ-файлу), в окне будет показываться сообщение, когда выбрана соответствующая вкладка.

Для открытия окна Code Notebook используйте меню View | Code Notebook.

Page 16: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

2.6. Окно Scope – виртуальный осциллограф

Окно Scope (рис. 6) – объединенное аппаратно-программное окно трассировки. В нем регистрируются электрические напряжения узлов во времени – осциллограммы.

Окно Scope имеет следующие настройки: - размещение сигнала в окне Scope полностью; - возврат к предыдущему изображению; - изменение масштаба изображения (увеличение/уменьшение); - вертикальное (по напряжению) и горизонтальное (по времени)

масштабирование; - 2 курсора (вертикальные линии) для измерений интервалов времени.

Интервалы времени между курсорами отображаются в окошке Cursor delta tame.

Кнопка Export (Экспорт) позволяет сохранять содержание окна Scope в CSV-файле (Comma Separated Values). Наиболее популярные электронные таблицы, базы данных, математические пакеты и т.д. могут читать CSV-файлы. Это можно использовать для печати сигналов или выполнения дальнейшего анализа записанных сигналов.

Рис. 6. Окно Scope

Trace/Prio

АС0

РА1

Page 17: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Предостережение: Сохранение окна Scope может занять очень большой объем памяти,

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

времени хранения, управляется директивой .STORE; частоты синхронизации, чем выше частота синхронизации, тем

большее количество точек необходимо для трассировки и анализа сигналов в единицу времени;

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

Число циклов для запоминания команды трассировки в 4 раза больше, чем выполнение команды МК. Если количество требуемой памяти очень высоко, компьютерная виртуальная память должна исполнить дисковые операции перестановки, которые могут замедлить работу VMLAB.

Это может быть замечено в следующих эффектах: замедляется выполнение операций в окне Scope: восстановление

иконок и т.д., увеличивается время изменения; долгое ожидание после команды Restart; долгое ожидание после нажатия кнопки Stop. Для уменьшения времени хранения используется директива STORE. Как правило, рекомендуется не использовать время хранения большее,

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

используются директивы .PLOT и .TRACE. Директивы .STORE, .PLOT и .TRACE, относящиеся к окну Scope,

располагаются в ПФ. Нулевые уровни сигналов (0 вольт) отображены красной линией,

вертикальной линией – переходы VDD-VSS (также красной линией).

2.7. Окно просмотра Watch

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

1. Дисплей переменных. Показывает значения переменных программы. Отображаются имя,

величина, тип переменной. Используя местное всплывающее меню и окно менеджера просмотра Watch Manager (см. подразд. 2.15), можно просматривать, добавлять переменные, изменять их значения и удалять.

2. Стек подпрограмм. Показывает имена и переменные вложенных подпрограмм. Это окно динамически модифицируется в течение моделирования. Для

его отображения используют меню View | Watch.

Page 18: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

2.8. Окно сообщений Messages

Окно сообщений собирает все произведенные сообщения от компилятора, ассемблера, предупреждения и т.д. Оно разделено на четыре раздела (рис. 7):

Project File – раздел проектного файла для сообщений, прибывающих от проектного файла.

Code Maker – для сообщений, прибывающих от процесса формирования кода: ассемблер, компилятор и т.д.

Run time – время выполнения для информации во время выполнения или предупреждений.

Tools & Find in files – найти в файлах (ищет образец в файлах).

Рис. 7. Окно сообщений Все строки, содержащие сообщения, связанные с файлами, подобно

ошибкам синтаксиса, или предупреждениям, или сообщениям, прибывающим в процессе поиска заданных образцов в файлах, могут использовать команду местного всплывающего меню Edit this file, она автоматически запустит текстовый редактор для файла. Это может также быть достигнуто двойным щелчком по строке.

2.9. Окно панели управления Control panel

Это окно обеспечивает взаимодействие пользователя с системой при

моделировании (рис. 8). Оно позволяет: - Управлять скоростью моделирования. Это управление используется,

чтобы замедлить моделирование при помощи набора установленных значений от 1 до 100 %.

- Изменять температуру. Это позволяет моделировать изменение температуры, влияющей на параметры температурно-зависимых элементов схемы.

- Изменять частоту синхронизации микроконтроллера. Обычно её значение устанавливается в проектном файле директивой .CLOCK.

Page 19: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

- Контролировать ток по цепи электропитания микроконтроллера. Он обычно зависит от частоты синхронизации, режима работы и т.д. Определение его величины основано на типовых значениях, заданных в документации на МК (datasheets).

- Управлять зажиганием/гашением восьми светодиодов D1 D8. Они подключаются в проектном файле как компонент Dx (где х = 1, 2,…,8).

- Управлять движками трех переменных сопротивлений S1, S2, S3. Они подключаются к узлам электрической схемы как компонент в проектном файле и используются как источники напряжения, управляемые пользователем.

- Включать/выключать 16 кнопок 0 – F. Они используются как ключи или генераторы ступенчатого напряжения, управляемые пользователем. Их функции задаются в проектном файле.

Рис. 8. Виды окон панели управления

Чтобы помещать диалоговые компоненты в проектный файл, можно использовать меню Components. Оно производит шаблон, в котором нужно заменить формальные имена узлов на фактические. Затем автоматически будет сгенерирован проектный файл.

Так называемые визуальные компоненты (окна TTY-дисплеев, LCD- модуль) размещаются на панели управления в средней и нижней частях, но они появляются контекстно при моделировании передачи информации между микроконтроллерами и компьютером или вывода информации на LCD-модуль (жидкокристаллический двухстрочный дисплей HD44780) и должны быть описаны в ПФ.

Page 20: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

2.10. Окна памяти Memory

Содержание памяти программ (Program Memory) (рис. 9), оперативной памяти (Data Memory) и энергонезависимой (EEPROM) памяти (рис. 10) отображается в трех видах окон.

Рис. 9. Окно памяти программ

Рис. 10. Окна оперативной памяти и EEPROM

Эти окна отображают содержание памяти МК в шестнадцатеричном и ASCII виде.

Page 21: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Окно Data Memory показывает изменением цвета позиции изменение информации:

позиции, которые принадлежат пространству ввода/вывода или контролируются некоторым внешним устройством;

позиции неиспользуемые или резервированные; позиции, которые только читаются или только записываются; позиции, которые читаются и записываются; адрес указателя стека. Цвет символов и фона позиции можно изменить в меню Options |

Display Control | Colors. VMLAB поддерживает три логических состояния битов в ячейке

памяти: 1, 0 и X (неопределенное). Если в ячейке памяти биты полностью не определены, то в окне она показывается как ?? (см. рис. 10).

Окно Data Memory содержит местное всплывающее меню, которое позволяет устанавливать значения в диапазоне 00,…,FF. Это окно динамически модифицируется при моделировании.

Чтобы вызвать диалог для модификации (Modify dialog), дважды щелкните по позиции ячейки памяти (рис. 11). Вы можете также использовать стрелки на клавиатуре, чтобы передвигаться вдоль и поперек окна памяти. Нет никакой необходимости закрыть диалог модификации, чтобы двигаться в другую позицию.

Рис. 11. Окно для модификации ячеек памяти

Изменяющийся диалог является общим для окна Memory, окна просмотра регистров, окна Watch и переменных в редакторе: двойной щелчок по любому отображенному в этих окнах значению вызывает диалог модификации.

2.11. Окно регистров и флагов Registers

Это окно показывает все регистры, флажки и другие детали

центрального процессора. Вы можете выбирать мышью регистр, чтобы изменить его формат,

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

Page 22: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

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

2.12. Окна внешних устройств Peripherals

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

выполнять бит-операции. Щелкая мышью, вы выделяете бит. Этот бит подсвечивается синим прямоугольником. Вызывая всплывающее меню (правой кнопкой мыши) и указывая в меню на строчку Byte operations, вы можете выполнить байт-разрядные операции.

2.13. Окно портов ввода/вывода I/O Ports

Отображает состояние портов ввода/вывода: содержание регистров с

указанием направления передачи (I/O) для каждого бита. Действия, которые можно выполнить в нем, аналогичны предыдущим

окнам.

2.14. Диалог модификации Modify Dialog

Диалог модификации – маленькое окно (рис. 12), которое позволяет просмотреть и изменять переменные в позициях памяти. Этот диалог одинаков в окнах памяти, регистров процессора, внешних устройств/портов, просмотра переменных, текстового редактора.

В заголовке окна отображается название устройства, к которому оно относится.

Чтобы изменять формат числа, используется кнопка As.

Рис. 12. Окно модификации

Доступные форматы: - uint – целое число без знака в диапазоне от 0 до 255; - int – целое число со знаком в диапазоне от -128 до 127; - char – символ (ASCII); - hex – шестнадцатеричный; - bin – двоичный. Чтобы изменять значение, отредактируйте его. Значение будет

установлено после нажатия кнопки Apply.

Page 23: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

2.15. Менеджер просмотра Watch Manager

Окно (рис. 13) открывается из меню Debug | Watch Manager или быстрой клавишей F10. Это окно показывает список всех доступных символов в коде, тематические категории с его локальными контекстами (для локальных переменных языка Cи).

Рис. 13. Окно менеджера просмотра

Каждая переменная показывается с ее свойствами: Отображается или нет в окне просмотра Watch. Формат вывода. Этот формат изменяется при помощи щелчка мыши по символу (в литературе употребляется термин мышь-По-символу). Контрольные точки при доступе к переменной (чтение и запись). Это доступно для статических переменных. Аналоговая величина отображается полосой. Доступно только для ASM-файлов. Позволяет видеть 1-байтовую переменную как полоску длиной 0 - 255 пунктов.

В окне Code Notebook можно выполнить следующие действия: Просмотр – мышь-По-символу. Поместите курсор мыши поверх

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

Page 24: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

может быть включено/отключено в меню Options | Editors | Enable mouse-over-symbol watch. Двойной щелчок по символу. Двойной щелчок по выбранной

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

желательную переменную, затем откройте местное всплывающее меню (щелкните правой кнопкой мыши). Вход в меню позволяют открыть инспектор отладки или расположить переменную в менеджере просмотра. Быстрая клавиша F10 (менеджер просмотра). Поместите указатель

мыши в желательную переменную, затем нажмите F10. Окно Watch Manager расположит символ, для изменения формата отображения.

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

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

2.16. Инспектор отладки Debug Inspector

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

Рис. 14. Окно инспектора отладки

Page 25: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

На рис. 14 показано окно инспектора отладки для массива символов с именем rbuf, выделенным в тексте программы, написанной на языке Си.

Возможности окна: многоформатное отображение (HEX + целое число + ASCII); отображение структур/объединений; поддержка битных полей; отображение массивов; передвижение (навигация) через указатели; прямой вывод строк символов (char *), законченных пустым

окончанием (NULL-terminated); ·структуры/объединения в пределах других структур/объединений; ·модификация переменных или элементов структуры; информация о типе переменной, памяти и размере (в битах).

Значение переменной можно увидеть, установив указатель мыши на переменную. На рис. 15 указатель мыши наведен на имя массива символов rbuf. Расположение переменной в памяти можно определить из контекстного меню при помощи команды Go to Program Memory (рис. 16).

Рис. 15. Просмотр значений переменой при помощи наведения указателя мыши

Рис. 16. Расположение переменной в памяти

Page 26: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Как запускать инспектора отладки

В окне Code Notebook дважды щелкните по переменной непосредственно в исходном тексте (см. рис. 15) или используйте соответствующую команду …-> Inspect/Modify в контекстном меню (см. рис. 16), когда курсор расположен на надлежащей переменной.

Навигация через Cи-указатели

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

int *myPointer; Просмотреть фактическое значение целого числа *myPointer можно,

нажав по кнопку Descend. Тогда в таблицу инспектора отладки будет добавлена новая строка, названная *myPointer, показывающая значение целого числа.

Кнопка Descend также позволяет наблюдать структуры/объединения в пределах других структур/объединений. Сделайте щелчок на кнопке Descend и новая строка таблицы с выбранной структурой будет добавлена.

Для удаления новых позиций табуляции, созданных с помощью Descend, используйте кнопку Back.

Как изменять переменную

Щелчок на кнопке Modify, когда была выделена переменная (или

элемент массива/структуры), позволит редактировать значение в поле, где показана переменная. Щелкните кнопкой Apply для выполнения модификации.

В случае отображения переменных в нескольких форматах (HEX + ASCII и т.д.) только крайний левый будет принят во внимание для модификации, поэтому нет никакой потребности изменять все показанные форматы.

Используйте кнопку Descend, чтобы передвигаться через структуры, содержащие указатели на другие структуры (связанные списки).

По умолчанию переменные типа char* (указатель на символ) отображены как пустой указатель окончания строки символов.

2.17. Сообщения об ошибках и предупреждения

VMLAB предусматривает механизм, обнаруживающий аномальные

ситуации в программном коде. Если аномальная ситуация обнаружена,

Page 27: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

VMLAB дает предупреждение в окне сообщений (Messages), останавливает моделирование на команде, которая её вызвала.

Пример ошибки в имени метки (рис. 17): в окне сообщений после знака ! указано, что в строке 17 исходного кода производится обращение к неопределенной переменной. В исходном коде напротив строки с ошибкой также ставится знак !. Ошибка заключается в пропуске буквы в слове start.

Рис. 17. Сообщение об ошибке

Пример предупреждающего сообщения в окне сообщений, показывающего PC (значение программного счетчика), время и идентификатор категории ошибки:

! [PC = $0BAA, Time = 0.29 ms, {MEM}]: Attempt to read in a write-only position

В переводе на русский: ! [PC = $0BAA, Время = 0.29 ms, {MEM}]: Попытка читать в позиции

только для записи. {MEM} – категория ошибки (память). Тематические категории ошибок: центральный процессор; память; стек; порты ввода/ вывода; внешние устройства (UARTs, таймеры и т.д.); АЦП; таймеры; ошибка получена из неопределенных битов (X); сторожевой таймер.

Как локализовать причину предупреждения

Если исходный код написан на Ассемблере (файл *.asm),

моделирование остановится на команде, ответственной за ошибку. Однако

Page 28: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

если используется язык высокого уровня, команда может быть скрыта в некоторой внутренней части кода (библиотека и т.д.), её не видно в исходном тексте. В таких случаях нужно смотреть окно с листингом исходного текста и окно Program Memory.

Как получить расширенную информацию

Иногда короткого сообщения недостаточно, чтобы понять, что не так. В этом случае используется команда Explain error (Объяснение ошибки) в контекстном меню, которая открывает окно Help с разъяснениями по поводу полученного краткого сообщения.

Вы можете не согласиться с выданными VMLAB сообщениями, если хорошо принимаете ситуацию. Меню Options | Errors reporting даёт возможность включить/отключить такие сообщения об ошибках и предупреждения по тематическим категориям, а также выбрать действия, выполняемые при обнаружении ошибок: остановка, регистрация, звуковой сигнал и т.д.

Как распознать ошибки во время трансляции

Во время трансляции ошибки/предупреждения расположены в окне

сообщений в разделе Code maker. Дважды щелкните по линии ошибки/ предупреждения, строка с ошибкой автоматически выделится красным в соответствующем редакторе.

Сообщения об ошибках во время выполнения программы

Сообщения, выдаваемые при появлении ошибок (по категориям): Центральный процессор / Память Conditional jump referred to an unknown flag условный переход отослал

неизвестный флажок. Write to read-only position and vice-versa позиции только для чтения и

наоборот. Access to reserved or unimplemented positions обращение к резервным

или неосуществленным позициям. Stack overflow / underflow переполнение стека. Comparing unknown data сравнение неизвестных данных. Периферия Writing into peripherals registers with unknown data запись в

периферийные регистры с неизвестными данными. Write in a read-only address or vice-versa запись в адрес только для

чтения или наоборот.

Page 29: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

АЦП (аналого-цифровой преобразователь) Conversion issued while other taking place пропущенное

преобразование. A/D node changed while converting A/D-узел (узел, к которому

подключен аналогово-цифровой преобразователь) изменен при преобразовании.

Reference voltage out of range напряжение выходит из допустимого диапазона.

ADMUX register access while working доступ к регистру ADMUX при работе.

Selected inexistent channel in ADMUX выбран несуществующий канал в ADMUX.

ADC clock out of recommended range синхронизация АЦП вышла из рекомендованного диапазона.

UART Overrun – заполнено. Data register (UDR) not empty регистр данных (UDR) не пустой. UART is busy UART занят. Таймеры No pin defined as output in PWM mode – не определен никакой вывод в

режиме вывода от PWM. Сторожевой таймер RESET caused by the Watchdog сброс вызван сторожевым таймером. WDTOE bit cleared by hardware WDTOE бит очищен аппаратными

средствами. Watchdog must be disabled or reset before changing the Prescale Select

сторожевой таймер должен быть заблокирован или сброшен перед изменением Prescale Select.

Watchdog Reset (WDR) must always be executed before the Watchdog Timer is enabled сброс сторожевого таймера (WDR) должен всегда выполняться прежде, чем сторожевой таймер допускает.

SPI Attempt to write into SPCR register while a transfer is in progress

попытка записи в регистр SPCR во время передачи информации по каналу.

If configured as master, MOSI and SCK pin must be outputs если MOSI сконфигурирован как мастер, вывод SCK должен быть выходом.

EEPROM Specified address out of range указанный адрес выходит из допустимого

диапазона.

Page 30: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Attempt to read or write data register while is busy попытка чтения или записи в регистр данных, в то время как присутствует сигнал «Занят».

Interrupts enabled during write cycle – попытка осуществить прерывания в течение цикла записи.

Команда меню Options | Error reporting позволяет маскировать специфическую ошибку, т.е. если, несмотря на получение сообщения об ошибках, вы считаете, что в вашем приложении своя специфика и с полученным сообщением нельзя соглашаться.

Общая синтаксическая ошибка путаница в суффиксах MEG и М. М обозначает Mili, а не Mega.

3. ОСНОВНЫЕ ДИРЕКТИВЫ

Список директив, используемых в VMLab:

.CLICKTOOL

.CLOCK

.MICRO

.PLOT

.POWER

.RAMINIT

.STORE

.TAB

.TARGET

.TOOLCHAIN

.TRACE

.SOURCE

.STATS Директива трансляции: .PROGRAM Директивы GNU Cи компилятора (GCC): .GCCPATH .GCCMAKE .BAT .COFF

.CLICKTOOL-директива Эта директива позволяет запускать процесс console MS-ДОСа, щелкая

кнопку "Молоток с отверткой", доступную в панели инструментов. Она используется, когда МК программируется при помощи внешних программ.

Чтобы запускать команду, определенную .CLICKTOOL, необходимо успешное выполнение команды Project | Build.

Синтаксис: .CLICKTOOL < командная строка консоли MS DOS > Пример: .CLICKTOOL " burn.exe - FmyFile.hex-X-Y" .CLOCK-директива Указывает VMLAB частоту синхронизации, которую нужно

использовать в начале моделирования. Синтаксис: .CLOCK <значение>

Page 31: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Пример: .CLOCK 8meg .CLOCK необязательная директива. Если значение не задано, то оно

будет принято по умолчанию, в зависимости от МК. Так или иначе, это значение может быть изменено позже в окне панели управления (выбрано из имеющегося списка).

Использование директивы .CLOCK позволяет устанавливать любую частоту в допустимых пределах, иначе – флаг ошибки.

.MICRO-директива Указывает VMLAB название микроконтроллера, использующегося в

проекте. Синтаксис: .MICRO " < название МК> " [" < микроопции > "] Примеры: .MICRO "ST6225" "HWD" .MICRO "Atmega8" .MICRO "Atmega128" "BOOTRST=0" Строка опций зависит от МК. В ST62 она используется для

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

.MICRO обязательная директива. .PLOT-директива Указывает VMLAB названия (имена) узлов, которые должны быть

зарегистрированы и отображены в окне осциллографа. Синтаксис: .PLOT V (< nodeName >) [V (<nodeName>) ...] Пример: .PLOT V (node_1) V (PA0) V (PB0) .PLOT директива необязательная. Возможно многократное

использование директивы .PLOT. .POWER-директива VMLAB имеет 3 узла напряжения: VDD, VSS и GND (или 0). .POWER-директива устанавливает значения VDD и VSS относительно

абсолютного нулевого узла GND. GND указывает абсолютное нулевое напряжение . VDD наиболее положительный узел напряжения питания или уровень

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

логических элементов.

Page 32: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Все логические элементы (включая вводы/выводы МК) используют VDD/VSS напряжения для своих логических уровней.

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

Синтаксис: .POWER VDD = <значение VSS> = <значение> Примеры: .POWER VDD=2.5 VSS =-2.5 ; GND центрирован. .POWER VDD=5 VSS=0 ; значение по умолчанию. .POWER VDD=0 VSS =-5 ; напряжение питания отрицательно. .POWER- директива необязательная, заданные по умолчанию значения

приняты за VDD = 5 В и VSS = 0 В. .RAMINIT-директива Эта директива позволяет инициализировать оперативную память МК,

т.е. установить заданные значения перед стартом моделирования. По умолчанию все позиции оперативной памяти инициализированы к ?? (неизвестное значение).

.RAMINIT инициализирует только позиции, которые ??. Например, если позиция записана вручную с $ 07 перед стартом моделирования, это значение останется, несмотря на значение, данное в .RAMINIT.

Синтаксис: .RAMINIT < десятичное целое число от 0 до 255 > Заметьте, что значение должно быть написано десятичным числом. Пример: .RAMINIT 15; установит позиции оперативной памяти в $0F Используйте эту директиву с осторожностью: это инструмент, который

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

.STORE-директива Устанавливает время хранения для окна осциллографа (одновременно

для хранения сигналов и трассировки МК). Синтаксис: .STORE <значение> Пример: .STORE 200m ; 200 миллисекунд время хранение. .STORE директива необязательная. Значения по умолчанию

принимаются в зависимости от компьютерной памяти. Оценки вне указанного в табл. 3 диапазона усекаются к максимуму/минимуму.

Page 33: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Таблица 3 Диапазоны времени хранения

Доступная оперативная память m Минимум Значение по умолчанию Максимум m < 60 Мб 50мс 250мс 500мс

60 < m < 100 Мб 50мс 500мс 1000мс m> 100 Мб 50мс 500мс 2000мс

.TAB-директива Позволяет определять остановы табуляторов для данного проекта. Эта

директива нужна для того, чтобы автоматически располагать исходный текст согласно установленному виду/стилю. Например, 3 для кода Cи или 8 для кода Ассемблера.

Синтаксис: .TAB < целое число от 1 до 16 > Пример: .TAB 6 Заданный по умолчанию интервал позиции табуляции – 3. .TARGET-директива Определяет имя конечного HEX-файла, который будет произведен

процессом компиляции. Синтаксис: .TARGET <имя файла> Эта директива обязательна только при использовании GENERIC или

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

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

построить исполняемый файл. Возможны три значения: "ASM": Стандартный код трансляции изготовителя МК (значение по

умолчанию). "GCC": GNU C Compiler - GNU Cи компилятор. "GENERIC ": Спецификация файлов сторонних производителей. Синтаксис: .TOOLCHAIN {< "ASM" >, < "GCC" >, < " GENERIC " >} Пример: .TOOLCHAIN "GCC" Эта директива необязательная. .TRACE-директива

Page 34: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

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

Синтаксис: .TRACE .TRACE директива необязательная. Если она не указана, трассировка

не будет записываться. .SOURCE-директива Определяет список файлов, который будет загружен в окне Code

Notebook (записной книжки кода). Эта директива допустима только с GCC и GENERIC наборами файлов. Не используйте её вместе с директивой .PROGRAM.

Принимая во внимание, что директива .PROGRAM используется, чтобы сообщить VMLAB, какие кодовые модули (исходник и т.д.) будут использоваться, чтобы построить целевой HEX-файл, директива .SOURCE указывает VMLAB, только какой файл нужно загрузить в окно записной книжки кода.

Синтаксис: .SOURCE <имя файла> [< имя файла > ...] Пример: .SOURCE "file1.c" "file2.c" "file3.c" Совет: Когда вы загружаете много файлов, используйте символ продолжения

линии (+), чтобы сделать более читаемым ваш файл. Пример: .SOURCE "file1.c" "file2.c" "file3.c" + "File4.c" "file5.c" "file6.c" + "File7.c" .STATS-директива Допускает запись данных при выполнении команды View | Execution

Stats. Она должна использоваться в комбинации с директивой .TRACE. Синтаксис: .STATS Предостережение: Директива STATS делает запись данных, начиная с начала

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

.PROGRAM-директива Определяет спецификацию файлов, которая будет использована для

создания целевого программного обеспечения, загружаемого в МК.

Page 35: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Для создания исходных файлов обычно используется ASM (стандартный Ассемблер изготовителя) набор файлов. Он собирается + связывается (компонуется) VMLABом, чтобы построить .HEX-файл, который в конечном счете нужно использовать для программирования ROM/EPROM МК. Все файлы, определенные здесь, будут загружены в окно записной книжки кода.

Синтаксис: .PROGRAM " <modName> " [: " < опции связи (линковщика) > "] [" <

modName > " [: " < опции связи > "]] Примеры: .PROGRAM "example.asm" .PROGRAM "example.hex" .PROGRAM "example1.asm" "example2.asm" "example3.obj" .PROGRAM "exampe1.asm": "-P2:80-07FF" "example2.asm" Если .TARGET-директива опущена, имя первого модуля определяет

имя загружаемого конечного файла (с расширением .HEX). Первые и вторые примеры произведут загружаемый код с именем Example.hex.

Опции связи, если таковые вообще имеются, используются программой Linker, когда в программе больше чем 1 модуль, чтобы перераспределить адреса разделов. Должен использоваться синтаксис, определенный в руководстве компоновщика (Linker).

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

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

Пример: .PROGRAM "file1.asm" "file2.asm" "file3.asm" + "File4.asm" "file5.asm" "file6.asm" + "File7.asm" .GCCPATH-директива Определяет путь инсталляции GCC. Эта директива допустима, если

определен GCC-набор файлов. Синтаксис: .GCCPATH <имя пути> Пример: .GCCPATH " C:\WINAVR \ " Если путь для GCC-набора не задан, VMLAB примет C:\AVRGCC\ как

инсталляционный путь для GCC.

Page 36: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

.GCCMAKE-директива Определяет файл, который будет использован утилитой GCC make

или если выбран автоматический режим. Если выбран автоматический режим, GCC-компилятор устанавливает флажки/опции, используя команду Project | GCC makefile flags.

Синтаксис: .GCCMAKE {< имя файла >, AUTO } Пример: .GCCMAKE "myMake.mak" ; makefile пользователя .GCCMAKE AUTO ; автоматически обработанный makefile .BAT-директива Определяет MS-DOS пакетный файл (расширение BAT) для того,

чтобы при выполнении формировать необходимые HEX- и COFF-файлы. Эта директива имеет силу только с GENERIC-наборами файлов.

Синтаксис: .BAT <имя файла> Эта директива необязательна. Если она не найдена, VMLAB

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

.COFF-директива Определяет COFF-файл (Common Object Format File), где можно найти

символическую информацию для отладки. Эта директива должна использоваться только с опциями GENERIC-наборов файлов.

VMLAB может читать классический COFF-файл и AVR-расширенный COFF-файл (с поддержкой структур/объединений), совместимый с AVR Studio 4.x.

Если вы используете .COFF и директива SOURCE опущена, VMLAB загрузит автоматически исходные файлы, указанные внутри COFF-файла.

Синтаксис: .COFF <имя файла> Пример: .COFF "myFile.cof" Совет: При работе только с отладчиком VMLAB можно опустить .SOURCE.

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

Директива .SOURCE является обязательной при использовании .COFF-файлов при применении VMLAB не только как отладчика, но и для

Page 37: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

запуска компиляторов сторонних производителей при помощи командных файлов (.BAT).

4. БИБЛИОТЕКА АППАРАТНЫХ КОМПОНЕНТОВ

Доступные компоненты:

резистор; конденсатор, соединенный с «землёй»; диалоговый выключатель/ключ; светодиод (LED); аналоговые генераторы напряжения; импульсный источник напряжения; источник синусоидального напряжения; источник напряжения, управляемый пользователем; цифровые генераторы; генератор «ступеньки» (Non-return-to-zero (NRZ) генератор); макромодели; операционный усилитель; компаратор; 2-входовые И-НЕ; 8-битный цифро-аналоговый преобразователь; интерфейс RS232, основанный на TTY; LCD-модуль; I2C-монитор (диалоговый); диалоговая вспомогательная клавиатура 4x4.

Резистор Синтаксис: R [< instName >] <nodeName> <nodeName> <значение> Примеры: R load node1 node2 10К R node_a VSS 100 Не допускается нулевое значение сопротивления. Для короткого

замыкания используйте маленькое сопротивление (1 Ом, например). VDD, VSS и GND – имеющиеся без определения узлы напряжения. Заземляющий конденсатор Синтаксис: C [< instName >] <nodeName> <PowerNodeName> <значение> Примеры: C1 node1 VSS 10n ; 10 нанофарад на «землю»

Page 38: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

C node_a VSS 1u ; 1 микрофарад на «землю» Конденсаторы между двумя произвольными узлами не допускаются.

Второй узел должен быть всегда VSS. VDD, VSS и GND зарезервированные узлы напряжения. Выключатель / клавиша (ключ) Диалоговый выключатель, управляемый одной из 16-ти кнопок панели

управления. Синтаксис: K{0 9, A F} <nodeName1> <nodeName2> [{NORMAL, LATCHED,

MONOSTABLE(<timeValue>)}] Последнее ключевое слово управляет начальным положением ключа: NORMAL – нормально замкнут, ключ закрыт (замкнут), пока вы не

нажмете кнопку (значение по умолчанию). LATCHED замыкаемый, ключ переключает из открытого в замкнутое

состояние при нажатии. MONOSTABLE многоустойчивый (значение времени), закрытый в

течение указанного времени. Примеры: K1 node1 VSS LATCHED ; Button 1 KA node_a node_b ; Button A K3 myNode GND monostable(10m) ; Button 3 Вы можете определять матрицу 4x4 вспомогательной клавиатуры, задав

16 действий, однако это выполняется автоматически (см. ниже). Светодиод (LED) Это визуальный компонент. В окне панели управления доступно 8

виртуальных светодиодов. Светодиоды смоделированы как резистор с малым сопротивлением (1 Ом). Светодиод включен, когда ток через него более 1 мA. Аноды диодов всегда соединяются с VDD.

Синтаксис: D {1 8} VDD <nodeName> Примеры: D1 VDD node1 ; "D1" LED в окне панели управления. Подобно тому, как происходит в реальной жизни, светодиоды при

моделировании не реагируют на очень быстрые сигналы переключения. Совет: Светодиод может быть соединен непосредственно с портом

ввода/вывода МК, но в этом случае вы не будете видеть на нем падения напряжения с помощью виртуального осциллографа Scope. Чтобы видеть падение напряжения на выводе МК, вы должны соединить светодиод с узлом VDD через резистор примерно 500 Ом.

Page 39: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Импульсный генератор напряжения Синтаксис: V[<instName>] <nodeName> <powerNode> PULSE(<vInitial> <vFinal>

<tDelay> <tRise> <tFall> <tWidth> <tPeriod>) Примеры: V PA0 VSS pulse(0 5 40u 0 0 50u 100u) Vpulse node1 vss pulse (2.5 3.5 0 1u 1u 1.5m 2.5m) Второй узел должен быть всегда VDD, VSS, GND (или 0). Генератор напряжения, управляемый пользователем Для управления напряжением используется движок переменного

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

Синтаксис: V[<instName>]<nodeName><powerNode>SLIDER_<sliderNumber> (<vLow> <vHigh>) Примеры: Vth minus vss SLIDER_1(0 5) ; 0 to 5 volts (Slider #1) V v_node vss SLIDER_3(1.5 2.5) ; 1.5 0 to 2.5 volts (Slider #3) Вторым узлом должен быть всегда узел напряжения питания. <sliderNumber> может быть 1, 2, 3, соответствуя трем движкам панели

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

одним и тем же движком. Операционный усилитель (OPAMP) Синтаксис: X [< instName >] OPAMP <nodePlus> <nodeMinus> <nodeOut> Примеры: Xop OPAMP node_a node_b node_c Макромодель OPAMP весьма проста и оптимизирована для системного

моделирования. Такие характеристики, как ограниченная полоса частот, убывание коэффициента передачи и т.п., не сымитированы. Выход OPAMP ограничен напряжениями VDD и VSS.

Диалоговый NRZ цифровой генератор Этот компонент производит цифровой сигнал «ступенька» (NRZ – Non

Return to Zero), в указанном узле. Уровни напряжения – VDD, VSS и (VDD+VSS)/2 для идентификаторов сигналов 1, 0 и X.

Сигналы активизированы, когда в окне Control panel нажата кнопка KEY_x и в начале моделирования, если используется ключевое слово СБРОС. Это позволяет определять максимум 16 сигналов,

Page 40: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

активизированных клавишами, плюс дополнительная инициализация NRZ сигналов из файлов проекта.

Синтаксис: P[<instName>] NRZ(<timeBit>) <nodeName> KEY_<keyNumber>

"<pattern>" [+ KEY_<keyNumber> "<pattern>"] [+ RESET "<pattern>" [+ ....] <keyNumber> должен быть номер от 0 до 9, от А до F. " < pattern > " должна быть или последовательность значений 0, 1 и X

(максимальная длина 255), или строка с формой "file:<fileName >" для сигналов, определенных во внешних файлах.

<timeBit> интервал времени каждого цифрового элемента 0, 1 или X. Если не было СБРОСа, сигнал будет инициализирован как X. Примеры: P1 NRZ(20u) pb0 KEY_1 "01000110xx0000100111" P2 NRZ(40u) myNode KEY_1 "01000110xx000" + KEY_2 "11100011100011100011111" + KEY_A "10100001xxxx11110100" + RESET "101" ; Example of a 4 bits wide generator, activated by KEY_1 P0 NRZ(20u) bit_0 KEY_1 "01000110xx0000100111" P1 NRZ(20u) bit_1 KEY_1 "00000000111000000000" P2 NRZ(20u) bit_2 KEY_1 "11111111111110001111" P3 NRZ(20u) bit_3 KEY_1 "XXXXXXXXXXXXX0000000" ; Пример образца, загруженного от файла P0 NRZ (20u) bit_0 KEY_1 "file:myPattern.txt" Определение сигналов во внешних файлах Используйте любой текстовый файл с расширением, которое вы

предпочитаете: TXT, DAT и т.д. Этот файл должен быть расположен в вашем рабочем каталоге с остальной частью: .PRJ-файлом и файлом исходного кода. Правила написания такого файла показываются в следующем примере:

Пример содержания для упомянутого выше файла myPattern.txt: 100100 10 X 00 00 1111 ; 0, 1 и X используются как двоичные значения. 10000 11111 ; Точка с запятой отделяет комментарий. 1 1 1 1 111 111100 ; Пробелы и CR игнорируются. ... ; Неограниченная длина, но 100 11 11 11 ; будьте осторожны: если 10111 001001 111 1 ; файл огромен, VMLAB будет брать много 100 10011 11 ; ресурсов памяти.

Page 41: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

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

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

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

Цифроаналоговый преобразователь на 8 битов (D2A8) Синтаксис: X [< instName >] D2A8 <i7> <i6> <i5> <i4> <i3> <i2> <i1> <i0>

<nodeOut> 8-битные значения на вводах <i0>,...,<i7> преобразуются в аналоговые

значения. Диапазон для таких значений: 0 - > VSS, 255 - > VDD. Пример: XD2A D2A8 pa7 pa6 pa5 pa4 pa3 pa2 pa1 pa0 ana_out Может использоваться, чтобы контролировать значение 8 битов порта

вывода микроконтроллера в аналоговом виде. Диалоговый TTY TTY – диалоговый визуальный компонент. Он размещается в панели

управления (см. рис. 8), имеет отделенные 2 окна TX/RX и кнопки конфигурации, которые позволяют изменять параметры TX/RX. После того, как установится соединение с системой через TX/RX-узлы, установите курсор в окно TX и напечатайте с клавиатуры. Любой напечатанный символ будет передан через узел TX. Любой символ, полученный через узел RX, будет показан в окне RX.

Есть два доступных TTY-дисплея: TTY и TTY2, различие в том, что у TTY2 окно RX большое.

Синтаксис: X [< instName >] TTY (< baudRate > [< 7 или 8 битов > <четность>

<oddParity> <stopBits> <RxDisplayAs>]) <nodeTx> <nodeRx> X [< instName >] TTY2 (< baudRate > [< 7 или 8 битов > <четность>

<oddParity> <stopBits> <RxDisplayAs>]) <nodeTx> <nodeRx> Параметры: Все, кроме первого параметра, – не заданные значения, берутся по

умолчанию. <baudRate>: 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400,

57600, 76800, 115200. Не берется по умолчанию (обязательное поле). <7Or8bits>: 7 или 8. Значение по умолчанию = 7.

Page 42: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

<Четность>: 0: никакая четность, 1: четность. Значение по умолчанию = 0.

<oddParity>: 0: четный, 1: нечетный. Значение по умолчанию = 0. <stopBits>: 1, 2. Значение по умолчанию = 1. <RxDisplayAs> RX отображают опцию: 1, 2, 3, 4. Значение по

умолчанию = 1. Последний параметр <RxDisplayAs> позволяет определять формат

дисплея в окне RX. Он может быть: 1) 8-битный ASCII-ANSI-код (используемый Windows). Значение по

умолчанию; 2) классический 7-битный ASCCI-код, будет отображен как

шестнадцатеричные числа; 3) десятичный код; 4) шестнадцатеричный код. Примеры: Xpeter TTY (9600 7 0 0 1 2) tx_peter tx_paul Xpaul TTY (9600) tx_paul tx_peter Передача содержания файла Кнопка TX File позволяет передавать содержание файла. Файл должен

иметь имя с расширением TX, например PETER.TX или PAUL.TX. Этот файл должен быть расположен в рабочем каталоге с остальной частью файлов: PRJ, код и т.д. Форматированием/синхронизацией при передаче файла управляют 4 параметра первой строки (пример):

1.0e-3 5.0e-3 ТЕКСТ CR ; Первая строка для параметров Hello world этот текст должен быть передан. Параметр 1: межсимвольная задержка в секундах (время от бита

останова до следующего начала). Значение по умолчанию = 0. Параметр 2: межстрочная задержка в секундах. То же самое для

перерывов строки. Значение по умолчанию = 0. Параметр 3: Формат, возможные значения: ТЕКСТ или BIN. Значение

по умолчанию = ТЕКСТ. Параметр 4: Как интерпретировать строки с прерыванием режима

TEXT. Возможные значения: CR, LF, CRLF, NULL, NONE. NULL пошлет 0x00 байт; NONE будет игнорировать переводы строки.

В режиме BIN этот параметр игнорируется. Значение по умолчанию = CR. Если на этой строке обнаружена ошибка параметра, то отображается

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

формате, отделенные пробелами. Переводы строки игнорируются. Пример: 1.0e-3 5.0e-3 ; Пример режима BIN

Page 43: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

0A DF 12 E3 98 08 18 FF FA FB Прием файла Через специальный буфер содержимое окна RX будет скопировано в

файл с именем <instName>.RX. В вышеупомянутых примерах это PETER.RX, PAUL.RX. Этот файл будет помещен в рабочий каталог.

Маленькие окна TX/RX действуют, подобно старому TTY-терминалу командной строки, в котором команды, подобно Копии/Вырезке/Вставке, стрелки и т.д., не выполняются.

Кнопкой Clear очищаются окна TX/RX. Специальные символы <CR>, <ESC> и т.д. отображены с его

соответствующим кодом, чтобы было ясно, что они переданы. Уровни сигнала TX/RX - VDD/VSS.

Если TTY сконфигурирован на 7 битов и вы нажимаете символ на 8 битов, подобно буквам с, б, ц и т.д., то в окно Messages выдается предупреждение. Символы на 8 битов определяются стандартом Windows/ANSI, а не MS-DOS OEM.

Можно изменять параметры TX/RX во время выполнения моделирования, используя кнопку Set Parameters.

Не забудьте подключать TX- и RX-терминалы! Например, TX-вывод от микроконтроллера должен быть связан с TTY RX-терминалом, и наоборот.

LCD-модуль Синтаксис: X [< instName >] LCD (< символы > < строки> < osc_freq >) <RS>

<RW> <E> <D7> ... <D0> LCD-модуль представляет стандартную LCD-панель (HD44780).

Доступные комбинации символов строк: 8x1, 8x2, 16x1, 16x2, 16x4, 20x1, 20x2, 20x4, 24x2 и 40x2.

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

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

Пример: X1 LCD (24 2 250КБ) PD2 PB0 PD3 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

У LCD низкая частота синхронизации. LCD-модуль позволяет выводить 4/8 битов данных. Используйте

интерфейс на 4 бита, чтобы сохранить порты. Используйте файл регистрации checkBox, чтобы проследить LCD-

данные и операции в окне сообщений.

Page 44: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

I2C-монитор Монитор I2C позволяет моделировать и делать отладку приложений,

основанных на популярном интерфейсе I2C (TM Philips Semiconductors). Использование его в системе для обмена данными между

микроконтроллерами и другими устройствами позволяет видеть данные, делать их запись и посылать/получать по шине в режимах Master или Slave.

Синтаксис: X [< instName >] I2C (< master_clock > < slave_address >) <SDA> <SCL>

Пример: Xone I2C (100КБ 24) PC1 PC0 ; slave address = 24 (десятичное число) R1 VDD PC0 10КБ ; резисторы R2 VDD PC1 10КБ ; необходимы Параметры: <master_clock>: является частотой, которая будет использоваться в

режиме мастер TX или RX. Максимальная доступная частота 400 кГц. <slave_address>: адрес, который имеет устройство в режиме Slave. Этот адрес должен быть в десятичном формате (0 – 127). <SDA>, <SCL> узлы: к которым, как в реальной схеме, необходимо

подключить резисторы между VDD и SDA, SCL-узлами.

Работа с монитором I2C Монитор имеет два диалоговых окна с двумя кнопками Master TX и

Master RX в каждом (рис. 18), которые позволяют выводить I2C- последовательности.

Кнопка Master TX инициализирует передачу данных по адресу. Байты данных должны быть в шестнадцатеричном формате разделенными пробелом: 0A 3D 45 6A 78....

Кнопка Master RX инициализирует прием данных (посылка синхроимпульсов, получение данных) от адресов, полученных в окошко редактирования на панели управления (справа).

Все события, замеченные в шине, регистрируются в правом окошке: Start, Stop, Data RX и т.д.

Рис. 18. Панель управления с монитором I2C

Page 45: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Матрица вспомогательной клавиатуры 4x4 Представляет собой 4 столбца и 4 строки вспомогательной клавиатуры

на панели управления (см. рис. 16). Она используется в интерактивном режиме для управления 16-ю выключателями.

Синтаксис: X [inst_name] KEY4X4 <r0> <r1> <r2> <r3> <c0> <c1> <c2> <c3> <r0> узел или строка 0 (topmost) и т.д. <c0> узел для (крайнего левого) столбца 0 и т.д. Когда нажата кнопка 0 в панели управления, узлы <r0> и <c0>

замкнутся. Кнопка 1 в панели управления замкнет узлы <r0>, <c1> и т.д. Пример: XkeyPad KEY4X4 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 Советы и ограничения: Не соединяйте силовые узлы (VDD / VSS / GND) при помощи

клавиатуры. Если вы используете кнопки, подобно NRZ-цифровому генератору,

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

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

5. ФАЙЛЫ, ВКЛЮЧАЕМЫЕ В ПРОЕКТ

5.1. Спецификация файлов AVR

VMLAB включает свободно распространяемое программное

обеспечение фирмы Атмел AVR стандартный макроассемблер AVRASM32. EXE. Полученный при помощи его исходный код сохраняется в файле *.asm. Кроме него в спецификацию проекта входят следующие стандартные AVR-файлы, доступные в каталоге проекта:

* Листинг (тип .LIS). * Загружаемый код (тип .HEX), используется для программирования

флэш-памяти. * Файл EEPROM (тип .EEP), используется для программирования

энергонезависимой памяти. * Объектный файл (тип OBJ). Этот файл не используется VMLAB. Стандартный Атмел AVR макроассемблер AVRASM32 не содержит

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

Page 46: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Не рекомендуется изменять вручную включенную в проект цепочку связанных файлов (.LIS, .HEX и т.д.) до тех пор, пока VMLAB использует их для того, чтобы извлечь всю информацию и построить внутреннюю базу данных. Если эти файлы разрушены, могут быть неожиданные результаты!

Определение конфигурационных битов (fuses)

Значение конфигурационных битов (фьюзов) можно определить в

проектном файле посредством директивы .MICRO со строкой опций. Используйте следующие правила, чтобы определять фьюзы: 1. Используются пары <fuse_name>=<fuse_value> <fuse_name>=

<fuse_value> …, отделенные пробелами. Однако не должно быть никаких пробелов в паре <fuse_name>=<fuse_value>.

2. <Fuse_name> должен иметь имя фьюза, какое указано в документации (datasheets) на МК. Многоразрядные фьюзы всегда должны предваряться именем (например, CKSEL, записанным как CKSEL00, CKSEL01 и т.д.).

3. <Fuse_value> должен быть всегда двоичным числом, с одним или большим количеством битов: 1, 01, 0001, ..

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

BOOTRST. Если он установлен в ноль, вектор сброса будет перемещен в загрузочную область согласно информации в документации.

BOOTSZ – в комбинации с BOOTRST. Остальная часть фьюзов не имеет никакого эффекта в моделировании,

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

Пример: .MICRO "Atmega128" " M103C=1 CKSEL=0010 BOOTSZ=01

BOOTRST=0 " Совет: Просмотрите демонстрационный проект BOOTLOAD.PRJ как пример

того, как использовать определение фьюзов.

5.2. Проектный файл

Проектный файл – текстовый файл с расширением .PRJ, который идентифицирует систему «аппаратные средства + программное обеспечение».

Page 47: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Строки ПФ могут быть двух типов в зависимости от первого символа строки:

- Директивы, начинают строку с точки (пример: .PLOT V (n1)). - Определения компонентов, начинают строку с символа (например,

R1 n1 n2 1К). Если входная строка слишком длинна, она может быть разбита на

нескольких строк, с использованием символа + в начале каждой строки (исключая первую).

В строке после точки с запятой «;» начинаются комментарии. В директивах или определениях компонентов следующие формальные

элементы заключаются в < угловые скобки >: <NodeName>: Любой идентификатор или номер (8 символов

максимум). <PowerNode>: Любой из трех идентификаторов узлов

напряжения: VDD, VSS и GND (или цифра 0). VDD и VSS линии напряжения питания; GND (или цифра 0), имеющий нуль вольт в узле.

<InstName>: Любой идентификатор, начинающийся с символа (8 максимум).

<Значение>: Номер (число) с или без десятичной точки. Номера (числа) могут иметь следующие суффиксы:

P (Pico) = X10e-12, N (Nano) = X10e-9, M (Mili) = X10e-3, K (Кило) = X10e+3, МEG (Mega) = X10e+6. Примеры правильных значений: 10e-3, 10.5m, 10meg, 10MEG, 5, 10e-12. Общая ошибка состоит в том, что печатают М вместо MEG. Помните,

что буква М установлена для Mili, а не для Mega. <ModName>: Имя модуля в формате "8.3": 8 символов имени

максимум, 3 символа максимум для расширения, записанные в кавычках (например: "my_file.asm").

Сообщения об ошибках синтаксиса: После того, как вызвана команда Build, если найдена любая ошибка /

предупреждение в проектном файле, появляется сообщение в окне сообщений (Messages). Строка, в которой ошибка, высвечивается в красном цвете.

Минимальный проектный файл

В проектном файле должны быть определены по крайней мере две директивы: директива .MICRO и директива .PROGRAM.

Page 48: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Если больше никакие директивы не включены, VMLAB будет брать нужные значения по умолчанию.

Пример минимального проектного файла: .MICRO "Atmega8" .PROGRAM "EXAMPLE.ASM" Такой минимальный проектный файл представляет МК Atmega8 с

несоединенными ни с чем вводами/выводами, включенный с заданными по умолчанию уровнями напряжений (VDD = 5V, VSS = 0V) и используемой заданной по умолчанию тактовой частотой (1 МГц).

5.3. Использование GNU/WinAVR Cи-компилятора

GNU Cи-компилятор (GCC) должен быть установлен на компьютере.

Рекомендуется инсталлировать бесплатный WinAVR. Для GCC используется специальный набор директив: .TOOLCHAIN, .GCCPATH, .GCCMAKE, .SOURCE. Есть два возможных способа использовать WinAVR-компилятор: 1 режим Auto-make. В этом режиме нет никакой потребности писать make-файл. Такой файл

автоматически создаст VMLAB на основе набора опций, доступных в меню Project | GCC/WinAVR flags. Вызывая эту команду, VMLAB отображает диалог, который позволяет устанавливать различную компиляцию/компоновку, опции и т.д.

Режим Auto-make должен использовать директиву .GCCMAKE АВТО. Пример заголовка проектного файла: .MICRO "AT90S8515" .TOOLCHAIN "GCC" .GCCPATH " c:\winavr\" .GCCMAKE АВТО .SOURCE "gcctest3.c" .TARGET "gcctest3.hex" 2 – написание make-файла вручную. Если вы предпочитаете писать собственный makefile, то должна

использоваться директива .GCCMAKE <имя файла>. Файл будет загружен в окно Code Notebook. Пример заголовка проектного файла, когда make-файл сделан вручную: .MICRO "AT90S8515" .TOOLCHAIN "GCC"

Page 49: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

.GCCPATH " c:\winavr\"

.GCCMAKE "makefile"

.SOURCE "gcctest3.c"

.TARGET "gcctest3.hex" Обратите внимание: для совместимости со старшими версиями, если не

найдена директива GCCMAKE, VMLAB создает файл с заданным по умолчанию именем makefile.

VMLAB GCC-интеграция предусматривает следующие особенности: Нет никакой потребности в дополнительных файлах: bat-файле и т.п. Сообщения об ошибках при выполнении этого процесса

отображаются в окне Messages. Только ошибки синтаксиса требуют изменения оригинала make-формата. Щелчок по сообщению об ошибках показывает соответствующую строку в редакторе. Отладка производится на уровне языка Cи. При запуске проекта

VMLAB ожидает COFF-файл, произведенный make-процессом. Так обеспечьте, чтобы в вашем makefile была конверсия ELF > COFF. Просмотр переменных (включая указатели) доступен в окне Watch и

непосредственно в исходном тексте (дважды щелкните по переменной, чтобы просмотреть). Обратите внимание, что эта версия продукта не поддерживает просмотр ELF-структур и союзов. Автоматически создается шаблон. Если вы выбрали GCC-

спецификацию файлов, команда New Project (меню Project) создает автоматически проектный файл с необходимыми директивами для использования GCC. Меню Options | Code Maker | GCC позволяет вам определять файл шаблона для такого автоматического процесса. По умолчанию установлен WinAVR-стиль. Смешанный Ассемблер/Cи-дисплей: окно Program Memory

отображает одновременно исходный текст Cи и эквивалентные команды Ассемблера. Контекстное меню (правая кнопка) позволяет выполнить некоторые утилиты: сохранить дизассемблированный код и расположить данную строку в редакторе.

Для лучшего просмотра точек входа в функции Cи запишите ваши функции, как в этом примере:

void myFunction(int myParam) { // Открытая скоба здесь для того, .... // чтобы отобразить .... // вход в функцию .... // в окне Program Memory. } Директива .SOURCE указывает только файлы исходного текста,

которые будут загружены в окно Code Notebook для целей отладки/контроля. Двойной код построен согласно командам и правилам,

Page 50: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

установленным в make-файле. Не обязательно загружать все исходные файлы (хорошо проверенные функции, библиотеки и т.д.).

Меню Options | Code Maker | GCC позволяет вам изменять некоторые параметры GCC спецификации файлов. По умолчанию они установлены для использования популярного WinAVR-пакета.

GCC-спецификация оптимизирована так, чтобы использовать этот инструмент, как инструмент сторонних разработчиков. При этом учтите следующее: 1) вы должны писать ваш собственный файл BAT-file, где вызвать make-утилиту; 2) система сообщений об ошибках, упомянутая выше, будет недоступна.

5.4. Использование компиляторов сторонних разработчиков

VMLAB позволяет использовать любой компилятор сторонних

разработчиков (третьих лиц), способный произвести COFF-файл (расширение COF). Из COFF-файла читается только информация для отладки.

Пример ПФ для компилятора от третьего лица с интерфейсом командной строки:

.MICRO "AT90S8515" .TOOLCHAIN "GENERIC" .COFF "gcctest6.cof" .BAT "go.bat" .TARGET "gcctest6.hex" .SOURCE "gcctest6.c" ; Необходимо, если .BAT также использован. Директива .BAT указывает на внешний командный файл go.bat. Этот

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

Пример проектного файла, предназначенного для использования VMLAB только как отладчика (COFF + HEX построены внешним IDE третьего лица):

.MICRO "AT90S8515"

. TOOLCHAIN "GENERIC"

.COFF "gcctest6.cof" ; VMLAB поддерживает расширение COFF!

.TARGET "gcctest6.hex" В этом случае директивы .SOURCE и .BAT не требуются, исходные

файлы, указанные в COFF-файле, будут загружены (.SOURCE директива опциональна).

Page 51: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Символьная информация для отладки, содержащаяся в COFF-файле, позволяет VMLAB обеспечивать следующие возможности: Символьная отладка на уровне языка Cи. Просмотр переменных

(включая указатели) доступен в окне Watch и непосредственно в исходном тексте (двойной щелчок по переменной, чтобы просмотреть). Структуры, союзы, указатели, массивы и битные массивы поддерживаются. Смешанный Ассемблер/Cи вывод на дисплей. Окно Program Memory

показывает вам объединенное представление исходного файла на языке Cи и эквивалентных команд трансляции. Контекстное меню (правая кнопка) позволяет выполнить некоторые утилиты: сохранить дизассемблированный код и расположить данную строку в редакторе.

Поддерживается формат Extended-COFF. Cи-компиляторы, подобно CodeVision или ImageCraft, производят файлы типа Extended-COFF (AVRStudio 4 совместимые), оптимизированные для выполнения на МК AVR.

Советы: 1. Директива .SOURCE указывает только файлы исходного текста,

которые будут загружены в окно Code Notebook для отладки. 2. Директива .BAT опциональна. В MS-DOS/CONSOLE пакетном

файле типа .bat можно указать команды, определенные в продуктах сторонних производителей, при условии что они могут работать с консолью MS-DOS.

3. Для GCC рекомендуется использовать директиву .TOOLCHAIN ‘GCC’.

6 . СОЗДАНИЕ НОВОГО ПРОЕКТА

6.1. Создание нового проекта по шагам

Чтобы создавать новый проект, необходимо только написать новый ПФ

(тип .PRJ). ПФ могут быть написаны непосредственно в текстовом редакторе на пустом месте или скопированы/измены из других (существующих) .PRJ-файлов.

Команда Project | New Project упрощает процесс создания нового ПФ, обеспечивая возможность создать по шаблону простые файлы на языках Ассемблере и Cи. Следуйте за шагами в диалоговом окне Create new project (рис. 19).

Шаг 1. Выберите или создайте рабочий каталог, где будут расположены все файлы (.PRJ код и т.д.). Удобно, чтобы был создан каталог для каждого проекта, хотя это не обязательно. Можно использовать один каталог для всех проектов.

Page 52: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Рис. 19. Шаблон для создания нового проекта по шагам Шаг 2. Выберите надлежащий микроконтроллер. Подключение к

микроконтроллеру внешних аппаратных средств выполняется через доступные электрические узлы (обычно имена порта ввода/вывода). Такие узлы будут добавлены как прокомментированная строка в проектном файле.

Шаг 3. Выберите программные средства, которые нужно использовать, это обычно спецификации файлов (toolchain): стандартный Ассемблер производителя, GCC/WinAVR и Generic COFF.

Шаг 4. Добавьте файлы кода. Напечатайте в блоке редактирования (Code files list), и используйте кнопку Add, чтобы добавить новые файлы кода, которые должны быть созданы. Используйте кнопку Browse + Add, чтобы добавить уже существующие имена файлов. Используйте кнопки Delete и Delete all, чтобы выполнить исправления. Используйте также блок редактирования Target File, чтобы изменить конечный HEX-файл (имя всегда заданно по умолчанию). Полный список файлов кода будет в конечном счете приведен в .PROGRAM- или .SOURCE-директивах, в зависимости от выбранного набора файлов. Этот шаг дополнительный, если вы работаете с GENERIC COFF-based toolchain и используете

Page 53: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

VMLAB только как отладчик (EXE + COFF-файлы, созданные внешним IDE). Если шаг 4 опущен, директива SOURCE не будет выполнена, а VMLAB загрузит исходные файлы, указанные в COFF-файле.

Как только все данные заполнены, щелкните на кнопке OK. Все необходимые файлы будут созданы, и новый проект будет автоматически загружен. Теперь нужно добавить необходимые аппаратные средства к вашему ПФ.

Советы: Все файлы кода плюс PRJ-файл должны быть в одном и том же

каталоге. Только включаемые (include) файлы, упомянутые в проектном коде, могут быть в других каталогах.

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

При работе с GCC/WinAVR вы можете смешивать Cи исходные тексты (расширение .C) с файлами кода трансляции (расширение .S). VMLAB произведет автоматически минимальный файл шаблона в зависимости от расширения.

Включаемые файлы (типов .h, .inc,) могут также быть добавлены как файлы кода. В таком случае они будут загружены в окно Code Notebook. Это можно сделать вручную, напечатав их имена в параметрах директив .PROGRAM или .SOURCE.

Пример: .SOURCE "myCode1.c" "myInclude1.h" "myInclude2.h"

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

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

Частота синхронизации. Быстрее частота медленнее моделирование: гораздо большее количество шагов моделирования необходимо выполнить, чтобы продвинуться на единицу времени.

Порты МК. Чем больше число портов, тем медленнее моделирование. Обратите внимание, что каждый порт электрический узел схемы, который должен быть обсчитан.

Аналоговая схема. Чем более сложная схема вокруг МК, тем медленнее моделирование ( по очевидным причинам).

Восстановление окон. Время работы центрального процессора, затраченное на регенерацию различных окон, добавляется ко времени моделирования. Используйте команду Options | Display Control, чтобы настроить производительность.

Page 54: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

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

См. Options | Code Maker; используют автоматическую загрузку файлов кода. См. Options |

Code Maker (установлена по умолчанию); подавляют предупреждающие сообщения при модификации кода.

См. Options | Editors | Behavior during simulation; используют быстрые клавиши, доступные для многих команд.

6.3. Работа с двумя микроконтроллерами (режим Multiprocess)

VMLAB позволяет имитировать работу двух приложений с разными

МК параллельно, допуская обмен цифровыми сигналами между обоими процессами, через интерфейсы UART, SPI и т.п. соединения. Оба приложения могут быть построены с использованием разных МК, работающих с разными частотами синхронизации, разных наборов файлов проекта и т.п. Если два приложения VMLAB должны работать параллельно, для каждого должен быть собственный файл .PRJ.

Как запускать два приложения параллельно

Зайдите в командное меню Multiprocess |Start 2nd VMLAB. Эта команда начнет второе приложение VMLAB, на экране появится второе главное окно VMLAB 2 (Multiprocess) (рис. 20). В этом режиме оба окна присутствуют на экране монитора компьютера. Текст заголовков окон: VMLAB 1 (Multiprocess) и VMLAB 2 (Multiprocess).

Загрузите и скомпилируйте каждое приложение отдельно. Когда оба приложения будут работать без ошибок, щелкните на

кнопке «Запуск» (зеленый светофор), оба приложения начнут работать синхронно.

При прогоне в режиме Multiprocess команды запуска и перезапуска (Go и Restart) в обоих приложениях эквивалентны: щелчок на кнопке в одном окне перешлет команду другому окну.

В пошаговом режиме прерывание на следующей инструкции будет только в окне, где щелкнули по кнопке «Выполнить шаг» (Step). Очевидно, другой MK не может прерываться на границе инструкции, поскольку частоты синхронизации могут быть разными.

Page 55: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Рис. 20. Экран монитора при работе в мультипроцессном режиме

Ограничения: Анимация кода не поддерживается в режиме Multiprocess. Только цифровыми сигналами могут обмениваться процессы. Любое

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

Режим Multiprocess значительно замедляет моделирование из-за необходимости обеспечения связи между процессами и синхронизации.

7. ПРИМЕРЫ ПРОЕКТОВ

Пример написания проектного файла

В качестве примера для написания проектного файла возьмем

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

Page 56: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

приведена электрическая схема, формирующая три синусоидальные напряжения: U, V и W, сдвинутые на угол 120о. Для этого используется микроконтроллер AT90S8515 с подсоединенной к нему электрической схемой (см. рис. 21).

Кнопка «Реверс» меняет последовательность фаз для осуществления реверса электродвигателя, она подсоединена ко входу РВ7 порта В.

Сопротивлениями R3 и R6 можно изменять амплитуду и частоту синусоидальных напряжений. Они подсоединены к мультиплексированному входу АЦП через выводы РА0 и РА1 порта А.

Опорное напряжение АЦП подается на вход AREF МК через делитель на сопротивлениях R1 и R2 от напряжения питания VDD.

Рис. 21. Электрическая схема устройства на базе микроконтроллера

На выходах PD4, PD5 и PD7 порта D МК выводит импульсы напряжения, промодулированные по ширине по синусоидальному закону. К этим выводам подсоединены RC-цепочки, которые сглаживают импульсы и формируют синусоидальные напряжения на узлах U, V и W.

U

V

W

Neutral

R8 100k

C4 100n

C5 100n

C7 100n

R4 10k

R9 100k

R5 10k

R10 100k

R7 10k

VSS

VDD

R3

R6

«Амплитуда»

«Частота»

R11

«Реверс»

K1

R1 1k

R2 100k

PA0

PA1

PB7

PD4

VSS

AREF

PD5

PD7

AT90

S853

5

Page 57: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

К этим узлам подсоединены 3 резистора для получения напряжения нейтрали.

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

1. Название. 2. Назначение устройства. 3. Марка микроконтроллера. 4. Подключаемые файлы. 5. Другие директивы, определяющие параметры моделирования. 6. Описание электрической схемы. 7. Перечень сигналов, выводимых на экран виртуального

осциллографа. 8. Другие указания комментарии. Листинг проектного файла:

; ********************************************************* ; Генератор трехфазного напряжения ; Этот проект предназначен для моделирования устройства, ; вырабатывающего трехфазное напряжение с управлением ; его частотой, амплитудой и порядком следования фаз. ;Синусоидальные напряжения фаз сдвинуты на угол 120о. ; ********************************************************* .MICRO "AT90S8535" ; объявление используемого МК .PROGRAM "svm116sp.asm" ; указание исходного файла .TRACE ; Активизация трассировки .POWER VDD=5 VSS=0 ; Узлы напряжения питания .CLOCK 8meg ; частота синхронизации МК = 8 МГц. .STORE 250m ; Время записи трассировки 250 мс. ; ; В этом примере к МК подключаются 2 переменных резистора ; для управления амплитудой и частотой. Их работа моделируется ; передвижением движков S1 и S2 на панели управления. ; Изменение амплитуды в пределах 2,5 – 5 В. ; Кнопка К1 на панели управления используется для переключения ; последовательности фаз напряжений (реверса электродвигателя). ; V1 PA0 VSS SLIDER_1 (2.5 5) ; Регулятор «Амплитуда» V2 PA1 VSS SLIDER_2 (2.5 5) ; Регулятор «Частота»

Page 58: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

K1 PB7 VSS LATCHED ; Кнопка «Реверс» R1 PB7 VDD 10K ; Резистор для подачи напряжения на кнопку Rref1 VDD AREF 1K ; Резисторы для подачи опорного напряжения Rref2 AREF VSS 100K ; на АЦП ; ;Следующие элементы электрической цепи используются для ; сглаживания напряжений фаз ( RC-фильтры нижних частот) R4 PD4 PhaseU 10k ; Подключение сопротивления 10 кОм. R5 PD5 PhaseV 10k R7 PD7 PhaseW 10k C4 PhaseU VSS 100n ; Подключение конденсатора 100 нФ. C5 PhaseV VSS 100n C7 PhaseW VSS 100n R8 PhaseU Neutral 100k R9 PhaseV Neutral 100k R10 PhaseW Neutral 100k .plot v(PhaseU) v(PhaseV) v(PhaseW) ; Вывод на экран виртуального

;осциллографа напряжений фаз U, V и W.

Чтобы посмотреть данный проект, в работе нужно: 1. Запустить программу VMLAB: ПУСК | Все программы | VMLAB. 2. В главном окне VMLAB открыть данный проект: Project | Open

Project. Открыть первый файл C:\ LAB\AVR_demo\3phase.prj. 3. Включить команду Build из меню Project или нажать кнопки на

панели инструментов. 4. Включить команду Go из меню Run или нажать кнопки на панели

инструментов. На экране компьютера должны быть окна Scope и Control Panel. Если

их нет, то включите их через меню View. В окне Scope появятся 3 фазы напряжения. В окне Control Panel вы можете при помощи указателя мышки передвигать движки переменных резисторов S1 и S2, меняя амплитуду и частоту напряжений. Также при помощи мышки можно переключать последовательность фаз, нажимая на кнопку 1 вспомогательной клавиатуры 4х4 в панели управления (рис. 22 и 23).

На рис. 22 видно, что фаза U опережает фазу V, которая опережает фазу W. При этом частота и амплитуда напряжений минимальна (на экране осциллографа укладывается 2 периода синусоид).

На рис. 23 видно, что фаза W опережает фазу V, которая опережает фазу U. При этом частота и амплитуда синусоидальных напряжений примерно в 2,5 раза больше, чем на рис. 22.

Page 59: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Рис. 22. Окна осциллографа и панели управления с нажатой кнопкой 1

Рис. 23. Окна осциллографа и панели управления с отпущенной кнопкой 1 и поднятыми движками переменных резисторов S1 и S2

PHASEU

PHASEV

PHASEW

PHASEU

PHASEV

PHASEW

Page 60: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Примеры, содержащиеся в папке VMLAB Примеры проектов находятся в папке, созданной при инсталляции

программы VMLAB, по умолчанию эта папка находится на диске С: C: \ VMLAB\ VMLAB примеры для МК AVR: Имеются два каталога, содержащие демонстрационные примеры: C: \ < инсталляционная директория > \AVR_DEMO содержит

несколько примеров на Ассемблере для МК AVR. C: \ < инсталляционная директория > \WinAVRdemo содержит

несколько примеров на Cи для AVR, основанные на популярном WinAVR GCC пакете.

Примеры для МК ST62 фирмы ST Microelectronics: Имеются три каталога, содержащие демонстрационные примеры: C: \ < инсталляционная директория> \ST6_DEMO содержит несколько

примеров, основанных на микроконтроллере ST62. C: \ < инсталляционная директория > \DEMOK25 содержит

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

C: \ < инсталляционная директория > \TUTORIAL содержит учебник по VMLAB, состоящий из шести примеров: STEP01. PRJ, STEP02. PRJ, STEP03. PRJ, STEP04. PRJ, STEP05. PRJ, STEP06. PRJ

Если вы не знаете МК ST62, то откройте/запустите эти проекты и просмотрите .PRJ- и .ASM-файлы. Они заполнены большим количеством комментариев, что позволит просмотреть особенности работы VMLAB.

Контрольные вопросы

1. Каковы назначение и возможности Visual Micro Lab? 2. Что такое виртуальная модель? 3. Каков порядок работы с VMLAB? 4. Какие режимы МК не моделируются Visual Micro Lab? 5. Как можно просмотреть и изменить содержание ячеек памяти МК? 6. Какие настройки есть у виртуального осциллографа? 7. Как запустить инспектор отладки? 8. Какова структура проектного файла? 9. Каковы возможности автоматизации создания проектного файла? 10. Каковы назначение и возможности панели управления? 11. Какие Си-компиляторы поддерживает VMLAB? 12. Как смоделировать передачу информации между двумя МК?

Page 61: VISUAL MICRO - СибАДИbek.sibadi.org/fulltext/ED1518.pdf · инструментов, рабочего поля и строки состояния (рис.1). Рис. 1. Главное

Учебное издание

Зубарев Александр Александрович

Программная эмуляция устройств на микроконтроллерах в среде Visual Micro Lab

Учебное пособие

* * *

Редактор И.Г. Кузнецова

Подписано к печати 15.01.07 Формат 60х90 1/16. Бумага писчая

Оперативный способ печати Гарнитура Times New Roman

Усл. п. л. 3,75, уч. - изд. л. 3,75 Тираж 200 экз. Заказ

Цена договорная

Издательство СибАДИ 644099, Омск, ул. П.Некрасова, 10

Отпечатано в ПЦ издательства СибАДИ 644099, Омск, ул. П.Некрасова, 10