Компьютерные подсказки

Вылетает Сталкер: Зов Припяти Программа икс рей 1

Stalker lost alpha гид по прохождению

Pony Express отслеживание почтовых отправлений

Pony Express – время и сроки доставки с Алиэкспресс в Россию

Застряли посылки с Алиэкспресс со статусом Hand over to airline: что делать?

РФ (Nigma) — интеллектуальная поисковая система

Данные для семантики — Яндекс Вордстат

Пиар ВКонтакте при помощи бирж: особенности и использование

Почему я не могу отправить сообщение?

Предупреждение «Подключение не защищено» в Google Chrome по протоколу https Нарушена конфиденциальность данных яндекс браузер

Всё что известно о смартфоне Samsung Galaxy S9 Аккумуляторная батарея Galaxy S9 и мощность

Темы оформления и русификация форума SMF, а так же установка компонента JFusion в Joomla

Автоматическое определение движка форума Позже board powered by smf

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

Подробная инструкция, как в "скайриме" открыть дверь золотым когтем

Proteus VSM. Руководство по интерактивному моделированию

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

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

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

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

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

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

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

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

Доброго времени суток уважаемые коллеги! Давно хотел поведать вам о своём опыте в моделировании схем на компьютере. Кроме всем известного , существует много других эмуляторов, но не многие знают как ими пользоваться, да и вообще где взять нормальную версию программы. Таким вопросом раньше задавался и я. Когда был ещё в школе, в 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

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

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

Цель данного руководства - показать вам на примере создания простой схемы, как проводить интерактивное моделирование, используя 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

Вообще существует масса систем моделирования электронных схем. Из всех, что я видел мне наиболее понравились 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 года.

Вам также будет интересно:

Читы и консольные команды для Counter-Strike: Global Offensive Команда в кс го чтобы летать
В этой статье мы рассмотрим некоторые из наиболее полезных и забавных консольных команд в...
Arduino и четырехразрядный семисегментный индикатор Семисегментный индикатор 4 разряда распиновка
В сегодняшней статье поговорим о 7-сегментных индикаторах и о том, как их «подружить» с...
«Рабочие лошадки» Hi-Fi: собираем бюджетную систему Хороший бюджетный hi fi плеер
Выбор плеера - это сложный процесс, иногда человек желает получить не просто коробочку,...
Как правильно пользоваться сургучными печатями
На самом деле, сургуч - это смесь смол, окрашенная в определенный цвет. Если у вас на руках...
Лагает fallout 4 как снизить графику
10 ноября состоялся релиз долгожданной игры на ПК, PlayStation 4 и Xbox One, и постепенно...