Proteus самоучитель учебный. Система моделирования ISIS Proteus

  • 17.03.2024

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

Главным преимуществом и отличием Протеус от других подобных программ для симуляции работы электрических цепей, — это возможность выполнять симуляцию работы микропроцессоров и микроконтроллеров (МК). Библиотека Proteus содержит такие основные типы МК: AVR, ARM, PIC, Cortex.

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

Также в Протеусе встроены инструменты для автоматизированной разработки печатных плат и для создания их 3D моделей.

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

Настройка Proteus 8.4

Любая настройка начинается с запуска. В появившемся окне кликаем по значку диода с конденсатором Schematic Capture (Схемотехника).

После этого откроется окно с пустым полем.

Теперь добавим микроконтроллер ATmega8, резистор и светодиод.

По умолчанию установлен подходящий режим Component Mode поэтому, чтобы попасть в меню выбора электронных и других элементов, достаточно кликнуть по кнопке P, расположенной на панели DEVICE (устройство). После этого откроется окно, в котором необходимо выбрать в меню Category (Категории) Microprocessors ICs (микропроцессоры), в Sub-Category (Подкатегории) – AVR Family . Далее в окне Results находим и выделяем МК ATMEGA8 . Кликаем по кнопке OK .

После этого он появится в меню окна DEVICE и его уже можно перетягивать мышкой в рабочую область.

Аналогичным образом добавляем резистор и светодиод.

Светодиоды находятся в категории Optoelectronics (Оптоэлектроника) и далее в подкатегории LEDs . В данном примере он выбран зеленого цвета LED-GREEN .

Теперь собираем схему, как показано на рисунке ниже. К выводу МК PC0 подсоединяем резистор R1, который соединяем с анодом светодиода D1. Катод светодиода соединяем с «землей». Элемент «земля» находится в меню вкладки Terminals Mode .

Чтобы изменить значение сопротивления резистора R1 нужно дважды кликнуть мышкой по нему. В открывшемся окне устанавливаем 300 Ом в строке Resistance (сопротивление).

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

Запись программы в память микроконтроллера

Теперь осталось записать наш код в виртуальный МК. Дважды кликаем по нему мышкой и в появившемся новом указываем путь к файлу с кодом. Место расположения файла находим кликнув по значку в виде открытой папки в строке Program File .

В папке с проектом находим папку Debug и в ней выбираем файл с расширением HEX . После этого нажимаем кнопку Открыть .

  • 2.7. Верхние (подключаемые) тулбары.
  • 2.8. Набор кнопок левого тулбара. Связь их с селектором объектов и окном предпросмотра.
  • 2.9. «Как пройти в библиотеку? В три часа ночи?» - (к/ф «Операция Ы»).
  • 2.10. Подбираем компоненты, расставляем их в проект.
  • 2.11. Приемы быстрого редактирования. Разводка проводов и шин.
  • 2.12. Приемы быстрого редактирования. Маркировка проводов и шин. Перенумерация элементов и назначение им свойств с помощью Property Assigment Tools.
  • 2.13. Свойства моделей микроконтроллеров. Задание численных значений и размерности.
  • Прошивка» микроконтроллера в ISIS.
  • 2.15. Первый неудачный запуск симуляции. Пляски с бубном или анализ возможных причин неработоспособности в симуляторе реально работающей схемы.
  • 2.17. Полезные свойства пробников.
  • 2.18. Digital Graph – применяем на практике.
  • 2.19. Свойства цифрового графика.
  • 2.20. Дополнительные возможности анализа графика при максимизации окна.
  • 2.21. Сравнение с работающим проектом динамической индикации. Находим причину глюка.
  • 2.22. Меню и опции графиков в развернутом (Maximize) окне.
  • 2.23. Подключаем файл микропрограммы для пошаговой отладки.
  • 2.24. Режим пошаговой отладки программы в ISIS.
  • 2.25. Контекстное меню окна пошаговой отладки.
  • 2.26. Меню Debug в развернутом виде.
  • 2.28. Меню Debug в развернутом виде (окончание) . Всплывающие окна. Суперполезное окно Watch Window.
  • 2.29. Исследуем исходник на ассемблере. Чем и как его открыть и редактировать.
  • 2.30. Реальные показания индикации в окне Watch Window.
  • 2.31. Корректируем ассемблерный файл. «И все таки она вертится».
  • 2.32. Финальный вариант проекта с рабочей индикацией.
  • 2.33. Выводы по применению динамической индикации в Протеусе и в реальности. Дополнительные ресурсы.
  • 2.34. Заключение к первой части.
  • 2. Установка и запуск Proteus. Интерфейс программы ISIS.

    2.1. Где взять инсталляционный пакет Протеус.

    На официальном сайте компании Labcenter Electronics доступна последняя демо- версия на данный момент v.7.5.SP3. Она имеет существенные ограничения: отсутствует опция сохранения проекта, симулируются в реальном времени в основном примеры из прилагаемой папки Samples . Учитывая географическую удаленность « туманного Альбиона» и приличный размер инсталлятора – более 60 Мбайт, я бы не рекомендовал скачивание в ознакомительных целях данного пакета тем, у кого медленное Интернет- соединение. Но мир не без « добрых» людей. Давать здесь конкретные ссылки на сайты файлообменники нет смысла, жизнь файлов там ограничена по времени. Поэтому воспользуйтесь поиском в Google или другом поисковике с параметрами Proteus v.7 (или 6), Proteus VSM или Proteus ISIS и вы легко найдете свежие ссылки. Только не стоит использовать поиск по одному слову « Протеус» или «Proteus», если вы не стремитесь приобрести одноименный силовой тренажер для накачки мускулатуры.

    2.2. Установка программы на компьютер.

    Для установки необходимо запустить инсталляционный пакет Setup.exe. В ходе установки Proteus (если это не демо версия) запросит путь к файлу лицензии. Если на этот момент файл лицензии отсутствует можно просто выбрать вариант наличия лицензии на сервере, а окно сервера оставить пустым, но перед первым запуском все равно необходимо будет установить лицензию файл licence.lxk, воспользовавшись менеджером лицензий. По умолчанию программа устанавливается в директорию: Program Files\ Labcenter Electronics\ Proteus 7 , однако при желании можно изменить путь. Как уже отмечалось для профессиональной версии после установки необходимо установить лицензию. Для этого запускается программа менеджер лицензий (рис .1):

    ПУСК=>Все программы=>Proteus x Professional=>Licence Manager

    в левом окне через кнопки Browse For Key File (вручную) или Find All Key File (автопоиск) выбирается путь к файлу лицензий, затем нажимается кнопка Install , которая становится доступной при щелчке по нужной лицензии в левом окне, и выбранная информация должна появиться в правом окне. После чего менеджер можно закрыть. Обращаю Ваше внимание, что напротив изображения ключей перечисляются доступные для данной лицензии функции программы.

    Рис.1

    2.3. Первый запуск и первые проблемы.

    I. При попытке запуска ISIS или ARES появляется окно с сообщением :

    Cannot find a valid licence key for ISIS (ARES) on this computer.

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

    II. При запуске симуляции (в том числе и прилагаемых примеров из папки Samples) она не

    функионирует, а в Simulation log (Рис .2) появляется сообщение:

    Cannot open "C:\DOCUME~1\=ТЕКПОЛЬЗ=\Local Setting\Temp\LISAxxx.SDF’ Simulation FAILED due to fatal simulator errors

    где вместо \=ТЕКПОЛЬЗ=\ непонятные закорючки (крякозябры)

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

    Есть два пути решения этой проблемы:

    1) Изменить имя пользователя на английский вариант .

    2) Зайти в Мой компьютер => Свойства=> Дополнительно=> Переменные среды. В верхнем окне, выбрав переменную TEMP, нажать Изменить и вместо %USERPROFILE%

    набрать %ALLUSERPROFILE% (при этом необходимо, чтобы в папке Document and

    Setting\All Users имелись соответствующие папки Local Settings и Temp их можно просто перекопировать из текущего пользователя (папки СКРЫТЫЕ) или создать вручную). Можно по совету Nemo78 изменить путь на %SYSTEMROOT%\Temp (именно так без Local Settings), тогда Протеус будет использовать папку TEMP в системном каталоге Windows.

    III. Симуляция запускается , но через несколько секунд (минут) программа закрывается. Симуляция работает только с некоторыми типами моделей. Примеры из Samples

    симулируются без проблем.

    Коментарий: Отсутствует лицензия на одну из используемых моделей. Вы используете « неофициальную» (крякнутую) версию и кряк либо не установлен, либо неправильно установлен. Протеус имеет многоступенчатую защиту от нелегального использования, которая многократно проверяется в процессе симуляции. Защищаются файлы как в основной папке программы \BIN (Isis.exe, Ares.exe, Licence.dll, Prospice.dll), так и в папке библиотек моделей \Models (Avr.dll, Lcdalfa.dll, Lcdpixel.dll, LedMPX.dll, Pic16.dll, Pic18.dll, Mcs8051.dll и некоторые другие модели). Поэтому симуляция будет работать только с теми библиотеками, на которые имеется лицензия, или к которым применялась « доработка».

    2.4. Интерфейс программы ISIS.

    Ниже приведено основное окно программы ISIS с пояснениями по назначению основных элементов интерфейса. В дальнейшем я буду придерживаться именно такой терминологии в несколько сокращенной форме, т. е.: левое меню, верхнее меню команд, верхнее основное меню, кнопки симуляции, селектор объектов. Окно программы немного не соответствует полностью развернотому окну, поскольку при уменьшении размеров некоторые меню изменили положение. Так же как и во многих других программах для Windows меню можно перетаскивать в удобное для вас место внутри окна программы. Зацепив через левую кнопку мышки за стартовый элемент меню (прямоугольная серая полоска для горизонтальных меню слева, а для вертикальных – сверху) не отпуская кнопки перетаскиваете, например, меню ориентации (на картинке стартовый элемент виден над стрелокй вращения вправо) внутри окна к правой вертикальной границе окна и после отпускания кнопки оно « приклеится» вертикально справа. Аналогично можно поступить и с любым из верхних командных меню. Таким образом можно настроить удобное для себя расположение элементов программы. Другая приятная « фишка» программы: если щелкнуть внутри окна селектора правой кнопкой мышки и во всплывающем окне щелкнуть левой кнопкой по функции Auto Hide, то селектор будет автоматически сворачиваться, если на него не наведен курсор мышки. Это позволяет на мониторах с форматом 4:3 выиграть некоторое пространство для окна редактирования. Отмена этого режима повторными действиями.

    Рис.2

    2.5. Папка Samples - кладезь примеров проектов для начинающих.

    При первом запуске ISIS появляются два всплывающих окна. В одном из них будет предложено проверить обновления – здесь можно смело поставить галочку – « больше не показывать». Другое окно предлагает открыть многочисленные примеры Sample Designs, прилагаемые вместе с программой. Если Вы действительно начинающий пользователь, не торопитесь ставить аналогичную галку блокировки повторного показа. Ну а если уже заблокировали это окно – не отчаивайтесь. Быстрый доступ к примерам всегда возможен через верхнее меню Help => Sample Designs . Почему я так настойчиво рекомендую ознакомиться с примерами? Да потому- что третья

    часть вопросов приходящих на форум имеют готовые ответы в прилагаемых с программой

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

    на самых значимых для начинающих и приложу оригинальный файл SAMPLES.HLP от версии 6.9sp5. Конечно, в нем отсутствует описание примеров для новых МК добавленных в следующих версиях, а также примеров программных генераторов из версий 7.4 и 7.5, но для владеющих даже начальным английским этот Help большое подспорье. Тем более, что даже с установленными

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

    Schematic & PCB Layout - одна из самых интересных папок для начинающих. Все проекты, за исключением Shiftpcb , содержащиеся в ней не предназначены для симуляции в реальном времени но при этом имеют как законченный вариант схемы xxx.DSN в ISIS, так и проект платы xxx.LYT в

    Обратите внимание на проекты Cpu с использованием МК Z80 и Dbell – дверной звонок. В этих проектах имеются промежуточные файлы PSB (плат) с именами Cpuu.LYT и Dbellu.LYT с не установленными на плату компонентами. Открыв эти проекты в ARES Вы можете самостоятельно опробовать функцию автоматического размещения компонентов. Достаточно выбрать в верхнем меню Tools => Auto Placer и в раскрывшемся окне просто щелкнуть OK. В проектах Cpu.LYT и Dbell.LYT компоненты уже размещены, но можно аналогично попробовать автотрассировку дорожек Tools => Auto Router . Проекты Cpur.LYT и Dbellr.LYT содержат уже оттрассированные платы. На любом этапе в ARES через верхнее меню Output => 3D Visualization можно вызвать трехмерное

    изображение платы и зацепив ее левой кнопкой мыши повращать и обследовать со всех сторон

    (Рис .3).

    Рис.3

    Отдельно остановлюсь на проекте Shiftpcb.DSN – 16- ти битный сдвиговый регистр на мелкой логике. Он заслуживает внимания по двум причинам. Во- первых в нем применена 4- х ступенчатая иерархическая структура, т. е. это сложный проект. На первом листе помещены четыре модуля четырехразрядных сдвиговых регистров. Чтобы посмотреть структуру каждого модуля необходимо щелкнуть по нему правой кнопкой мышки (элемент станет красным) и выбрать во всплывающем меню опцию Goto Child Sheet (Ctrl+C) – переход на дочерний лист. Аналогично можно попасть на следующий уровень и далее до конечного, содержащего обычный RS- триггер на элементах 2 И- НЕ.

    Возврат на предыдущий уровень также щелчком правой кнопки щелчком только по свободному месту в окне и выбор опции Exit to Parent Sheet (возврат на родительский лист). Во- вторых здесь

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

    Simulation is not running in real time due to excessive CPU load

    Окно откроется, если щелкнуть по Simulation Log левой кнопкой мыши. Сразу же привыкайте к принципу светофора в Simulation Log : красный знак – грубая ошибка – симуляция невозможна; желтый (« горчичник») – предупреждение – симуляция может и выполняться, но результат некорректен и зеленый – симуляция протекает нормально без ошибок. Поэтому, чтобы избежать предупреждения необходимо в свойствах генераторов D и Clk (доступны через правую кнопку мыши

    опция Edit Properties Ctrl+E) установить соответственно Pulse width 200m и 100m (в данном случае миллисекунды). Запустив кнопкой Play симуляцию после этого можно на контактах разъема J2 наблюдать состояние выходов сдвигового регистра.

    В этой же папке содержатся другие примеры:

    EPE.DSN – большой проект программатора EPROM на трех листах (переход между листами

    доступен через верхнее меню Design или щелчком правой кнопко мышки по свободному месту в окне редактирования и выборе соответствующего листа 1, 2 или 3). На некоторых листах содержатся субмодули. Вы уже усвоили, что они имеют темно- синюю обводку и соответственно доступные дочерние листы.

    FEATURES.DSN – в проекте показаны различные способы выполнения схем в ISIS. Обратите внимание на правый верхний угол: вариант стереофонического предусилителя, оформленный в виде 2- х субмодулей с дочерними листами.

    PPSU.DSN – очень простой проект стабилизатора напряжения. Имеет два варианта PSB: PPSU.LYT

    – для микросхемы в корпусе DIL8 (монтаж в отверстия) и PSMT.LYT - м/ сх в планарном корпусе SO8. Обратите внимание, что DIL – Dual-In-Line почему- то у нас в России принято называть DIP. Если для PSB в Протеусе выбрать корпус DIP Dual-In-Plane – отверстий в плате вы не увидите! « Гробик» будет выведен в ARES как планарный с шагом 2,54 мм.

    SIGGEN.DSN – проект генератора сигналов. В хелпе лихо заявлено, что симулируется – да, но после значительной правки.

    STYLE1, 2, 3 – примеры различного оформления одного и того же проекта.

    THERMO – термометр с термопарой в качкестве датчика и индикацией на семисегментных индикаторах. Здесь не симулируется, но в папке VSM for PIC18\ MAX6675 Thermometer есть работающий проект с программой на PICC18 и проектом для MPLAB.

    dsPIC33_REC – проект устройства регистрации давления аналогично предыдущему имеет рабочий

    дубль в папке VSM for dsPIC33.

    Interactive Simulation – папка содержит подпапку Animated Circuits с очень простыми анимированными примерами для начинающих .

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

    MVCR – ряд примеров с использованием виртуальных приборов вольтметр/ амперметр. PCV – примеры с потенциометром ограничителем тока.

    Intres – примеры на внутреннее сопротивление источника тока. Cap – три примера работы конденсатора.

    AC – примеры с переменным током.

    Diode – примеры на применение диодов и диодных мостов. Inrel – примеры сприменения индуктивностей и реле. TRAN – семь примеров с транзисторами.

    Opamp – шесть различных примеров с операционными усилителями. Заслуживают особого внимания. Там есть вариант включения ОУ, как компаратора (Opamp1.DSN). Все это анимировано, обвешано виртуальными приборами, можно покрутить и посмотреть на реакцию ОУ.

    Osc – примеры генераторов. Osc03.DSN и Osc04.DSN на таймере 555, содержащем дочерний лист с внутренней структурой таймера на примитивах Spice. Это « стартовая площадка» для освоения создания собственных моделей.

    Comb и Seq – примеры для освоения работы логических цифровых микросхем.

    Ну и несколько познавательных примеров: TRAFFIC.DSN – светофор, COUNTER.DSN – четырехразрядный счетчик на 74LS390, TTLCLOCK.DSN – часы на TTL логике, LISSAJOUS.DSN – применение виртуального осциллографа для наблюдения фигур Лиссажу и LM3914.DSN – применение одноименного драйвера для управления линейной светодиодной шкалой.

    Остальные подпапки из Interactive Simulation содержат примеры проектов на использование одноименных виртуальных инструментов из библиотек Протеуса: Counter Timer – применение виртуального таймера/ счетчика в режимах таймера и частотомера. Motor Examples – примеры проектов с шаговыми двигателями. Pattern Generator – примеры применения виртуального генератора кодовой последовательности. COMPIM Demo – пример использования виртуального COM- порта и виртуального терминала в Протеусе. Последнему для выполнения симуляции необходимо наличие на компьютере двух реальных COM- портов, соединенных нуль- модемным кабелем, либо установки на компьютер программы виртуального COM- порта для имитации соединения с реальным. При этом в режиме симуляции можно организовать обмен данными через это соединение из программы ISIS с любой программой на компьютере, позволяющей работать с COM- портом (например, стандартной Hyper Terminal).

    Остальные подпапки из папки Samples содержат примеры проектов с использованием соответствующих серий микроконтроллеров (например VSM for PIC16 – примеры с МК Microchip PIC16). Я не буду их рассматривать подробно сейчас, так как к наиболее интересные будут рассматриваться позже, по мере освоения программы ISIS.

    Здесь только перечислю, что Graph Based Simulation содержит примеры применения различных типов графиков для исследования схем, к папке Tutorials мы обратимся при создании собственных моделей. Особо отмечу две папки: VSM MPLAB Viewer и VSM AVR Studio Viewer. Эти папки содержат примеры совместного использования соответствующих инструментариев. При этом

    Цель данного руководства - показать вам на примере создания простой схемы, как проводить интерактивное моделирование, используя Proteus VSM. Пока мы сконцентрируемся на использовании Активных Компонентов (Active Components ) и возможностях отладки редактора ISIS, мы также рассмотрим основы трассировки и основы управления схемами. Полный обзор этих тем может быть найден в справочной системе ISIS .

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

    Пока мы будем рисовать схему с нуля, законченную версию можно будет найти по пути “Samples\Tutorials\Traffic.DSN” в папке, где у вас установлен Proteus. Пользователи, которые знакомы с основными способами работы в ISIS, могут выбрать уже готовую схему и перейти к разделу о программе микроконтроллера. Однако, обратите пожалуйста внимание на то, что файл этого проекта содержит предумышленную ошибку - прочитайте для более подробной информации.

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

    Вычерчивание схемы

    Размещение элементов

    Начнем с размещения двух светофоров и PIC16F84 на новом макете схем. Начните новый проект, выберите иконку Компонент (Component ) (все иконки имеют всплывающие подсказки и контекстно-зависимую справку, что помогает их использованию). Затем левый клик на букве ‘P’ наверху переключателя объектов (Object Selector ), чтобы открыть окно Браузера Библиотек (Library Browser ), которое появится поверх окна редактора (для более подробной информации смотрите Основы Ввода Схем в справочной системе ISIS).

    Нажмите кнопку P на клавиатуре и напечатайте ‘ Traffic ’ в поле “Ключевые слова” (Key words ), и дважды кликните на результате, чтобы переместить светофоры в переключатель объектов. Сделайте то же самое для PIC16F84A.

    Единожды выбрав в проект светофоры и PIC16F84, закройте Браузер Библиотек и кликните один раз на PIC16F84 в переключателе объектов (это выделит ваш выбор и элемент будет показан в окне предварительного просмотра в правом верхнем углу экрана). Теперь левый клик на окне редактора, чтобы поместить элемент на схему, - повторите процесс, чтобы разместить на схеме два светофора.

    Перемещение и ориентация

    Мы создали узлы схемы, но случайно не идеально разместили их. Чтобы переместить элемент, кликните на нем правой кнопкой мыши (это выделит элемент), затем зажмите левую кнопку мыши и перетащите элемент (вы увидите контур элемента “следующий” за курсором мыши) на требуемую позицию. Когда контур будет там, где вы хотите, отпустите левую кнопку мыши, и элемент переместится на заданную позицию. Обратите внимание, что в данный момент элемент всё еще выделен - правый клик на пустом месте окна редактора вернет элементу нормальное состояние.

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

    Размечайте схему осмысленным способом (например, исходя из простоты восприятия), двигайте и поворачивайте элементы, как требуется. Если у вас возникли проблемы, советуем поработать с руководством в справочной системе ISIS - ISIS Tutorial .

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

    Масштаб и захват

    Как правило, при разводке схемы полезна возможность изменения масштаба требуемой территории. Нажатие клавиши F6 или иконки Увеличить (Zoom In ) увеличит масштаб вокруг текущей позиции мыши, или, в качестве альтернативы, зажмите клавишу SHIFT , и зажав левую кнопку мыши, выделите территорию, которую нужно увеличить. Чтобы уменьшить масштаб, нажмите клавишу F7 или иконку Уменьшить (Zoom Out ), или, если вы хотите уменьшить так, чтобы видеть всю схему целиком, нажмите клавишу F8 или используйте колесо мыши, чтобы уменьшить или увеличить требуемую территорию. Соответствующие команды могут быть доступны меню Вид (View ).

    ISIS имеет очень мощные возможности, называемые Real Time Snap . Когда курсор мыши находится поблизости от конца вывода или проводника, местоположение курсора захватывается этими объектами. Это позволяет легко редактировать и управлять схемой. Эта возможность может быть найдена в меню Инструменты (Tools ) и по умолчанию включена.

    Более подробная информация о масштабе и захвате может быть найдена в справочной системе ISIS - Окно Редактора.

    Трассировка соединений

    Простейший способ соединения схемы - это использовать опцию автотрассировки проводника (Wire Auto Router ) в меню Инструменты (Tools ). Убедитесь, что она включена (должна быть видна отметка в меню слева от опции). Для более подробной информации смотрите раздел “Автотрассировка проводника” в Инструкции ISIS . Увеличьте PIC, чтобы все выводы были видны, затем поместите курсор мыши на конец вывода 6 (RB0/INT). Вы увидите маленький ‘х’-курсор на конце мыши. Это показывает, что мышь в правильной позиции для присоединения проводника к этому выводу. Левый клик мышью, чтобы начать соединение, и затем переместите мышь к выводу, соединенному с красным фонарём одного из светофоров. Когда вы снова получите ‘х’-курсор над этим выводом, кликните левой кнопкой мыши, чтобы завершить соединение. Повторите этот процесс для подключения обоих светофоров как показано образце схемы.

    Пара вопросов о процессе разводки, заслуживающих упоминания:

    • Вы можете делать соединения в любом режиме - ISIS достаточно сообразителен, чтобы понять, что вы делаете.
    • Когда включена автотрассировка проводника (Wire Auto router ), разводится вокруг препятствий и, как правило, ищется удобная траектория между соединениями. При этом способе, как правило, вам только нужно сделать левый клик на обоих концах соединения и предоставить ISIS возможность позаботиться о пути между ними.
    • ISIS автоматически переместит экран, если вы затронете границу окна редактора, перемещая проводник. Учитывая это, вы можете увеличить масштаб до подходящего уровня и, при условии, что вы знаете приблизительную позицию элемента-цели, просто подталкивайте экран, пока не увидите его. В качестве альтернативы, вы можете увеличивать и уменьшать масштаб, пока перемещаете проводник (используя клавиши F6 и F7).

    В заключение, мы должны соединить вывод 4 с клеммой питания. Выберите иконку “Клемма” (Terminal ) и выделите “Питание” (POWER ) в переключателе объектов. Теперь сделайте левый клик на подходящем месте и поместите клемму. Выберите подходящую ориентацию и присоедините клемму к выводу 4, используя тот же способ, что и раньше.

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

    Написание программы

    Листинг исходной программы

    Для успеха нашей консультации мы подготовили следующую программу, которая записывается в PIC для управления светофорами. Эта программа приготовлена в файле TL.ASM и может быть найдена в папке “Samples\Tutorials” .

    ; PIC16F844 is the target processor LIST p=16F84 ; Include header file #include "P16F84.INC" ; Temporary storage CBLOCK 0x10 state l1,l2 ENDC org 0 ; Start up vector. goto setports ; Go to start up code. org 4 ; Interrupt vector. halt goto halt ; Sit in endless loop and do nothing. setports clrw ; Zero in to W. movwf PORTA ; Ensure PORTA is zero before we enable it. movwf PORTB ; Ensure PORTB is zero before we enable it. bsf STATUS,RP0 ; Select Bank 1 clrw ; Mask for all bits as outputs. movwf TRISB ; Set TRISB register. bcf STATUS,RP0 ; Reselect Bank 0. initialise clrw ; Initial state. movwf state ; Set it. loop call getmask ; Convert state to bitmask. movwf PORTB ; Write it to port. incf state,W ; Increment state in to W. andlw 0x04 ; Wrap it around. movwf state ; Put it back in to memory. call wait ; Wait:-) goto loop ; And loop:-) ; Function to return bitmask for output port ;for current state. ; The top nibble contains the bits for one set ;of lights and the lower nibble the bits for ;the other set. Bit 1 is red, 2 is amber and ;bit three is green. Bit four is not used. getmask movf state,W ; Get state in to W. addwf PCL,F ; Add offset in W to PCL to calc.goto. retlw 0x41 ; state==0 is Green and Red. retlw 0x23 ; state==1 is Amber and Red/Amber retlw 0x14 ; state==3 is Red and Green retlw 0x32 ; state==4 is Red/Amber and Amber. ; Function using two loops to achieve a delay. wait movlw 5 movwf l1 w1 call wait2 decfsz l1 goto w1 return wait2 clrf l2 w2 decfsz l2 goto w2 return END

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

    Прикрепление исходного файла

    Следующий этап - присоединить программу к нашей схеме, чтобы мы могли успешно моделировать ее поведение. Сделаем это через команды меню Исходник (Source ). Теперь перейдите в меню Source и выберите команду “Добавить/удалить исходные файлы” (Add/Remove Source Files ). Нажмите кнопку New, зайдите в папку “Samples\Tutorials” и выберите файл TL.ASM. Нажмите “открыть” и файл появится в выпадающем списке имен файлов исходных кодов (Source Code Filename ).

    Теперь нужно выбрать программу формирования кода для файла. Для нашей цели подойдет программа MPASM. Эта опция будет доступна из выпадающего списка Code Generation Tool , выберите ее обычным способом, кликая левой кнопкой мыши(обратите внимание, что если вы планируете использовать новый ассемблер или компилятор, вам нужно зарегистрировать его, используя команду “Определить программу формирования кода” (Define Code Generation Tools )).

    В завершение, необходимо установить с каким файлом работает процессор. В нашем примере это будет tl.hex (hex-файл, генерируемый MPASM, являющийся результатом трансляции tl.asm). Чтобы прикрепить этот файл к процессору, кликните на pic-контроллере сначала правой кнопкой мыши, а потом левой. Это откроет диалоговую форму редактирования элемента, которая содержит поле “Файл программы” (Program File ). Если в нем еще не установлен tl.hex, то введите путь к файлу либо вручную, либо просматривая место, где находится файл, нажав ‘?’ справа от поля. Установив hex-файл, нажмите ОК, чтобы выйти из диалоговой формы.

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

    Отладка программы

    Моделирование схемы

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

    Режим отладки

    Чтобы удостоверить, что мы тщательны в отладке, мы остановим текущее моделирование. Покончив с этим, вы можете начать отладку нажатием CTRL+F12 . Появятся два окна - первое хранит текущие значения регистров, второе показывает исходный код программы. Любое из них может быть активировано из меню “Отладка” (Debug ) вместе с совокупностью других информационных окон. Мы также хотим активировать смотровое окно (Watch Window ), в котором мы можем наблюдать внесенные изменения в параметры состояния. Полное разъяснение этого элемента доступно в разделе, озаглавленном “Смотровое окно” , в данной документации.

    Установка точки останова

    Взгляните на программу, можно заметить, что она замкнута в повторяющемся цикле. Поэтому будет хорошей идеей перед тем, как начать, установить точку останова в начале этого цикла. Вы можете сделать это выделением мышью строки (по адресу 0005 и 000E), а затем нажатием F9 . Затем нажмите F12 , чтобы запустить прогон программы. Теперь вы увидите сообщение в строке состояния, показывающее, что достигнута цифровая точка останова, а также адрес счётчика команд. Он соответствует адресу первой точки, которую мы установили.

    Список клавиш отладки можно найти в меню Debug , но мы, большей частью, будем использовать F11 , чтобы пошагово отлаживать программу. Теперь нажмите F11 и заметьте, что красная стрелка слева переместилась вниз к следующей инструкции. Мы фактически выполнили инструкцию ‘ clrw ’, а затем остановились. Вы можете проверить это, взглянув на регистр W в окне регистров и обратив внимание, что он обнулен.

    Теперь нужно определить, что должно произойти при выполнении следующей инструкции, а затем проверить, действительно ли это произошло. Для примера, следующая инструкция перемещает содержимое регистра “ W ” в PORT A , т.е. PORT A будет очищен. Выполнение этой инструкции и проверка окна регистров подтверждают, что это на самом деле так. Продолжайте в том же духе пока не достигните нашей второй точки останова, обратите внимание, что оба порта настроены на выход (как предписано регистром TRISB) и установлены в нули.

    И так, мы остановились на вызове функции, у нас есть опция перешагивания через функции (Stepping Over ) (нажатием клавиши F10), но для полноты мы прошагаем через каждую инструкцию. Нажатие здесь F11 переносит к первой выполняемой строке функции getmask. Шагнув вперед, мы видим, что операция перемещения была успешна, и что мы попадаем в правильном месте для добавления нулевого сдвига в нашей таблице соответствия. Следовательно, когда мы возвращаемся в основную программу, мы имеем “маску”, которую и ожидали. Делая следующий шаг и записывая маску в порт, мы можем видеть правильный результат на схеме. Еще один шаг для инкриментирования режима также успешен, что подтверждается окном регистров, где значение в регистре W увеличилось на 1.

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

    Поиск ошибки

    Скрытый анализ показывает, что причина проблемы в побитовом И с четверкой вместо тройки. Режимы, которые мы хотим 0, 1, 2, 3 при побитовом И их с 4 дают 0. Вот почему, когда запущено моделирование, режим светофоров не меняется. Решение в простой замене проблемной инструкции на И с 3 вместо 4. Это означает, что режим увеличивается до 3, и когда регистр W увеличится до 4, режим будет обнулен. Альтернативное решение в проверке, когда ‘ W ’ возрастет до 4, и сбросе его в ноль.

    Данный раздел переведен из Help’а Proteus’а версии 7.2

    Наверняка, многие из читателей данного сайта хотели бы самостоятельно разработать и собрать какое-нибудь устройство на МК AVR. Но причин, по которым это затруднительно сделать в железе, может быть масса. Например, проживание в сельской местности, где нет радиомагазинов с большим выбором радиодеталей. Хотя в таком случае, как всегда, нам приходит на помощь сайт Али экспресс . Либо ограниченность бюджета. Особенно это актуально для школьников и студентов, еще не имеющих постоянного источника дохода.

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

    Одну из них, Proteus версию 7.7, мы и разберем в этой статье применительно к нашему проекту.

    Что же нам дает эта программа? Начинающие подумают, что она слишком сложная для освоения. Нет, это не так. Просто всеми функциями программы при эмуляции наших первых проектов мы пользоваться не будем. Освоить её основы реально за один-два вечера. Что она дает нам в плане изучения работы с микроконтроллера ми? Там, например, есть визуальное представление работы светодиодов, дисплеев в реальном времени. Можно выбрать для эмуляции работы множество типов МК AVR, в том числе и те, на которых будут основаны наши уроки: Tiny2313 и Mega8. Что это означает и как это осуществляется? Мы пишем код нашей прошивки, компилируем его, получаем нужный нам HEX-файл и виртуально прошиваем наш МК в программе Proteus. Причем мы также можем изменить и фьюз биты нашего виртуального МК.

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

    Вот такое окно у нас открывается сразу после запуска программы (кликните для увеличения):


    Затем нам нужно выбрать из библиотеки те радиодетали, которые нам нужны для проекта и поместить их в список деталей. Их мы затем сможем выбрать и установить на рабочее поле. В нашем проекте мы будем использовать МК Attiny2313, желтый светодиод LED-YELLOW (он хорошо “светится” в Протеусе) и резистор RES для ограничения тока, протекающего через светодиод. Иначе мы, как бы это смешно не звучало, “спалим” виртуальный светодиод:-).

    Для того, чтобы выбрать эти радиоэлементы, мы должны кликнуть по буковке “Р”:

    После того, как кликнули, выйдет вот такое окошко:


    В поле “Маска” вбиваем то, что хотим найти, а именно, наш МК, светодиод и резистор


    Набираем в поле Маска “Tiny2313” и кликаем по найденному нами МК в графе “Результаты(1)”:


    Затем повторяем то же самое с резистором. Вбиваем “res”:


    и точно также ищем светодиод:


    Ну вот, теперь все эти три элемента у вас должны отобразиться в графе “Устройства”:

    Теперь кликаем по черной стрелочке, и потом уже в списке выбираем нужный нам радиоэлемент:

    Слева в вертикальной колонке мы видим значок “Терминал”. Нас там интересуют две строчки: Power и Ground. Это соответственно в нашей схеме +5 вольт питания и земля. На МК питание подавать не надо, оно подается автоматически. Для схемы мы берем только значок “земля”.

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


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


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

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

    Нажимаем правой кнопкой мыши на резисторе, выбираем Правка свойств


    А потом меняем значение на 200 Ом. Вполне хватит, что наш виртуальный светодиод не помер)


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

    Кстати, хочу сразу сказать, если мы совершили какое-то ошибочное действие, нам достаточно нажать кнопку “Отменить” и последнее действие будет отменено. Думаю, многие это знают из сторонних программ, но мало ли).

    Итак, мы собрали схему. Теперь надо залить прошивку в наш микроконтроллер и посмотреть, как же это выглядит в действии. Для этого нам нужно кликнуть правой кнопкой мыши по МК и нажать иконку с изображением желтой папки в графе Program Files. Кстати, здесь же можно при необходимости выставить фьюз биты (кликните для увеличения картинки):


    Затем нужно выбрать файл прошивки с расширением *.HEX и нажать “Открыть”. Все готово, можно эмулировать проект.

    (для увеличения кликните по картинке)


    Для начала эмуляции нужно нажать кнопочку “треугольник” в нижнем левом углу программы “Протеус”:


    У нас начнется эмуляция. Мы увидим, как мигает светодиод. В какой-то момент времени наш светодиод будет светиться. Смотрите как ярко горит желтым цветом:-)


    А потом он снова будет тухнуть:


    Теперь мы можем при желании сохранить наш проект под любым названием, выбрав “Cохранить проект как”, а также если требуется открыть готовый файл другого проекта, выбрав “Открыть проект”

    Так выглядит иконка сохраненного проекта на рабочем столе:

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

    Ну вот и все! Ниже видео работы схемы, а также всех этапов эмуляции:

    Доброго времени суток уважаемые коллеги! Давно хотел поведать вам о своём опыте в моделировании схем на компьютере. Кроме всем известного , существует много других эмуляторов, но не многие знают как ими пользоваться, да и вообще где взять нормальную версию программы. Таким вопросом раньше задавался и я. Когда был ещё в школе, в 10-11 классах увлёкся моделированием схем в этих же программах. Познакомился с одним парнём, который тоже увлекался электроникой, он то и поведал мне о такой прекрасной программе, как Proteus . Загрузил её на почту, правда в то время нормального интернета у меня не было и выкачать её было нелегко.

    Итак, скачав Proteus с почты, приступил к установке - здесь всё очень просто, но всё равно у новичков могут возникнуть некоторые проблемы, потому поэтапно буду описывать саму установку:

    Установка программы Proteus

    1) Скачиваем саму программу, здесь 2 варианта - или скачать её самому с интернета, или написать мне на почту .

    3) В самом архиве список полезных программ, какими сейчас пользуюсь, здесь и АВР Студио, и Казарма и Сина Прог - все они сгодятся, вот увидите.


    4) Находим файл Proteus setup 7.7 , жмем "установить", в процесе установки он попросить ключ, жмем "выкачать с сервера", дальше (на английском Next ), и через некоторое время программа завершит установку.


    5) Теперь от ИМЕНИ АДМИНИСТРАТОРА запускаем программку Crack Proteus 7.7 , если не от администратора - то нечего не выйдет.


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


    Работа с Proteus

    Начнём с простейшей модели - возьмём микроконтроллер ATMEGA-8 и на С++ напишем для него программу которая будет моргать одним светодиодом, для этого выполним следующие шаги:

    1) В архиве с Протеусом есть файл AvrStudio4Setup, запускаем его, он не требует никакого ключа, но есть одно условие для нормальной роботы этой программы - о нём далее...


    2) При установке программы она автоматически даст запрос на установку дополнительных драйверов на USB - это действие надо подтвердить, потом поймёте почему.

    3) Затем установите программу под названием Win AVR, её установка интуитивно понятна, поэтому подробно описывать не буду.


    5) У меня не захотело открывать программу на Восьмёрке, поэтому выкачал 5-ю версию. Если кто захочет пусть сделает та же, дальше буду писать о 5-й версии, она немногим о 4-й отличается.

    6) Запускаем программу, выбираем новый проект.


    7) Внизу вводим имя проекта и дерикторию, куда он будет сохранён.



    9) Водим текст программы, жмём F7 -отладка, дальше F5 -создание.

    10) У меня текст такой:

    11) #define F_CPU 1000000UL // указываем частоту в герцах
    12)
    13) #include
    14) #include
    15)
    16) int main(void) { // начало основной программы
    17)
    18) DDRD = 0xff; // все выводы порта D сконфигурировать как выходы
    19)
    20) PORTD |= _BV(PD1); // установить "1" (высокий уровень) на выводе PD1,
    21) //зажечь светодиод
    22)
    23) _delay_ms(500); // ждем 0.5 сек.
    24)
    25) PORTD &= ~_BV(PD1); // установить "0" (низкий уровень) на выводе PD1,
    26) //погасить светодиод
    27)
    28) _delay_ms(500); // ждем 0.5 сек.
    29)
    30) PORTD |= _BV(PD1); // установить "1" (высокий уровень) на выводе PD1,
    31) //зажечь светодиод
    32)
    33) _delay_ms(500); // ждем 0.5 сек.
    34)
    35) PORTD &= ~_BV(PD1); // установить "0" (низкий уровень) на выводе PD1,
    36) //погасить светодиод
    37)
    38) } // закрывающая скобка основной программы

    41) Переходим к протеусу. Открываем Isis .


    42) В строке сбоку выбираем Component Mode .


    43) Microprocesors

    44) Выбираем наш контроллер.


    45) Строим схему.


    47) Теперь указываем папку где сохранили программный код, он должен иметь разширение hex .

    48) Програмируем контроллер, затем жмём запуск , видим мигание самого светодиода.

    Вот мы и выучили основные данные по моделированию. Но это ещё не все возможности программы Proteus. Теперь воспользуемся пакетом Ares для создания трёхмерной печатной платы.


    Для примера выбрал готовую модель.

    Но также программа имеет возможность создавать новые проекты. После построения платы выбираем Output , 3D visualization , и вуаля: трёхмерная плата готова. Надеюсь данной статьёй хоть немного помог в освоении этой полезной радиолюбительской программы. С вами был Колонщик .

    Обсудить статью PROTEUS