Поговорим о такой замечательной программе для симуляции электронных схем как Proteus 7, (а конкретнее версия 7.10). Для начала что такое симулятор, и зачем он нужен. Симулятор электронных схем Proteus 7, предназначен для моделирования составленных вами электронных схем. То есть вы рисуете схему (добавляете нужные компоненты и соединяете в нужной последовательности), а затем добавляете измерительные приборы, которые вам нужны для контроля работоспособности. Вся прелесть в том что в железе ничего собирать не нужно. Накидал схему и смотришь как она работает, измеряешь ее параметры. Иногда, конечно, случается что в железе все работает по другому. Вообще для Proteus 7 нужен компьютер по мощнее. Теперь познакомимся с самой программой. Запускаем программу и после загрузки видим: рабочее поле, панели инструментов (расположены вверху и слева), и панель свойств.

Создадим простой проект. Добавим светодиод, резистор, кнопку, питание и соединим все это, чтобы при нажатии на кнопку светодиод горел. Нажимаем «Компоненты», на панели свойств нажимаем «P».

Можно искать через категории нужный нам компонент, ну а можно и просто по названию. В строке поиска пишем «LED» и выбираем светодиод, например синий. Щелкаем по нему 2 раза и он добавляется в наши компоненты. Также добавим кнопку и резистор.

Теперь в нашей панели есть светодиод, кнопка и резистор. Выделяем первый компонент и делаем один клик на рабочем поле. Компонент добавлен. Размещаем компоненты как удобно. Для резистора нужно задать номинал. Для этого щелкаем по нему 2 раза и в окне свойств вводим нужный нам номинал.

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


Теперь нужно добавить питание. Жмем на кнопку «Terminal» и добавляем элементы Power (+) и Ground (-).

Напряжение по умолчанию здесь 5В. (добавляются на рабочее поле они точно так же как и компоненты). И соединяем их с нужными точками схемы. В итоге получается такая схема.

Теперь смотрим в нижнем левом углу панель запуска симуляции. Все, как и в проигрывателе, треугольник — старт, квадрат — стоп ну и т.д. Запускаем, наводим курсор на кнопку и нажимаем ее.

В наш век новейших технологий уже не обязательно собирать какую-либо схему на макетной плате, дабы убедиться в ее работоспособности. Существуют программы-симуляторы для симулирования работы схем в реальном времени. Одной из них и является Proteus . Это довольно многофункциональная программа для симуляции различных схем. Собственно в состав Proteus"a входят программы с названиями ISIS (программа-симулятор) и ARES (трассировка печатных плат), в которой разводку плат можно трассировать автоматически, по предварительно составленной схеме в ISIS.

Начнем с ознакомления с интерфейсом. Для выбора компонентов нужно нажать на кнопку "P" в левом верхнем углу экрана (возле надписи "DEVICES").

После этого появится окно такого вида:

В столбце слева-классификация элементов, в столбце посередине сами элементы, в левом нижнем "окошке" - корпус элемента (если таковой имеется в библиотеке ARES), а в правом верхнем окне-собственно сам элемент, например я, выбрал микроконтроллер ATTINY13, вот так это выглядит:

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

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

Для выбора транзисторов жмем "P"-"Transistors" и выбираем наш 2N4410. Конденсаторы расположены под заголовком "Capacitors", резисторы в "Resistors", а светодиод в "Optoelectronics". Что касается батареи, то она размещена в группе "Simulator Primitives". Размещать компоненты желательно внутри рабочей области (синего прямоугольника). Далее следует выбрать автотрассировку связей, это делается либо через меню, либо через панель "быстрого доступа", второе более предпочтительно. Для активации автотрассировщика через панель, нужно нажать эту клавишу:

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

  • 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. Эти папки содержат примеры совместного использования соответствующих инструментариев. При этом

    Наверняка, многие из читателей данного сайта хотели бы самостоятельно разработать и собрать какое-нибудь устройство на МК 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 и прошивку прикрепил в архиве.

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

    Вообще существует масса систем моделирования электронных схем. Из всех, что я видел мне наиболее понравились Multisim и ISIS Proteus . Multisim обладает очень удобным интерфейсом, и в нем удобно отлаживать аналоговые девайсы, т.к. он позволяет использовать виртуальные (т.е. параметры ты указываешь сам) транзисторы и усилители, но совершенно не поддерживает сложные системы, вроде микроконтроллеров или разного рода драйверов. Точнее поддерживает, но крайне вяло. Только недавно в нем появилась поддержка древних АТ89C2051 и нескольких PIC ‘ов

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

    Весит порядка тридцати метров в архиве, самая поздняя версия которая мне известна это 7.2 Учти только, что крякнутая версия Proteus работает порой ну очень странно , например код процессора ты видишь, а отладка не идет и в регистрах левые значения. Потому ищи тщательно;))))

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

    Запускай Proteus , сразу же должно отрыться бежевое окно в точечках. Это рабочее поле. Тут мы и будем строить нашу схему. Для примера сварганим схему на моем любимом контроллере АТ89С51 она не будет делать ничего путного, будет просто отсылать в окошко терминала буковки по нажатиям кнопок приделанных к портам контроллера.

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

    Откроется огроменный список элементов которые знает Proteus . Библиотеки постоянно дополняются и обновляются, поэтому пошарь по инету в поисках новых деталек.
    В списке найди контроллер АТ89С51 , чтобы не возиться заюзай поиск по ключевым словам – набери просто «АТ89 » увидишь все семейство MSC-51 известные Proteus’у .

    Выбирай нужный и тыкай «ОК ». После чего размещай микросхему в удобное тебе место. Сразу оговорюсь, что модели процов в Proteus несколько упрощенные, поэтому они не требуют наличия в виртуальной схеме кварца, системы сброса (подтяжка RESET до нужного уровня), наличия сигнала на использования внутренней памяти (+5 на EA, особенность процов С51 , умеющих работать от внешней ПЗУ ) и об этом не стоит забывать когда в итоге будем делать реальную схему, а то, в итоге, искать причину неработающей схемы можно очень долго.

    Хоть они и не нужны, но детали обвески мы все же добавим. Опять тыкай на лупу с треугольником и ищи там кварц, буржуи зовут его «crystal » вот его и ставь на схему рядом с выводами XTAL .

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

    Теперь наведи курсор на вывод кварца и соедини его с выводом XTAL1 процессора, то же проделай с второй ногой кварца, только на XTAL2 . Теперь нам нужны кондеры, опять лезь в библиотеку и ищи там Capacitors . Будет огромный список реальных кондеров, выбери какой нибудь SMT конденсатор емкостью порядка 33pF . В верхнем окошке справа будет его обозначение в схеме, а внизу габаритные размеры, а точнее контактные площадки под его запайку.

    Кстати, обрати взгляд в окошко чуть ниже строки поиска. Видишь там строку Modeling Primitive ? Вот там есть виртуальные примитивы. Они не имеют корпуса, потому при разводке печатной платы выскочат с ошибкой, но если ты не собираешься разводить плату, а лишь хочешь смоделить схему, то возьми лучше его – его значения можно менять как угодно.

    Воткни пару кондеров рядом с кварцем и повесь их на ноги кварца одним выводом, а второй объедини и повесь на землю. Где взять землю ? Хороший вопрос:). Ищи в левой панели инструментов такие две фиговины похожие на бирки, зовется Terminal mode . Тыкай в неё, откроется тут же рядом, слева, панелька где нужно выбрать строку GROUND это и есть земля. Установи ее где тебе удобно. Power там же — это напряжение питания схемы. Обычно оно общее, но иногда могут быть замороки с тем, что у схемы множественное питание (как, например, в компе, там и 5 и 12 и 3.3 вольта и вообще тьма разных напряжений).

    Далее надо собрать схему сброса. Протеусу это не требуется, он и так будет нормально отрабатывать, но реальной схеме это нужно. Делается это просто. Ставим резистор и конденсатор. При включении, когда конденсатор не заряжен, то его сопротивление равно нулю и на вывод RST подается +5 вольт, т.е. логическая 1, а как только кондёр зарядится, произойдет это через пару миллисекунд, то ножка через резистор будет лежать на земле, а это уже самый настоящий логический нуль и проц запустится в штатном режиме.

    Сделай всё как на картинке и приступай к навеске кнопок на наш девайс. Вешать лучше на порт 1. Почему? А резисторы дополнительные не нужны. Дело в том, что у С51 порт 0 сделан с возможностью работы на шину данных, а это значит имеет так называемое Z состояние. Это когда на выходе не 1 и не 0, высокое сопротивление (импенданс), почти обрыв, но порт может без палева в это время снифферить шину на предмет пролетающих там значений, ничуть не выдавая себя и не мешая другим устройствам.

    Порт 3 обвешан всякой дополнительной периферией, а порт 2 не очень удобно расположен в модели протеуса. Поэтому юзаем порт 1:))))) . Ищи в библиотеке какой нибудь switch или button. Мне нравится компонент button, потому я заюзаю именно его. Поставлю четыре кнопочки и повешу их на выводы P1.0, P1.2, P1.4, P1.6, а другие выводы кнопки приложу всем скопом на землю. Как это будет работать?

    Да просто! Вначале вывожу в порт единичку на все выводы. Ножки изнутри сразу же подтягиваются к логической единице. Теперь, чтобы считать данные, достаточно забрать значение из регистра порта P1, а если мы нажимаем какую-либо из кнопок, то эта ножка жестко сажается на землю, пересиливая внутренний подтяг до единицы. Т.е. нажатая кнопка дает в порту нуль на своем бите. Такой принцип определения нажатия кнопки во всех микроконтроллерах. Также настоятельно рекомендую шунтировать кнопки конденсаторами на 40pF – не будет ложных срабатываний от импульсных помех.

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

    Я же предпочитаю побаловаться моим любимым UART ом. Проще говоря, терминалкой. Лезем в раздел виртуальных приборов. Ищи на левой панели инструментов пиктограмму с нарисованным стрелочным прибором и лезь туда. Тебе будет список всякого хлама который ты можешь юзать. Тут тебе и вольтметр, и амперметр, и осциллограф, цифровой анализатор и разные узкоспециализированные приблуды вроде монитора протокола SPI или I2C . Для прикола возьми осциллограф (oscilloscope ) и повесь его одним каналом на вывод TxD . Еще нам нужен Virtual Terminal . Выбирай его и вставляй на схему. А теперь соединяй его выходы с выходами проца, крест накрест. Rx c Tx, Tx с Rx.

    Готово! Ну и, для полного счастья, поставь еще светодиод на порт Р2 . Как подключать светодиоды к портам проца? Да очень просто! Вешаешь плюс светодиода на питание, а минус на резистор, а этот резистор уже на выход процессора. Чтобы зажечь диод надо на эту ногу выдать 0.

    Тогда разница напряжений между напряжением питания и напряжением нуля на ножке будет максимальной и диод будет гореть. Ищи в компонентах LED ну и втыкай его как я тебе сказал. Обратил уже наверное внимание, что чаще мы событие определяем или устанавливаем по нулю, а не по единице. Это связано с тем, что ноль легче получить принудительно, чем подтягивать ножки вверх. Но далеко не всегда так, например, контроллеры семейства AVR умеют свои ножки сажать наглухо и на нуль и на напряжение питания, так что там диод зажечь можно и единичкой. Для этого его надо будет перевернуть и вторым концом через резистор повесить не на Power , а на землю.

    Так, аппаратную часть мы нарисовали. Пора приступать к настройке и отладке.

    Выдели микроконтроллер и кликни на нем дважды, откроется окно свойств.
    PCB Packadge — это тип корпуса, он важен при разводке печатной платы. Пусть стоит DIL40

    Program File – это собственно файл прошивки. Вот сюда нужно прописать путь к hex файлу.

    Clock Frequency – частота на которой будет работать проц.

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

    Жми кнопку с значком Play , как на магнитофоне. Тут всё просто, никаких сложностей. Отмечу только, что пошаговый режим это просто прерывистый запуск с небольшой временной задержкой. Для отладки нужно юзать дебаг по коду.

    Теперь твоя схема работает. Можешь понаблюдать процессы, происходящие в ней. Если выберешь в панели инструментов вольтметр, то увидишь напряжение, или можно измерить ток, если заюзать амперметр. Цветные квадратики, что зажглись на ножках процессора это логические уровни. Синий – ноль, он же земля. Красный – логическая единица, а серый это высокий импенданс, он же Hi-Z .

    В принципе уже этого достаточно, чтобы отладить работу дейвайса. А что, прогу отлаживаем в Keil uVision (если речь идет о С51) или в AVR Studio , компилим и смотрим что получилось. Это отлично работает на простых девайсах с одним управляющим контроллером и обвязкой.

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

    Добавляем исходник.
    Лезь в меню и ищи там пункт Source и смело тычь в него недрогнувшей рукой. Выбирай Add/Remove source и добавляй исходник. Советую сразу, чтобы компилятор не тупил, исходники ныкать по простым путям, без пробелов и русских букв. Например, как у меня: “d:\coding\C51\hack_2.asm ” Добавляя исходник не забудь указать компилятор которым его надо будет компилить. Для данного случая в “Code generation tools” надо указать “ASEM51 ”, то есть компилятор архитектуры MCS-51 .

    Жми ОК и в меню Source появится еще один пункт – добавленный исходный файл, выбрав который автоматом открывается редактор и можно по быстрому подправить текст программы.

    Настройка компилятора.
    Опять же лезь в меню Source и ищи там пункт “Define Code Generation Tools ” это опции компилера. Изначально настроены они криво — в разделе “Make rules ” тычь в строку “Command Line ” и выноси оттуда весь мусор, что там есть. Оставь только “%1 ” без кавычек. ASEM51 умная зараза, он сам добавит нужные файлы с описаниями регистров и переменных, тем более, что у всего семейства MСS-51 все адреса одинаковые.

    Компиляция
    Жми в том же меню Source пункт Build All и получай на выходе hex файл , но уже местной выделки. Там же моргнет окно комплиятора, в котором будут сведения об ошибках и ряд служебных данных.

    Запуск
    Запускай схему кнопкой Play в нижней панельке и сразу же нажимай либо паузу, либо пошаговый режим. Сразу же должно открыться окно с кодом программы как в уже привычном тебе отладчике. Если не открылось, то ты его найдешь в меню Debug -> 8051CPU -> Source Code — U1

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

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


    При добавлении в проект второго проца его код, регистры и память будут там же, но называться будет уже Source Code – U2 и так далее.
    Кроме того, в директории Proteus’a есть папка SAMPLES вот в ней куча разных примеров, весьма сложных, показывающих возможности системы ISIS Proteus .

    З.Ы.
    Эту статью я писал для журнала Хакер. В несколько ином виде (чуть более подробном) она была опубликована в журнале за декабрь 2007 года.

    Эта статья также доступна на следующих языках: Тайский

    • Next

      Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

      • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

        • Next

          В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

    • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
      https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png