Система моделирования ISIS Proteus. Быстрый старт.

Собранная виртуальная схема
Собранная виртуальная схема

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

Отладка предыдущей версии контроллера робота
Отладка предыдущей версии контроллера робота
Пошаговая отладка одновременно двух процов связанных по программному i2c. МОЩЬ
Пошаговая отладка одновременно двух процов связанных по программному i2c. МОЩЬ

Добавляем исходник.
Лезь в меню и ищи там пункт 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 года.

137 thoughts on “Система моделирования ISIS Proteus. Быстрый старт.”

  1. Спасибо, я как-то пробовал протеус, но мня он очень сильно задолбал, из-за его интерфейса =). Может сейчас, успокоившись, попробую что-нибудь на нем намутить. Но все равно, ручное паяние наверное лучше, ведь не может же эта програмулина предусмотреть все. Взять хотя б дребезг контактов…

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

  3. Решил пощупать Multisim, собрав в нем кусок схемы (формирование «пилы») от аналогового реобаса. Но вот незадача: осциллограф упорно показывает ноль при включении, т.е. никакой «пилы» не получется… Скажите, пожалуйста, что я сделал непрвильно? Схему и ms10-файл можно скачать в архиве по адресу http://files.nixon-site.ru/saw.zip. Спасибо.

    1. У тебя усилитель идеальный. А такие схемы как генераторы начинают раскачку из равновесия или изза помех извне (которых в симуляторе нет) или изза несиметрии в реальном усилке. Сделай на LM324, а не на Vortual Opamp должно заработать.

        1. Не знаю, что у тебя там за симулятор, но у меня схема, показанная автором статьи, на Multisim 10.1 завелась без проблем.

          В твоей же есть по крайней мере три ошибки/проблемы:

          1. Неправильно подключено питание к первому ОП (поменяны полярности).

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

          3. Что-то не так с самими ОП-ами. Сильно в их параметрах не разбирался, но похоже у них МАЛОЕ сопротивление входов — если включить осциллограф на выход делителя на резисторах R1/R2, можно увидеть что там потенциал раскачивается так же круто, как и выходы ОП-ов…

          И это я уже не говорю о том, что пила раскачивается до *киловольт* (а при обратном подключении питания — до ГИГАВОЛЬТ :) ) при источнике питания в 12В.

          P.S. За последние несколько лет симулировал на десятке разных версий Electronics Workbench/Multisim — глюков наблюдать ни разу не приходилось.

            1. Нужно искать. Как правило за несколько минут гугления в интернете не составляет проблемы найти нужную программу (а за доп. еще несколько минут — и ключик активации к ней).

              С другой стороны, если у Вас есть уже работающий мультисим, то искать «работающий лучше» или «более новый» не всегда обязательно. К примеру, — в «моем» мультисиме я не так давно обнаружил также неправильные модели (SPICE модели) ОП-ов и не только…

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

              Не стоит также забывать о том, что SPICE — модели можно поправить собственноручно :-).

              P.S. Также известно, что сложные аналоговые компоненты (а также трансформаторы и др.) даже если они в основном работают как положено в мультисиме (и наверняка не только в нем) смоделированы не 100% точно, а потому нужно всегда учитывать привносимую такой неточностью разницу (благо даташиты как правило дают достаточно информации и редко ошибаются).

    1. Это он при запуске или при старте симуляции?
      Если при запуске то ХЗ, может кривой дистриб. Если при симуляции, то скорей всего кривые пути. Протеус не переваривает русские буквы и длинные пути. А еще крайне желательно, чтобы файл проекта была в том же месте где и исходник и хекс.
      В общем поиграйся с файлами.

  4. DI HALT, подскажи, пожалуйста параметры для компилятора AVRASM32, а то Протеус не хочет компилировать файл asm с прошивкой для ATMega8. Ругается, что не может найти LST-файл

      1. Да, точно. Косяк был в том, что он m8def.inc не находил. С этим разобрался. Все компилится, ошибок нету. Но почему то средств отладки нету. В меню Debug все, что касается AVR недоступно. Прошивку для МК указал ту, что поулчилась при компиляции Протеусом.

        1. А работает сам проект? На чем написано? Его же редактором исходник открывается? Нужно ему добавить исходник еще, чтобы он его видел. Т.е. чтобы все протеусом компилилось и тогда должна быть отладка по исходному коду. Если не фурычит, значит еще может быть вариант криво взломанного протеуса. Дело в том, что там защита многоуровневая на каждый компонент в отдельности. У меня по этой причине в прошлой верссии был недоступен исходный код. Хотя регистры проца я видел.

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

    З.S. На празниках опять проходил Fallout/

  6. В даное время есть версия Proteus 7.4, в ней много нового:новие библиотеки(добавлены напр. МК ARM)возможность в свойствах симуляции контроллера выставлять биты конфигурации как в реальном устройстве.Только одна проблема — нужно класное лекарство от жадности.Версия что у меня была без предуприждения закривалась через некоторое время(приблизительно 7 минут после открития).Возможно дана проблема уже решена.
    Насчет версии 7.2 оч. страшных глюков не наблюдал.Если кому надо-у меня есть русификатор под эту версию,инсрукция по проектировании печатних плат.С радостью поделюсь!

  7. Подскажите по такой проблемке : запустил пример в данной программе версии 7.02.06 , при компиляции выдаёт :
    ASEM51 sourse\hack_2.asm
    ASEM.EXE faild to run (GetLastError() is 0x0)
    Source code bild FAILED with 1 eror
    настройку проги делал по инструкции.

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

    1. Сам пробовал. Сносно получается. Тебе надо в менюшке System->Set Strategies отключить Top Copper и для Power и для Signal линий (В версии 7,5 это находится в Tools->Disign Rule Manager->Net CLasses. И при разводке нужно побольше итераций указывать. Чтоб подольше подумал :-)

    1. Понял чо за ошибка. Это когда для компонента нет математической модели. Т.е. ты не сможешь ссимулировать LM324, а добавлен он туда исключительно ради того, чтобы ты мог довершить девайс с ним и засунуть потом все в ARES для разводки платы. Замени его каким нибудь близким аналогом если хочешь получить именно симуляцию, либо виртуальным ОУ.

    1. Использовал русиф. для версии 7.4 прога начала глючить(слетала регистрация ,отказывалась запускаться).Установил снова но без русиф. все заработало.Теперь пользуюсь версией 7.5 и русификатор не нужен!Я бы не советовал ставить русификатор но дело за Вами,в проге вроде все наглядно и понятно…

    2. Русификация программ такого уровня — ересь. Мало того, что переводчик может криво что нибудь перевести, так еще к собственным глюкам крянутой проги добавятся глюки русификации. Так что в топку, учи буржуйский

  8. Люди, отличная программа. Другие проги и этого не могут. На одном протеусе естественно далеко не уедешь. Но зато можно просимулировать работу процессора с кучей подцепленного хлама, RTC, опторазвязка, да вообще дафига чего. И все это не отрывая опы и не шипя пальцами. В общем сначала среда разработки кода, потом протеус, а затем уже паяльник. Так меньше не рабочих деталей получается))). Темболее у таких асов паяльного дела как я.

    В общем и я не без проблем. Разрабатываю ЩПТ на контроллерном управлении, Atmega128. Приходится управлять относительно большим напряжением и током. Суть в том, что нет мощных элементов резисторов, тиристоров, больших кондеров. Протеус помоему расщитан для более ли мение маломощьных цепей. к примеру мне нужны резюки на 100Вт и на 30Вт Подскажите, можно ли скачать подобные вещи и где, может можно самому состряпать? Если можно подскажите как. Заранее спасибо.

  9. Подскажите, у меня проблема. Собрал типа схему в протеусе. По умолчанию у меня на порте ввода — «0». Принажатии кнопки на ноге порта появляется «1». Отжимаю — единица (красный квадратик) не убирается! Дай, думаю, измерю подсоединю вольтметр — показывает половину напряжения, которое было при нажатой кнопке. Даже и не знаю что делать, подскажите плз)).

      1. Выше, на примерах я вижу, что кнопки при замыкании вешают ногу на землю («0»), а у меня она вешала ее на питание («1»). Попробовал, переделал схему по типу как в примерах, изменил хекс — заработало))! А первоначальная схема почему-то не работает.

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

          в итоге будет когда кнопка не нажата на ней четкое GND, а когда нажата +5.

  10. то ли лыжи не едут, то ли вывод RST на самой первой картинке обвязан неправильно? В других статьях вроде наоборот было — после зарядки конденсатора на RST +1 и проц. запускается?

  11. Помогите, пожалуйста, решить проблему: написал наитупейшую прогу в CVAVR, чтобы мигала светодиодами и смоделировал в Proteus’e. Почему-то, когда на ножках нет ничего — все отлично работает, но стоит светодиоды подключить начинается какой-то бред)

  12. Бред в Протеусе. DDR настроил. Когда без нагрузки четко где надо загорается красный квадратик, а остальные синие. А стоит диоды прицепить — начинается бред(

  13. А в протеусе совсем нет системы предупреждений об ошибках? Например рисуем схему из питания земли и кучки светодиодов подключенных параллельно. Часть светодиодов ставим вверхтормашками по полярности. Стартуем- все ок. никаких сообщений. Часть светодиодов анимированная- они светятся(или нет)- все ясно. Но большинство-то деталей схематичные. И как догадатся работают они или нет? Усложняем задачу- напряжение питания- 10Вольт(у светодиодов 2В, Breakdown Voltage 4В)- ничего не изменилось. Анимированные продолжают светится. Неанимированные и так функциональной нагрузки не несут. Сталю галочку в «Системе» напротив- «отображать направление тока»- все путем. Через перевернутые светодиоды ток якобы проходит.
    И ни одного сообщения ни о чем.

    1. В мультисиме только что проверил. Горят или не горят диоды видно сразу. У них стрелочки окрашиваются в нужный цвет. Если деталь(любая) не так подключена и не функционирует- сразу выделяется цветом.
      А вот с вольтажем все плохо. Диоды и на 1000 Вольт прекрасно работают.

  14. Вообще к вопросу симулирования и упрощения работы мыслится такой вариант:
    можно в реальном микроконтроллере оставить программку которая занимается только приемом и передачей информации, а вся обработка происходит в протеусе, — связь по UARTу, в общем я так и сделал -). В принципе мысль удачная все работает и даже на хорошей скорости — 57600 только вперед (главное не забыть соединить все корпуса на чиная с блока питания, и кончая системным блоком, без этого только 9600 еле-еле, но на 4-х метрах кабеля -)). Вопрос к сожалению не в этом — при посылке одиночных сообщений все чудесно, даже на 115200 глючить только начинает -) но при посылке потоковых данных чортов COMPIM время от времени тупит причем что странно не через равные промежутки времени, причем глюки остаются даже если ВСЮ схему сделать виртуальной &%$#@! и связиваться с частями схемы через виртуальный кабель (2-а COMPIMа и пара виртуальных портов соед вирт кабелем) на 2400 это несущественно , но у меня схема управления двигателем т.е. скорость вообще-то важна… На каком-то зарубежном форуме вроде видал что скорости физические и виртуальные надо ставить разные, типа виртуальные (и в схемах) 2400, а физические к примеру 9600, но чета ни шиша не получилось -(. Может кто нибудь сталкивался с настройкой COMPIMа, а то жаль мысль очень удачная-)

  15. Глюки в смысле при работе тестовой программы — в железе задающий мультивибратор, на положительном фронте отправляющий по UARTу в PROTEUS байт (какой в приципе неважно — главное преывание -)), там по прерыванию включается таймер и байт шлется обратно, сразу и по таймерному прерыванию по переполнению(тоже в PROTEUSе), в идеале — UART без COMPIMа( т.е. все в PROTEUSе),- даже задержек особых нет, а с COMPIMом (и когда ВСЯ схема в PROTEUSе и когда половина),- (виртуальнвм COM портом позволяющим работать с реальным) гребенки не только запаздывают но к сожалению в ответной может менятся длительность и и мпульсы как бы наползают друг на друга вплоть до слияния потом все проходит до следующего раза…

      1. АА, а насчет LAB wiev, sorry я не в курсе у нее интеграция с протеус или она сама по себе? Просто мне показалось очень удобно ничего не перевтыкать ни программатор ни на кнопки жать. В АВР пересобрал, она сама упала в ту папку в которой смотрит ПРОТЕУС и просто включаешь питание… Спалил просто прорву контроллеров из за того , что просто тупо от усталости или когда торопишься втыкал их вверх ногами -))

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

          1. Да кстати, а на плате-то есть защита от втыкания вверх ногами и соответсно защита от длительных закороток, ну типа пока дотупишь, что поставил неправильно? Было бы наверное полезно дополнить если нет -)

  16. Ди, так может напишите обзорчик по Лаб Вью этому? Я чет скачал, установил- тыкался, тыкался- нифига не разобрался. Она чтоб кнопочками да переключателями управлять, чтоли?

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

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

  18. Подскажите плз!Написал программульку на асслемблере для ATmega16, мигания светодиодов,нарисовал схемку в протеусе,зашил,зашёл в меню source нажал built и вот что получил в ответ:

    тра тата какойто текст
    ….
    ..

    .
    .
    C:\avr progs\leds.LST not found
    Source code built FAILED with 2 error(s).

    Что это может значить подскажите…

  19. Пытался смоделить простенькую схемку с Mega8, сдвиговыми регистрами и семисегментниками. Девайс должен отсчитывать секунды и выводить на индикаторы (короче, секундомер). Для отсчета использовал TC2 с предделителем 1 с кварцем на 32768 Гц. В прерывании по переполнению только инкрементится счетчик тиков, вычисление времени и вывод идут в главном цикле.
    Так вот, таймер отстает где-то на 10с за минуту (сравнивал с секундомером на коммуникаторе). Фъюзы, частоты и т.д. проверял десять раз. К тому же, на тестовой плате с Mega16 (только там 2 регистра, а не 4) та же прошивка работает правильно.
    ЦП компа не перегружается, симуляция вроде идет в реальном времени.
    В чем может быть проблема?

    И еще, пробовал включать катоды индикаторов по схеме из статьи про глобус (КТ315 + делитель) — не работает, при подаче ENABLE на катодах +5В. Транз брал другой, но структура та же. В железе все, опять же, работает.

    1. Такая же проблема. Таймер не работает так как задумано. Использовал Proteus 8.3 SP2 не русифицированный. В AVR Studio 4.19 при отладке таймер считает правильно.

  20. А еще с протеусом идет трассировщик, который ARES. Я было подумал, что о нем тут упомянется, хотел освоить:) Или он че считается фиговый? Удобно же вроде эмулятор и трассировщик в одном пакете иметь.

      1. Согласен,но как я понял, ты имеешь ввиду шестую версию(она как будто для левшей, сам плевался). Вот в новом седьмом протеусе наконец-то все как у людей))В арес добавлен трассировщик ELECTRA, и кстати эсть авто-расстановщик компонентов(хотя ИМХО авторасстановка — бред)

  21. Можно ли в протеусе создать как-нибудь дополнительную шину питания?
    Мне в проекте нужно две шины — для питания логики (Vcc=5V) и силовая (9V).
    Пока просто поставил «батарейку», но это не очень удобно.
    Нашел Design->Configure Power Rails… создал там новую шину, думал, в терминалах появится — нифига. Пробовал отключать «Use default power rail connections?» и менять класс — все равно нету.
    Есть какой-нибудь способ сделать другую шину, аналогичную Vcc?

    1. МК должны быть в категории «Microprocessor ICs». Еще можно просто ввести имя серии в поиске (например «mega» — выдаст все доступные меги, «tiny» — выдаст тиньки) или любую другую часть названия МК.

  22. Вообдем читаю ету статью, скачал проет, запустил, настроил, все роботает. теперь по коду:
    MOV P2,#255 — все ноги порта 2 ставит в «1», менял число, менял порт, все роботает как надо.
    а как управлять регистрами PORT и DDR (о которых я начитался тут http://easyelectronics.ru/avr-uchebnyj-kurs-ustrojstvo-i-rabota-portov-vvoda-vyvoda.html#more-233) для нужного порта даного контроллера (если можно пример кодом)?
    и как обращатся к регистру PIN?

    Спасибо.

        1. Ааа ты на МСЦ51 все делаешь. Тогда та статья тебе не применима. В С51 порты устроены совсем по другому и там все куда проще, а функционал ниже плинтуса — устаревший донельзя контроллер. По крайней мере в классическом АТ89С51

          1. мне МК с супер возможностями никчему, просто для курсового проекта надо организовать передачу даных между двумя МК по ЮАРТ. я так читал, то выходит там чтобы слушать внешний мир через ногу, то на нее надо просто 1 выставить, нижние уровни будут ее гасить, а верхние не помешают, но и при етом она может также быть источником питания….. я правильно понял?

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

              А на выход он может работать только как 0 и как подтяжка к 1.

      1. Схема как раз есть, просто хотелось бы оценить задержки сигналов на дорожках и наводки их друг на друга. Кстати Ultiboard 11.0(программа от создателей MultiSim’a) только трассирвоать умеет или чё то моделировать тоже может?

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

  23. Протеус 7.7SP2. «Прошиваю» проц. проекта в Протеусе файлом .асм из АВР проекта методом:
    Исходник//Добавит/удалить//Целевой проц.(ТН2313)//Инструм. генерации(AVRASM2)//Новый//Нахожу в корне .асм, Открыть//ОК. На раб. поле проекта под проц-ом появляется надпись, указывающая путь к прог-е, заканчивающаяся .HEX, проект в Прот. анемируется как и задумано, сообщений об ошибках нет, но при вызове отладки, даже если выбрать AVR SOURCE CODE, получаю сообщение: No source line at PC address [PC00E4] и значения регистров при анимации не меняются- отладка не пашет. Совсем недавно функция была. А если после описанных выше действий снова Исходник//Инструм. генерации//компоновать все — сообщение. что в LST(2) ERROR, ассемблирование не вышло. И не могу открыть текст,не понять в чем дело. В АВР этот текст нормально буилтился и симмулировался. Так со всеми проектами. PSE.

  24. DI HALT добрый вечер! Не подскажете в каком направлении можно нарыть методику, если такова существует, как с живой платы начертить ее принципиальную схему? Плотность монтажа большая, как-то коряво у меня выходит, а хотел бы разобраться, что это и как работает. Вернее «что это» наглядно видно, от блока питания на с 220 на 12 вольт, без понижающего трансформатора, но уж больно хитрая, хоть вроде не импульсная.Заранее спасибо.

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

  26. Добрый день!
    Это мой первый пост здесь, поэтому, в первую очередь, должен выразить безграничную благодарность автору ресурса, DI HALTу! Доходчиво разъяснять — настоящий талант учителя. Благодаря твоим статьям обрывочные знания, которыми сложно воспользоваться, складываются в стройную систему и возникает понимание — еще раз спасибо!

    По теме: В Proteus, при загрузке прошивы *.hex в пошаговом режиме процессоры идут по коду не тактами, а через определенный, достаточно большой, интервал. Если загрузить вместо этого файл *.obj(AVR Studio) или *.coff(CVAVR) будет работать по тактам, что значительно удобнее

    ЗЫ По-моему к сайту давно пора прикрутить кнопку «donate»

Добавить комментарий