Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 08.07.2009, 00:27  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • На рисунке 12 цифрами показана последовательность превращения текста скрипта в жирный (Bold) красный на вкладке Style окна редактора Edit Script Block. Аналогичными вкладками Style обладают и другие объекты ISIS, например 2D графика (Набор 3 на рис. 10), но набор функций немного другой. Я это подчеркиваю к тому, чтобы в дальнейшем не останавливаться на том как поменять стиль: цвет, толщину линий, заливку и т.п. Последовательность действий везде одна и та же: сначала снять флажок, затем изменить параметр, который при этом становиться доступным для изменения.
    Buses Mode - (горизонтальная синяя шина с отводами вверх/вниз) - режим рисования соединительных шин. Первым щелчком левой в нужной точке проекта стартуем начало шины, последующими одиночными ставим точки поворотов, двойным щелчком завершаем рисование.
    Subcircuit Mode - (желтый прямоугольник с выводами справа и слева) - режим размещения субмодулей. Модули - прямоугольники с толстой синей окантовкой и заливкой цветом компонентов - позволяют в Протеусе вынести функционально законченные узлы на отдельные листы (Child Sheet - дочерний лист модуля). Кто смотрел примеры, прилагаемые к Протеусу, уже сталкивался с ними в сложных проектах. Их применение мы рассмотрим подробно в разделе иерархических структур. А здесь отмечу, что рисуется модуль удержанием нажатой левой кнопки мыши в окне проекта по диагонали с угла на угол. После чего через изменение свойств доступно присвоение ему индивидуального имени (по умолчанию подставляется SUB?). При установке Subcircuit Mode в окне селектора становятся доступными для выбора терминалы (порты ввода/вывода и питания) субмодуля. Расстановка выбранных терминалов возможна по левой и правой вертикальной синей окантовке модуля. По неписаным канонам принято входы (Input) ставить слева, а выходы (Output) справа. Изображение терминала появляется в окне предпросмотра при выборе его в селекторе.
    Набор 2.
    Terminal Mode - (два желтых горизонтальных указателя вправо/влево) - режим расстановки терминалов. Терминалы позволяют связать две или несколько точек схемы, расположенных как на одном листе, так и на разных листах, не проводя между ними соединительной линии. Для этого в свойствах (Properties) связанных между собой терминалов им указывают одинаковые имена. Имена указываются в окне String вручную или выбираются из уже назначенных через выпадающее меню при щелчке по стрелке справа в окне String. В окно свойств попадаем при двойном щелчке по установленному в схему терминалу, либо через правую кнопку мыши выбрав опцию Edit Properties (Ctrl+E). Выбранный в селекторе терминал доступен для предпросмотра перед установкой в окне Preview. Его положение можно изменять кнопками поворота/отражения. Еще одно важное замечание: выбор Default, Output, Input и Bidir влияет только на изображение терминала на схеме. Симулятору ISIS абсолютно безразлично какой из этих терминалов установлен - одноименные способны пропускать сигнал в любом направлении. Так что не уповайте на то, что если вы установили на выходе микросхемы терминал Output, то назад в микросхему он сигнал не пропустит - типичное заблуждение начинающих. Если терминалы Power и Ground после установки не поименованы особо, то они считаются подключенными к глобальным для проекта питанию и земле.
    Отдельное замечание по терминалу BUS для шин, касающемуся также и шинных маркировок (режим LBL). Наменование терминала формируется так: ИМЯ[НАЧ_РАЗРЯД..КОН_РАЗРЯД]. Здесь ИМЯ - наименование шины латиницей без пробелов и спецсимволов, НАЧ_РАЗРЯД и КОН_РАЗРЯД два числа, из непрерывного возрастающего ряда, определяющие разрядность данного терминала. Обратите внимание, что скобки обязательно квадратные и между начальным и конечным разрядом ставится ДВЕ, а не три точки, как принято у нас в сокращениях. Как это выглядит на практике. Допустим, есть шина адреса с именем (лэйблом) A[0..15]. Поместив на ее конце, или отводе терминал с именем A[0..15] я получу на одноименном терминале шины в другом месте схемы все 16 разрядов сигнала, которые потом через отходящие от шины провода с именами А0, A1 и т.д. могу развести по компонентам. Если же я размещу на отводе A[0..15] терминал A[8..11], то поместив терминал с таким же именем в другом месте, я получу на нем только четыре выделенных разряда A8, A9, A10 и A11, которые и могу растащить дальше одноименными проводами. Если кто-то не включился, я позже вернусь к этому вопросу наглядно в проекте.
    Device Pins Mode - (расчлененное изображение ОУ на сером фоне) - режим расстановки выводов модели устройства (компонента) при его создании. Мы его рассмотрим подробно в соответствующем разделе.
    Graph Mode - (две оси координат с синусоидами) - режим размещения графиков в проекте. Возможные варианты анализа с помощью графиков выбираются в окне селектора: ANALOGUE, DIGITAL и т. д. Окно соответствующего графика растягивается по полю проекта зажатой левой кнопкой мыши диагонально. Анализу с помощью графиков будет подробно посвящен целый раздел далее.
    Tape Recorder Mode - (изображение магнитофонной кассеты) - режим установки магнитофона. Сигналы, генерируемые разработанным Вами устройством, в процессе симуляции можно записать в файл с последующим использованием их в другом проекте. Для этого и служит этот виртуальный магнитофон. Позже мы вернемся к вопросу его применения.
    Generator Mode - (синусоида в окружности) - режим расстановки виртуальных генераторов. В этом режиме в окне селектора доступны для выбора и размещения в схеме виртуальные генераторы сигналов. Условно их можно разделить на цифровые (все начинающиеся с букы D, за исключением DC - постоянный потенциал) и аналоговые (все оставшиеся). Отдельно отмечу SCRIPTABLE - програмный генератор, для которого предварительно надо написать скрипт - программу на встроенном в Протеус языке Easy HDL. Два генератора FILE и AUDIO используют для генерации сигналов файлы, предварительно записанные на жесткий диск. Вопросам использования генераторов будет посвящена отдельная тема позже. Здесь же отмечу, что установка выбранного генератора осуществляется или на свободное место схемы двумя последовательными щелчками (подсветка-установка), или сразу на провод после чего в свойствах ему задаются требуемые параметры. В окне предпросмотра видно изображение генератора и доступны поворот и отражение. При последующем подключении к выводу компонента или проводу генератор автоматически изменит свое имя на имя соответствующего ближайшего вывода. Если оно Вам по каким-то причинам не нравится, через окно свойств генератора его можно переименовать по своему усмотрению.
    Voltage Probe Mode (желтый щуп с буквой V) и Current Probe Mode (желтый щуп с буквой A) - два режима расстановки пробников соответственно напряжения и тока на провода схемы. Пробники ставятся именно на провода, а не на выводы компонентов и аналогично генераторам автоматически меняют свои имена. Если воткнуть пробник на пустое место он вместо имени высветит знак вопроса. Установка токовых пробников на цифровые цепи бессмысленна, пробники напряжения на этих цепях будут индицировать не значение напряжения, а логический уровень сигнала. Еще один нюанс для токовых пробников - стрелка в кружке должна быть ориентирована вдоль провода. Если направление тока в проводе совпадает, значение тока при симуляции будет положительным, если нет - отрицательным.
    Virtual Instruments Mode - (кнопка с изображением стредочного прибора) - режим выбора и размещения виртуальных инструментов в проекте. В Протеусе, как и во многих других программах-симуляторах, имеется обширный инструментарий виртуальных приборов: вольтметры, амперметры, четырехканальный осциллограф, счетчик/частотомер, сигнал-генератор и др. специфичные приборы. В этом режиме осуществляется их выбор и размещение в проекте. Мы будем обращаться к ним по мере изучения ISIS, а пока отмечу, что большинство из них, за исключением вольтметров/амперметров имеют однополюсное подключение. Это означает, что измерение осуществляется ОТНОСИТЕЛЬНО земляного провода. Об этом не стоит забывать начинающим, чтобы не получить нереальные значения измерений. В примерах Протеуса, о которых шла речь выше есть проекты с использованием виртуальных приборов и всегда можно посмотреть: как оно действует в реальности. Единственное замечание - там использована двухканальная модель осциллографа из старых версий Протеуса. Примененная в ранних седьмых версиях четырехканалка "слегка" глючила, сейчас вроде постепенно ее довели до ума. И еще одно замечание - виртуальные приборы "съедают" определенное количество ресурсов компьютера и в сложных проектах могут стать причиной тормоза симуляции в режиме реального времени. Об этом тоже следует помнить.
    Набор 3.
    Все кнопки данного набора относятся к режиму 2D (двухмерной) графики. В общем те, кто имел дело с графическими редакторами, без труда догадаются что к чему. Но бегло поясню по рис. 10 слева направо: линии, прямоугольники, круги, дуги, замкнутые полигоны. Те из них, которые имеют в изображении зеленую заливку - могут заливаться. Немного про полигоны (восьмерка с заливкой на боку). Тут Лабцентр слегка "загнул" насчет мнемоники. Дело в том, что доступны для рисования только многоугольники, что обычно на кнопке изображается звездочкой или пятиугольником. Так что не надейтесь получить такую фигуру с плавными кривыми и заливкой, как на мнемонике кнопки - не выйдет. Далее следует кнопка размещения текста (мнемоника А), и на этом стандартные графические кнопки кончаются. По ним только одно существенное замечание. По умолчанию все они находятся в режиме Global Style - Component. Это означает, что нарисованные фигуры и линии по цвету будут соответствовать бордюру микросхем - коричневый, а заливка будет цвета хаки. Изменить цвета можно через окно свойств после прорисовки графики как я рассказывал ранее, либо заранее выбрав в селекторе объектов другой глобальный стиль. При этом в окне предпросмотра отображается как будет выглядеть нарисованный элемент. Редактирование же самих глобальных стилей возможно через верхнее главное меню Template =› Set Graphic Styles… или щелчком правой кнопкой по выбранному стилю в селекторе и выборе из всплывающего меню опции Edit (Редактировать). Но без особой надобности этого делать не советую. Проще создать свой новый стиль. Для этого, щелкнув в любом из режимов 2D графики в окне селектора объектов правой кнопкой мыши, выбираем опцию Create (Создать). Даем название стилю и жмем ОК, а потом выбрав его в селекторе через правую кнопку редактируем как и выше.
    Ну и остались нерассмотренными две кнопки, которые понадобятся при создании моделей:
    2D Graphics Simbol Mode - (буква S на зеленом квадрате) - режим выбора и размещения графических символов.
    2D Graphics Markers Mode - (прицел с зеленым квадратом) - режим выбора и размещения графических маркеров.
    Пока по этим двум режимам поясню, что при нажатии кнопки P вверху селектора объектов из этих режимов вы попадете в библиотеки стандартных графических объектов ISIS, а не в библиотеки компонентов.
    На этом наш экскурс по интерфейсу основного окна ISIS мы завершаем и переходим к более интересным темам - созданию и редактированию проектов.
Рисунок 12.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic12.gif
Просмотров: 2130
Размер:	9.8 Кб
ID:	1684  
Реклама:

Последний раз редактировалось Halex07; 04.11.2009 в 05:37.
Halex07 вне форума  
Эти 39 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
A-Soft (30.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), andron007 (03.01.2023), aneroid (27.11.2010), Bigi (10.10.2019), bz1100 (24.02.2012), Daddy_Karlo (21.01.2012), fmp (30.12.2010), garimas (15.09.2012), georgg (10.12.2018), max7533 (26.10.2009), MihailoMihalych (22.01.2023), MUR2 (12.12.2009), nech53 (06.01.2012), NikMih_1 (24.01.2011), Paulwasw (27.11.2012), PinkCasper (02.05.2010), rw54 (02.07.2010), seltec (29.05.2011), Sergey_Vl (16.03.2020), Sho_otnik (01.01.2011), sibmax_alm (09.10.2011), Space-r (04.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (03.11.2014), ДимаК (21.06.2011)
Непрочитано 08.07.2009, 00:28  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.9. "Как пройти в библиотеку? В три часа ночи?" - (к/ф "Операция Ы").
    Но прежде необходимо определиться с тренировочным проектом. Поскольку я преследую цель научить Вас быстро и красиво оформлять проект в ISIS, необходимо чтобы наш первый проект позволял показать все приемы и хитрости быстрой и качественной работы. Но и использовать бесполезные учебные проекты мне тоже не хочется. После недолгого раздумья я решил остановиться на популярной некогда цифровой шкале-частотомере на PIC16F84 А. Денисова (именно первая версия со светодиодным индикатором). Мы убъём не двух зайцев, а сразу целый табун тушканчиков. Во-первых, я почти уверен, что многие пытались запихнуть его в Протеус и убедились, что он просто так там не работает. Во-вторых, проект содержит и микроконтроллер и устройство индикации - есть что посмотреть при симуляции. Ну и в-третьих, это настолько классическая схема, что найти ее во всемирной паутине не составляет труда, а многие именно с нее начинают знакомство с микроконтроллерами. Я далеко не ходил, вот пара ссылок и одна из них прямо здесь на сайте:
    http://www.cqham.ru/digi.htm
    https://kazus.ru/shemes/showpage/0/33/1.html
    Итак, начинаем с нуля, т.е. с пустого проекта в ISIS. Если под рукой нет принтера и у Вас подключен только один монитор для удобства вычерчивания я рекомендую втащить картинку схемы на лист проекта, иначе постоянно придется переключаться между окнами. Все просто: с любой из вышеупомянутых страниц прямо из браузера IE, Opera (у меня), FireFox клацаем по схеме правой кнопкой мыши и выбираем из менюшки Сохранить изображение (рисунок) как… и далее. В результате Вы сохраните его в формате .gif. Потом открываем его в любом графическом редакторе, например в стандартном виндозном Paint и сохраняем уже оттуда как .bmp (можно черно/белый, можно 256 цветов). Вот теперь можно из ISIS через File=›Import Bitmap… втащить его на поле проекта и на месте ужать, чтобы было компактно и читабельно.
    Еще одно лирическое отступление, перед тем как мы пойдем в библиотеку. Сразу надо определиться для чего мы создаем проект. Если для реального устройства, то нам понадобятся все элементы схемы, причем в тех корпусах, которые у нас в наличии. Но в данном случае нам необходимо исследовать схему в симуляторе, поэтому корпуса элементов нас не интересуют. Кроме того, схему необходимо условно разделить на функционально законченные узлы, которые можно исследовать самостоятельно, поскольку вычислительная способность компьютера ограничена и нам ее просто может не хватить. В данном конкретном случае мы можем отсечь входной формирователь на транзисторе VT1 со всей его обвязкой - его желающие могут погонять самостоятельно и стабилизатор +5V на микросхеме 7805 - питание у нас виртуальное, поэтому данное излишество только помешает. Все модели микроконтроллеров в ISIS симулируются независимо от наличия внешних частотозадающих цепей (кварц или RC), так что и цепи кварцевого генератора тоже можно не рисовать, но я умышленно оставлю их в проекте, чтобы показать: как их исключить из процесса симуляции. Ну и еще одно упрощение - я не буду использовать токоограничивающие резисторы R2…R12 в цепи индикатора, а почему - поясню чуть позже.
    В результате нам понадобятся следующие компоненты: PIC16F84A, восьмиразрядный семисегментный индикатор с OK (аналог АЛС318 ), дешифратор 555ИД7 (которого конечно в библиотеках нет, но есть аналог - 74LS138), резисторы, конденсаторы и кварц. Пора идти в библиотеки Протеуса. "Снайперы" - заходят через одиночный щелчок левой лапкой мышки по кнопке P вверху окна селектора объектов, либо через кнопку верхнего тулбара, описанную раньше. Я поступаю проще - двойной щелчок левой в любом месте внутри селектора объектов - эффект тот же и снайпером быть не надо. В результате нам откроется окно браузера библиотек (Рисунок 13). Далее есть два пути поиска нужного нам компонента. Если мы хотим подобрать компонент, например биполярный NPN транзистор с подходящими характеристиками, тогда в окне Category - выбираем Transistors, в окне Subcategory - Bipolar, ну и я рекомендую при этом в окне ключа поиска Keywords ввести npn, чтобы отобрать только транзисторы с обратной проводимостью. После этого в списке доступных моделей отбираем подходящую (для многих в Description указаны краткие характеристики) и двойным щелчком по этой строчке отправляем ее в селектор объектов ISIS. Некоторые модели имеют несколько исполнений корпусов, которые можно просмотреть через PCB Preview. Другой способ поиска более быстрый и прогрессивный представлен в анимации на рис. 14. В окне поиска вводим часть названия компонента и номинал, например, для резистора 47кОм вводим res (начало английского resistor) и номинал 47k. Список в центре при этом резко сужается, и отобрать нужный компонент не составляет труда.
    Я рекомендую так поступить с микроконтроллером - введите 16f84 или f84 и в списке компонентов окажется только нужная нам модель.
Рисунок 13
Рисунок 14
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic13.gif
Просмотров: 2573
Размер:	71.0 Кб
ID:	1685   Нажмите на изображение для увеличения
Название: Pic14.gif
Просмотров: 1642
Размер:	150.2 Кб
ID:	1686  

Последний раз редактировалось Halex07; 04.11.2009 в 05:47.
Halex07 вне форума  
Эти 27 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
A-Soft (30.05.2016), ABrej (06.04.2010), Alcher (10.02.2010), alexandr156 (16.03.2011), Bigi (10.10.2019), bi_max (27.09.2011), bz1100 (24.02.2012), Daddy_Karlo (11.01.2010), fmp (30.12.2010), georgg (10.12.2018), MihailoMihalych (22.01.2023), Paulwasw (27.11.2012), seltec (29.05.2011), sibmax_alm (09.10.2011), Space-r (04.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (03.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 11.07.2009, 00:58  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.10. Подбираем компоненты, расставляем их в проект.
    Набираем нужные нам элементы из библиотеки двойным щелчком левой кнопкой мыши по найденным. В соответствии со схемой нам потребуются:
    м/контроллер PIC16F84A - ключ быстрого поиска: f84 ;
    7-сегментный индикатор с общим катодом - ключ: 7seg cc - выбираем 8 digit (цифр/разрядов);
    Дешифратор 74LS138 - ключ: ls138 - здесь обратите внимание будет присутствовать модель 74ALS138 для которой тип стоит No Simulation (не симулируется!!!) - для симуляции ее выбирать нельзя;
    резисторы 10кОм и 470 Ом - ключи поиска соответственно: res (istor) 10k и res 470r ;
    конденсаторы 15пФ - ключ: cap (acitor) 15pf ;
    триммер 4…15пФ - ключ cap pre - опять No Simulation - но мы его и не будем симулировать;
    кварц - ключ cryst (al);
    кнопка - butt (on) - на схеме нет, но надо же нам получить элементы управления для исследования поведения схемы в соответствии с описанием в режиме цифровой шкалы.
    Ключ быстрого поиска - это тот кусочек текста, который надо набрать в окошке Keyword, чтобы не просматривать весь список компонентов и не портить себе зрение. В скобках я указал, что res - это начало от английского resistor - резистор, сap - capacitor - конденсатор ну и т.д. Совсем не обязательно соблюдать регистр букв и последовательность расстановки отрезков текста в конечной фразе. Например поиск 7seg cc даст тот же результат, что и cc 7seg , главное разделить их пробелом, а вот слитное написание 7segcc не найдет ничего, т.к. будет искать целиком этот сочетание. Когда Вы познакомитесь с библиотеками поближе, такой поиск не будет доставлять Вам лишних хлопот. После того как мы разыщем все нужные компоненты и "прощелкаем" их, браузер библиотек можно закрыть щелчком по крестику Х вверху справа или по кнопке Cancel внизу справа. Все выбранные нами компоненты должны оказаться в селекторе объектов. Теперь можно разместить их на листе проекта. В режиме Component Mode встаем в селекторе на требуемый компонент - он появляется в верху в окне Preview - если надо заранее поворачиваем или отражаем его, щелкаем левой кнопкой в поле проекта - компонент подсвечивается - выбираем место установки и вторым щелчком фиксируем его. На рис. 15 я постарался показать - как это выглядит полностью с уже размещенными проводами и шинами. Обратите внимание, что по сравнению с исходной схемой произошли значительные изменения. Добавились кнопки SB1...SB3 вместо перемычек J3 и J4 у автора. Особенно отмечу кнопку SB3 состоящую из двух. ISIS при установке кнопок в проект не поддерживает для них автонумерацию и обозначение. Они введены вручную. Для чего мне понадобилась кнопка SB3, да еще со странным свойством GANG=1 (рис. 16). По замыслу автора один из режимов должен включаться одновременным замыканием J3 и J4 на землю. В ISIS мы управляем нажатием кнопок курсором мыши и левой кнопкой, но курсор то всего один, а замкнуть надо сразу две точки. Вот для этого и служит свойство GANG (произносится как в боксе, а не как индийская река), которое позволяет засинхронизировать нажатие нескольких кнопок или работу переключателей. Для другой синхронной группы нужно назначить GANG=2 и т. д.
    Кроме того, для элементов кварцевого генератора: C1, С2, VC1 и X2 я заранее установил в свойствах галочку (Рис. 16) Exclude From Simulation (исключить из симуляции). Если этого не сделать, то ISIS выдал бы нам при запуске симуляции ошибку для подстроечного конденсатора - ведь он No Simulation. Да и модель кварца в Протеусе оставляет желать…, но об этом позже. Эти элементы вообще можно было не устанавливать, ведь для микроконтроллеров в Протеусе принята программная симуляция генератора и задается она в свойствах микроконтроллера в соответствующей строке: Processor Clock Frequency. Еще одна особенность - я торжественно "похоронил" входной формирователь, а вместо него подключил через кнопку SB4 цифровой генератор DCLOCK из левой панели (режим Generator Mode).
    Ну и последнее, что бросается в глаза на рисунке 15 - провода от шин не имеют обозначений. Да у Вас то они еще и не должны быть нарисованы - я слегка опередил события. В следующем разделе мы ими и займемся. А пока во вложении проект в том виде, как на рис. 15. Проект для версии Протеуса 7.4SP3, но там же лежит файл Section_0.SEC , который можно через File=›Import импортировать в более ранние версии. Там же помещен и текстовый файл описания схемы, картинка в формате BMP, а также ассемблерный файл исходной программы DigiScal.asm и прошивка DIGISCAL.HEX для микроконтроллера.
Рисунок 15
Рисунок 16
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic15.gif
Просмотров: 3707
Размер:	40.3 Кб
ID:	1687   Нажмите на изображение для увеличения
Название: Pic16.gif
Просмотров: 2485
Размер:	29.6 Кб
ID:	1688  
Вложения:
Тип файла: rar FMeter_0.rar (69.9 Кб, 1820 просмотров)

Последний раз редактировалось Halex07; 04.11.2009 в 06:06.
Halex07 вне форума  
Эти 29 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
A-Soft (30.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), Bigi (10.10.2019), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), garimas (15.09.2012), leoblp (01.12.2009), max7533 (26.10.2009), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), rw54 (02.07.2010), seltec (29.05.2011), sibmax_alm (09.10.2011), Space-r (04.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), VooVoo (14.11.2014), wct_sniaper (29.01.2010), wlad62 (16.12.2009), ДимаК (21.06.2011)
Непрочитано 11.07.2009, 04:19  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.11. Приемы быстрого редактирования. Разводка проводов и шин.
    Ну вот мы и подошли к тому материалу, из-за которого главным образом и затевался раздел для начинающих. Разводка одиночных проводов как правило не вызывает особых затруднений. Здесь важно подчеркнуть одну особенность - почти не важно в каком режиме находится меню селектора объектов: Component Mode , 2D Graphic или другом. Если из этого режима возможно проведение одиночного провода, то при наведении курсора на начальную точку - он автоматически встанет в режим рисования проводов - курсор - зеленый карандаш (Рис. 17). Если начальная точка - вывод элемента, то она подсветится красным квадратиком - как на рисунке, если это шина или одиночный провод - середина подсветится тонким красным пунктиром (на анимации Рис. 18 это видно при проведении верхнего провода к шине). Первым щелчком левой кнопкой мыши стартуем начало рисования и ведем курсор к конечной точке, где фиксируем окончание повторным нажатием левой кнопки. Если включен режим Wire Autorouter (на Рис. 18 я его выключаю), то провод прокладывается строго под прямыми углами и автоматически обходит все "зарезервированные" места, т.е. компоненты, текстовые скрипты и т.п. Таким образом, достаточно щелкнуть начальную и конечную точки, и провод сам ляжет на схему, но при этом "как бог (точнее богиня ISIS) на душу положит". Я категорически против такого насилия над человеческими мозгами, поэтому рекомендую при проведении провода фиксировать привязку самих проводов и поворотов в нужных местах одиночными щелчками левой кнопкой. Это ограничивает действия автороутера, зато схема получается приличной на вид. Если же режим автороутера выключен, то провод можно прокладывать в любом направлении и под любым углом, даже поверх установленных элементов. Ну и еще один важный момент - в любом режиме провода прокладываются строго по установленной в данный момент сетке (по умолчанию 0,1 Inch = 2,54 мм), т.е. если необходимо провода расположить чаще - измените шаг сетки (меню View=›Snap… или соответствующими функциональными клавишами).
    Шины рисуются как и провода с той лишь особенностью, что в левом меню режима селектора необходимо выбрать Buses Mode .
    Теперь еще об одной важной особенности ISIS, позволяющей существенно ускорить прокладку однотипных по виду проводов. После прокладки очередного провода (шины) двойной щелчок левой кнопкой мыши в любом месте поля проекта в точности повторит это действие. Что нам это сулит - ясно из анимированного рисунка 18. Здесь я применил эту особенность для прокладки проводов к шине от выходов дешифратора 74LS138. Для "чистоты эксперимента" я даже усложнил Протеусу задачу, заставив его рисовать столь любимые некоторыми подводки к шине с "загибулинами". Для этого сначала отключается режим Wire Autorouter , а на месте загиба при прокладке первого провода делается дополнительный щелчок. Остальные провода прокладываются просто двойным щелчком левой лапкой мышки при наведении на окончание вывода микросхемы. Ну и в завершение двойным щелчком уже правой лапкой удаляется ненужный хвост шины. Этот процесс я мог проделать и в обратном направлении, т.е. первый провод провести от шины к выводу и далее щелкать по ней с нужным шагом, но надо точно попадать курсором на пунктир внутри шины.
    Вообще я как то упустил этот момент выше, поэтому отмечу здесь: двойной щелчок или два с паузой щелчка правой кнопкой мыши по любому элементу схемы в ISIS (будь то микросхема, резистор, надпись, шина, провод и т.п.) - удаляет этот элемент из проекта. Причем для данного конкретного случая - удалилась не вся шина, а только незадействованный ее отрезок.
    Ну и завершая этот раздел, отмечу, что если стартовать провод Вы можете только с конкретных мест: выводы компонентов, другие провода или шины, то бросить его окончание можно в любом месте двойным щелчком левой кнопкой мыши. При этом он завершится соединительной точкой ( Junction Dot ), к которой впоследствии можно подтянуть провод от другого элемента.
Рисунок 17
Рисунок 18
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic17.gif
Просмотров: 1831
Размер:	6.1 Кб
ID:	1689   Нажмите на изображение для увеличения
Название: Pic18.gif
Просмотров: 2075
Размер:	64.4 Кб
ID:	1690  

Последний раз редактировалось Halex07; 04.11.2009 в 05:51.
Halex07 вне форума  
Эти 29 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
A-Soft (30.05.2016), ABrej (06.04.2010), Alex22B (24.07.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), Daddy_Karlo (13.01.2010), fmp (30.12.2010), KilleRMill (10.02.2010), leoblp (01.12.2009), max7533 (26.10.2009), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), rw54 (02.07.2010), seltec (29.05.2011), sibmax_alm (09.10.2011), Space-r (04.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 13.07.2009, 06:39  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.12. Приемы быстрого редактирования. Маркировка проводов и шин. Перенумерация элементов и назначение им свойств с помощью Property Assignment Tools.
    Для начала выясним - зачем нужна маркировка (лэйблы) проводов в ISIS и что в этом полезного. Дело в том, что все провода в Протеусе, которые имеют одинаковую маркировку, имеют как бы физическое соединение, даже если видимо не соединены. Маркировка должна быть уникальной и не содержать русских символов, только латинские буквы и цифры. Спецсимволы также лучше не использовать, поскольку многие из них имеют служебное значение и могут быть двояко приняты симулятором PROSPICE. Например, если текст наименования терминала, вывода или тот же лэйбл с двух сторон ограничить значком доллара $, то текст будет показываться с верхним надчеркиванием, как принято для инверсных сигналов. Это касается именно текста, а не сигнала в проводе, он как был, так и останется.
    И еще одно важное замечание. В ряде случаев непрерывные провода можно заменить терминалами - из левого меню режим Terminal Mode , чтобы не загромождать схему. Одноименные терминалы считаются Протеусом физически соединенными, например RA2 на Рис. 19 . Причем вид терминала Input, Output и т. п. не влияет на направление проводимости. Об этом я уже упоминал. Но есть и еще одна особенность для проводов. Помните тот провод, сиротливо оканчивающийся Junction Dot из предыдущего параграфа? Даже если такому проводу присвоить Label, уже встречающийся в проекте, - ISIS воспримет его, как физически соединенный ("припаянный") с одноименными проводами. Эту особенность можно использовать в своих целях, хотя и не очень корректно смотрится провод, идущий в никуда с присутствующим на нем сигналом.
    Одиночные провода конечно проще маркировать вручную. Выбираем слева режим Wire Label Mode (кнопка LBL), наводим кусор на то место на проводе (шине) в котором надо поставить маркировку - под курсором появится белый крестик Х и щелкаем левой кнопкой. В результате попадаем в окно Edit Wire Label (Рис. 20). Здесь мы либо вручную вводим имя провода, либо выбираем из раскрывающегося списка, если провод в другом месте уже получил нужную нам маркировку. В списке даже для пустого проекта уже доступны стандартные питание и земля: GND, VCC, VDD, VSS. Остальные будут добавляться по мере присваивания маркировок проводам в ходе редактирования проекта. В этом же окне можно выбрать ориентировку текста и его положение, впрочем, для вертикальных и горизонтальных проводов ISIS предлагает это автоматически. На вкладке Style можно подкорректировать изображение маркировки (цвет, жирность, шрифт и т. п.).
Рисунок 19
Рисунок 20
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic19.gif
Просмотров: 2714
Размер:	10.5 Кб
ID:	1691   Нажмите на изображение для увеличения
Название: Pic20.gif
Просмотров: 1992
Размер:	10.7 Кб
ID:	1692  

Последний раз редактировалось Halex07; 08.12.2009 в 19:16.
Halex07 вне форума  
Эти 30 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
A-Soft (30.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), garimas (16.09.2012), KilleRMill (10.02.2010), leoblp (01.12.2009), max7533 (26.10.2009), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), seltec (29.05.2011), Sergei751 (14.11.2010), sibmax_alm (09.10.2011), Space-r (04.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 16.07.2009, 04:14  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • Все вышесказанное хорошо, когда в схеме не больше десятка проводов, а если их много? Вот тут и пришел черед Property Assigment Tools , как было обещано. Это универсальное средство и мы им сейчас научимся пользоваться, поскольку даже в родном HELP-е Протеуса ему уделено весьма скромное внимание. Для начала применим его для маркировки проводов, отходящих от шины. Вызовем окно Property Assigment Tools ( PAT далее в тексте и в родном хелпе Протеуса) (Рис. 21) через кнопку с изображением гаечного ключа и буквы A в верхнем меню, или просто нажав латинскую A на клавиатуре. Я решил провода, отходящие с выходов дешифратора, назвать в соответствии с индицируемым разрядом: DIG1 - первый, DIG2 - второй и т.д. ( от английского Digit - цифра). Для проводов, как и для терминалов доступно свойство NET (от английского Network - цепь - в данном конкретном случае). В окне String вводим свойство, которое будем менять, и через знак равенства новое его значение - DIG. Если необходимо обеспечить автонумерацию, то на то место, где будет располагаться номер ставится знак решетки: #, в окне Count вводится начальное значение автоотсчета (по умолчанию - 0), а в окне Increment - шаг приращения номера (по умолчанию - 1. В рамке Action (Действие) оставляем как есть Assign (Назначить). В рамке Apply To (Применить к …) оставляем On Click (На щелчок мышкой). Нажимаем OK, чтобы закрылось окно.
    После этого последовательно проводим курсор по тем проводам выходов дешифратора, которые необходимо промаркировать и делаем одиночные щелчки левой кнопкой, когда курсор принимает соответствующий вид - рука-указатель с зеленым квадратом справа (Рис. 22). Маркировка восьми выходов займет не более восьми же секунд, даже с заторможенной принятой банкой пива реакцией. Проделав данную операцию с выходами дешифратора, снова нажимаем клавишу A, или кнопку в верхнем меню, чтобы вызвать окно PAT . В окне String все осталось по прежнему, а вот в окне Count придется поправить начальное значение на 1, т.к. оно сбросилось в ноль. Снова давим ОК, чтобы закрыть окно и повторяем операцию с проводами к разрядам индикатора, маркируя их справа - налево. Чтобы завершить работу с функцией PAT придется еще раз вызвать окошко и нажать Cancel, иначе она будет действовать бесконечно. Аналогичным способом я промаркировал провода с выходов порта B микроконтроллера SEG1…SEG8. Конечно, логичнее было бы назвать из SEGA, SEGB и т.д., но тогда мне пришлось бы проделывать это вручную, а это лишняя трата времени при том же конечном результате. На все операции с маркировкой проводов от шин с использованием PAT я потратил менее двух минут - попробуйте проделать это вручную и засеките время.
    Ну а дальше как в надоевшей рекламе телемагазина на диване: "Но и это еще не все…, купив у нас пылесос Вы получаете совершенно бесплатно замечательный подарок - огромный мешок пыли для его проверки". Обратите внимание на обведенный рамкой на Рис. 21 встроенный Help функции PAT . Там кратко перечислено какие свойства для каких объектов можно менять. Кстати, решетка автонумерации не обязательно должна быть в конце строки - где поставите там и будет вставляться номер, например, если так: #SEG, то получим 1SEG, 2SEG и т. д.. В рамке Action можно назначить другое действие, например Rename - переименовать, Show - показать, а в рамке Apply To - применительно к каким объектам. Чтобы привести примеры всех возможных сочетаний здесь не хватит места. В качестве закрепления материала попробуем применить функцию для других целей в нашем проекте. Забегая вперед, укажу, что мне необходимо сделать резисторы R1…R4 цифровыми, чтобы снизить загрузку компьютера при симуляции. Для наглядности сначала "подсветим" это свойство резисторов, хотя этого можно было бы и не делать. Вызвав функцию PAT , в окошке String наберем PRIMITIVE, а в рамке Action выберем Show - показать. Оставляем по клику мышки и давим ОК. теперь кликаем левой лапкой по каждому резистору. В результате внизу под резисторами на месте серой надписи ‹TEXT› появится наше свойство PRIMITIVE=ANALOG. Снова вызываем PAT и набираем строчку PRIMITIVE=DIGITAL. Опять OK и кликаем по всем резисторам. Мы видим, что строчка поменялась. Еще раз заходим в PAT и, оставив String только PRIMITIVE, выбираем действие Hide - скрыть. Далее OK, и пробегаем кликами по резисторам. Еще раз в PAT , чтобы завершить функцию - Cancel. Вы наверное догадались, что первая и третья операции только для наглядности, можно было и не подсвечивать свойство. А можно было подсветить и немного по другому - выбрав в рамке Apply To - All Object, правда при этом подсветилось бы свойство у всех объектов, где оно представлено, т.е. еще и у кондесаторов, кнопок и микроконтроллера. Подсвечивать свойство полезно тогда, когда меняем много объектов, чтобы не пропустить нужные и не изменить лишнего. Если выбирать опции Local Tagged (на листе) или Global Tagged (в проекте), то объекты перед вызовом PAT необходимо выделить. Ну и завершая тему PAT , еще два типичных частых применения функции: перенумерация компонентов по клику в окне String набираем, например, для резисторов: REF=R#, начальное значение ставим 1 и проходим по резисторам в том порядке в котором необходима нумерация в схеме. Изменение номинала резисторов: задаем в строке VALUE=270R - щелкаем по R3 и R4, вместо 470 Ом получили 270 Ом. Можно менять и пользовательские свойства. Задаем в String - GANG=2, щелкаем по кнопкам SB3.1 и SB3.2 и видим, что гонги изменились. Вот такой могучий инструмент заложен внутри программы ISIS. Надеюсь, после данной публикации на форум будут меньше выкладывать "кривых" проектов, а скорость разработки у прочитавших и освоивших этот материал существенно повысится.
Рисунок 21
Рисунок 22
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic21.gif
Просмотров: 2370
Размер:	28.2 Кб
ID:	1693   Нажмите на изображение для увеличения
Название: Pic22.gif
Просмотров: 1717
Размер:	37.8 Кб
ID:	1694  

Последний раз редактировалось Halex07; 04.11.2009 в 05:54.
Halex07 вне форума  
Эти 35 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
-AnB- (04.09.2011), A-Soft (30.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), andron007 (03.01.2023), bi_max (27.09.2011), bz1100 (24.02.2012), e_oshtuk (10.01.2010), fmp (30.12.2010), igor7779 (16.12.2009), igorexa190 (05.11.2010), KilleRMill (10.02.2010), leoblp (01.12.2009), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), rw54 (02.07.2010), seltec (29.05.2011), sibmax_alm (09.10.2011), Space-r (04.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), vitalgolov (28.09.2010), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011), Ерема (08.12.2009)
Непрочитано 16.07.2009, 04:23  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.13. Свойства моделей микроконтроллеров. Задание численных значений и размерность.
    С оформлением схемы мы как будто закончили. Осталось разобраться со свойствами микроконтроллера, "зашить" его микропрограммой и поправить еще кое-что в свойствах. Для начала входим в свойства микроконтроллера двойным кликом по нему левой кнопкой или через правую и опцию Edit Properties (можно, выделив его, нажать на клавиатуре Ctrl+E). Получаем окно свойств (Рис. 23). Что здесь является обязательным хотя бы на первый момент? Я уже упоминал, но еще раз повторюсь, что во всех моделях микроконтроллеров реализовано программная установка частоты. Это означает, что в свойствах конкретного микроконтроллера всегда присутствует окно либо Processor Clock Frequency (как на рис. 23) - для PIC-контроллеров, либо просто Clock Frequency -для всех остальных (8051, АVR, ARM). Вот здесь и задается тактовая частота - будь то в реальности кварцевый резонатор, RC-цепочка или внешний источник тактовой частоты. И для простого моделирования (без разработки печатной платы в ARES) нет смысла навешивать на схеме какие-то еще частотозадающие элементы. Достаточно прописать здесь частоту, а для микроконтроллеров, имеющих в реальности внутренние задающие генераторы в соответствующем окне свойств модели дополнительно выбрать режим. В частности в данном случае он зависит от слова конфигурации, а в микроконтроллерах AVR, входящих в библиотеку AVR2.DLL необходимо установить фьюзы CLKSEL. В любом случае никогда не лишне воспользоваться кнопкой HELP (рис. 23). Конечно, необходимо познание хотя бы азов английского, чтобы сориентироваться там, но при этом Вы избавите себя от многих неожиданностей и потраченного впустую времени. Например, для PIC16F84A там доступны к просмотру следующие подразделы:
    Model Properties (Alphabetical Index) - свойства модели с указанием принятых по умолчанию (Default) и их размерностью.
    Explanation of Warning Messages - разъяснение предупреждающих сообщений симулятора.
    Run Time Disassembler - пояснение по использованию встроенного дизассемблера.
    High Level Language Support - перечень поддерживаемых компиляторов языков высокого уровня с указанием типов подключаемых файлов, позволяющих вести пошаговую отладку.
    Кроме того, из всплывающего HELP при наличии подключенного канала Интернет возможно скачивание англоязычных даташитов (подробных описаний на компонент) при щелчке левой кнопкой по требуемому. Впрочем, для данного МК это возможно и без вызова HELP при нажатии кнопки Data (Рис. 23), но эта кнопка не всегда присутствует в окне Properties.
    А для моделей МК AVR, например, через кнопку HELP доступны еще и такие разделы, как General Model Limitations - общие ограничения к использованию и отдельным пунктом - конкретные для группы МК. Знакомство с этими разделами избавит Вас от лишних хлопот. Простой пример для АВР есть общее ограничение: JTAG interface is not supported - интерфейс JTAG не поддерживается. Зная это, я никогда не буду пытаться выполнить симуляцию с использованием JTAG и терроризировать форумы бесполезными вопросами по этому поводу. Там же: Power supply voltage changing is not supported. И не надо зря искать варианты по запитке МК AVR отличным от +5V по умолчанию напряжением.
    Но вернемся к "нашим баранам". Итак, в окне установки частоты я выставил 4MHz в соответствии с частотой используемого кварца в исходной схеме. При желании я мог бы записать это и как 4000000 без указания размерности, что соответствовало бы четырем миллионам Герц, или так: 4000k и ISIS приняла бы любую запись. Вообще давайте здесь разберем способы задания номиналов в ISIS, тем более, что сейчас я начну активно оперировать с ними. Разработчики Протеуса значительно облегчили пользователям задачу указания номиналов, переложив разборку написанной нами галиматьи на интерфейс программы. Так, в частности если Вы указываете номинал просто числом, то он в зависимости от типа компонента и задаваемого параметра будет соответствовать основной единице измерения данной величины.
    Например, если указать для терминала питания значение +5 - это 5 Вольт, для резистора - 510 = 510 Ом, конденсатора - 1 = 1 Фарада, для времени и длительности 10 = 10 секунд, частота 1000 =1000Гц. В тоже время Протеус прекрасно поймет, если вы используете буквенное обозначение величины в конце: V - Вольты, А - Амперы, Ohm (или R ) - Омы, F - Фарады, H - Генри, S - секунды, Hz - Герцы.
    Теперь разберемся с производными величин:
    Вниз: нано - n , микро - u , мили - m . Вверх: кило - k , мега - М , гига - G .
    ISIS поймет запись в любом исполнении. Если окно предназначено для задания времени, то вместо 1 (что означает 1 секунда) я могу указать и 1000mS или просто 1000m, опустив символ наименования. К примеру, частоту (рис. 23) можно было бы записать еще и как 4M.
    Для разделения в десятичных дробях используется символ точки. Пример: 4.092kHz.
Рисунок 23
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic23.gif
Просмотров: 2032
Размер:	36.4 Кб
ID:	1695  

Последний раз редактировалось Halex07; 04.11.2009 в 05:56.
Halex07 вне форума  
Эти 31 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
-AnB- (05.09.2011), A-Soft (31.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), alexandr1981 (16.09.2011), bi_max (27.09.2011), bz1100 (24.02.2012), Daddy_Karlo (11.01.2010), fmp (30.12.2010), garimas (17.09.2012), igorexa190 (05.11.2010), leoblp (01.12.2009), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), rw54 (02.07.2010), seltec (29.05.2011), Sergei751 (14.11.2010), sibmax_alm (09.10.2011), Space-r (04.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 18.07.2009, 01:24  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.14. "Прошивка" микроконтроллера в ISIS.
    Настала пора "прошивать" микроконтроллер. Для задания в качестве прошивки для любой модели идеально подходит файл в формате Intel Hex . Это именно тот файл, который формируется практически всеми компиляторами и затем указывается программатору при прошивке реального контроллера. Файлы в формате Hex обычно прикладываются авторами разработок для самостоятельного повторения конструкции. Однако использование этого формата в ISIS исключает возможность пошаговой отладки программы, если только он не был сформирован с использованием встроенных компиляторов Протеуса, о чем чуть ниже в этом разделе. Поэтому, применяя чужие прошивки для тестирования в ISIS, не надейтесь сразу получить положительный результат в симуляторе. А как быть, если разработчик кроме hex-файла больше ничего не предоставил? Ответ прост, как яйца от МТС, - используйте программы дизассемблеры для восстановления исходного кода. Найти их бесплатные варианты в Интернет не составит большого труда через тот же Google.
    Вот две ссылки для наиболее популярных МК:
    для PIC - http://www.hagi-online.org/picmicro/picdisasm_en.html
    для AVR - http://www.atmel.ru/Software/Software.htm - старенький дизассембелер AVRDASM105
    Дизассембирование кода для большинства MK также возможно и в столь популярном дизассемблере IDA Pro: http://www.idapro.ru
    Ну и, кроме того, многие компиляторы, например, столь популярный CCS PICC, содержат встроенные инструменты для дизассемблирования. Есть здесь только одно но… Если Вы воспользовались дизассемблированием hex-файла, то приготовьтесь к дальнейшей разборке полученного кода вручную. Потому что все авторские комментарии и названия переменных были утеряны при компиляции Hex , а после дизассемблирования они будут заменены на безликие ссылки автоматически генерируемые дизассемблером. Для сравнения приведу один и тот же кусок ассемблерного кода в авторском варианте и восстановленный дизассемблером из hex-файла:
    Код:
    ; Проверка клавиатуры
    ;=============================================
    ;
    Inkey
                clrf       PortA       ; RA0..RA3 = 0
    
                bsf        Status,RP0
                movlw      b'00010011'
                movwf      TrisA       ; RA0,RA1,RA4 input
                bcf        Status,RP0  ;
    
                movf       PortA,w
                andlw      b'00000011'
                return
    Код:
    LADR_0x0001
        CLRF PORTA           ; !!Bank!! PORTA - TRISA
        BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
        MOVLW 0x13           ;   b'00010011'  d'019'
    ;   Interrupt-Vector
        MOVWF PORTA          ; !!Bank!! PORTA - TRISA
        BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
        MOVF PORTA,W         ; !!Bank!! PORTA - TRISA
        ANDLW 0x03           ;   b'00000011'  d'003'
        RETURN
    Как мы видим различия ассемблерного кода справа и слева налицо. Поэтому для программ полученных со стороны, всегда лучше иметь исходный код на том языке, на котором писалась программа: Assembler, С, Basic и т. д. . В нашем случае имеется файл Digiscal.asm и скоро он нам понадобится, а пока я подключил авторский файл DIGISCAL.HEX (Рис. 23), чтобы как и многие до меня убедиться в том, что в Протеусе этот вариант работать как надо не будет. В дальнейшем в своих собственных проектах я рекомендую Вам следовать золотому правилу - файлы прошивки hex, а также исходники программы на ассемблере или языках высокого уровня и генерируемые ими промежуточные файлы складывать в ту же папку, где лежит проект для ISIS, иначе при пошаговой отладке Вы рискуете не увидеть исходного текста программы, поскольку Протеус их не будет искать по всему жесткому диску.
    Еще нам надо до начала симуляции задать частоту генератора, с которого мы будем подавать частоту на вход нашего частотомера. Для этого надо войти в его свойства двойным кликом левой кнопкой мыши по нему или через правую Edit Properties . Я попутно переименовал его в Clock , чтобы помнить - какой тип выбран и задал ему для начала частоту 100 Гц (Рис. 24).
    Кроме того, для всех элементов кварцевого генератора в свойствах я установил галочку Exclude From Simulation (исключить из симуляции) по причинам о которых я уже упоминал (Рис. 25).
    Подготовленный таким образом проект во вложении. Я уже удалил из него схему, чтобы уменьшить размер, а для счастливых обладателей старых версий как всегда присутствует файл Section1 .
Рисунок 24
Рисунок 25
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic24.gif
Просмотров: 1928
Размер:	16.6 Кб
ID:	1696   Нажмите на изображение для увеличения
Название: Pic25.gif
Просмотров: 1492
Размер:	10.5 Кб
ID:	1697  
Вложения:
Тип файла: rar FMeter_1.rar (60.8 Кб, 1294 просмотров)

Последний раз редактировалось Halex07; 04.11.2009 в 06:04.
Halex07 вне форума  
Эти 25 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
A-Soft (31.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), garimas (17.09.2012), leoblp (01.12.2009), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), rw54 (02.07.2010), seltec (29.05.2011), Sergei751 (14.11.2010), Space-r (05.05.2010), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), wlad62 (16.12.2009), ДимаК (21.06.2011)
Непрочитано 27.07.2009, 15:13  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.15. Первый неудачный запуск симуляции. Пляски с бубном или анализ возможных причин неработоспособности в симуляторе реально работающей схемы.
    Для запуска симуляции созданного нами проекта осталось нажать кнопку Play внизу слева в трее окна ISIS. Результат первого запуска на рисунке 26. Я уменьшил окно программы, чтобы разместить его целиком на рисунке, поэтому расположение панелей внизу немного отличается от полноэкранного режима, где они расположены горизонтально в ряд.
    О старте симуляции свидетельствует зеленая подсветка кнопки Play. Зеленый кружок с символом i свидетельствует о том, что запуск прошел без ошибок. Лог симулятора содержит 7 сообщений (Messages). При желании его можно открыть не останавливая симуляции щелкну по нему левой кнопкой мыши. Если бы были какие то отклонения при запуске симулятора, то вместо зеленого круга был бы желтый треугольник с восклицательным знаком, а при наличии критического сбоя симулятора - красный. В последнем случае окно лога открывается автоматически, т.к. симуляция не работает вообще. Но и наличие желтых "горчичников" тоже свидетельствует о том, что результат симуляции подлежит сомнению и дополнительной проверке. В таймере ANIMATING: происходит отсчет времени с начала запуска и показана загрузка процессора (CPU ) компьютера. Еще раз хочу обратить внимание на этот показатель. Математика симулятора PROSPICE, на котором базируется ISIS, отнимает значительные ресурсы компьютера, особенно при расчете работы аналоговых схем, где требуется провести очень большое количество расчетов как по времени, так и по уровням сигналов. Поэтому при загрузке CPU load 100% или близко к этому имитация работы схемы в реальном времени практически невозможна. Обычно Протеус предупреждает об этом наличием "горчичника" и сообщением в логе:
    Simulation is not running in real time due to excessive CPU load
    В этом случае необходимо либо прибегнуть к упрощению схемы за счет сокращения входящих в нее аналоговых компонентов, либо - попробовать проанализировать необходимые нам параметры с помощью графиков (Graph Mode), которые позволяют просчитать и получить результаты за счет более длительного но распределенного по времени вычисления, снимая при этом загрузку с ЦП компьютера. Этим мы чуть ниже и займемся, но совсем по другим причинам.
    Итак, мы видим, что даже при отжатой кнопке на входе частотомера вместо нормального показания 00.00000 уже несоответствие показаний, а если кнопку нажать, то показания индикатора пропадают совсем и лишь изредка на нем мелькает непонятная информация. Немного отвлекусь на управление активным элементом Button (Кнопка) в процессе симуляции (Рис.27). Дело в том, что модели активных компонентов коммутации Button (Кнопка) и некоторые Switch (Переключатели), входящие в стандартные библиотеки Протеуса могут управляться двумя способами. В первом случае управление происходит щелчком левой кнопкой мыши по нужному элементу управления черный кружок со стрелкой, а во втором при наведении курсора на само изображение управляемой части компонента. Если у переключателей положение после воздействия фиксируется, то единственный в ISIS компонент Button ведет себя иначе. При щелчке по элементу управления - кнопка ведет себя как кнопка с фиксацией (выключатель), а при наведении курсора на саму кнопку - нажатие левой кнопки мышки вызывает нажатие кнопки, а отпускание мышки - возврат в исходное состояние - т.е. имеем нефиксируемую кнопку. Кнопку SB4 в нашей схеме мы будем использовать как фиксируемый выключатель входа. Еще один нюанс - все активные элементы управления в Протеусе функционируют даже при выключенной симуляции, что позволяет провести предустановку параметров схемы перед выполнением симуляции. Например, установив в проект активную модель термопары (Thermocouple) или One-Wire температурного датчика DS18B20, Вы можете до начала симуляции установить им температуру на нужное значение.
    На этом закончим лирическое отступление вернемся к нашей схеме и попробуем понять почему индикация погасла при подаче на вход измеряемого сигнала. Первая причина - низкая частота подаваемого сигнала - в нашем случае 100Гц. Я не буду полностью расписывать принцип работы частотомера Денисова, а только напомню, что такая структура прибора предусматривает измерение по переполнению счетчика/таймера микроконтроллера. Поскольку входную частоту мы выбрали очень низкой, переполнение происходит редко, а индикация жестко завязана с циклом измерения - отсюда и редкие мерцания. Тот же эффект будет и в реальном устройстве. Остановим симуляцию и увеличим измеряемую частоту генератора CLOCK до 10кГц, тем более, что низкая загрузка CPU (в моем случае 7%) позволяет это сделать. Снова запустим симуляцию. При подключенном генераторе картинка изменилась - вместо редко мерцающих хаотичных сегментов - появились постоянно горящие, но от этого нам не легче.
    Исполним второе па "мармезонского балета" на этот раз с индикатором. Войдем в его свойства и найдем там параметр Minimum Trigger Time. По умолчанию там стоит значение 1ms (милисекунда). Что он означает? Согласно Help на данный компонент - это минимальное время присутствия сигнала на выводе индикатора при котором сегмент засвечивается. Правда в Help почему то указано по умолчанию 1us, но оставим эту очепятку разработчикам, а сами действительно установим такое значение. Снова запустим симуляцию. Картинка опять изменилась. Теперь при подключенном генераторе горит непотребное значение, явно отличающееся от подаваемого, а при отключенном - все нули, но в обоих случаях висят лишние десятичные точки, хотя должна быть только одна. Это уже "теплее", но не соответствует реальности. Дальнейшее уменьшение Trigger Time желаемого эффекта уже не дает, так что пляски с бубном придется прекратить и перейти к более детальному исследованию поведения динамической индикации в симуляторе ISIS PROSPICE. Для этого нам придется прибегнуть к помощи графиков (Graph).
Рисунок 26
Рисунок 27
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic26.gif
Просмотров: 2115
Размер:	48.9 Кб
ID:	1700   Нажмите на изображение для увеличения
Название: Pic27.gif
Просмотров: 1271
Размер:	5.8 Кб
ID:	1701  

Последний раз редактировалось Halex07; 04.11.2009 в 06:08.
Halex07 вне форума  
Эти 28 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
A-Soft (31.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), downkazus (13.07.2010), fmp (30.12.2010), garimas (17.09.2012), igor7779 (16.12.2009), leoblp (01.12.2009), lisergin (23.09.2010), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), rw54 (02.07.2010), sa502 (18.12.2009), seltec (29.05.2011), Sergei751 (14.11.2010), Space-r (04.05.2010), switch0 (03.12.2012), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 27.07.2009, 15:23  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.16. Зонды-пробники в Протеусе.
    Прежде, чем мы начнем использовать графики для исследования нашей схемы, необходимо определиться: какие сигналы мы хотим поместить на график. В данном случае у нас возникла проблема с индикацией. Естественным образом напрашивается вывод: нужно рассмотреть сигналы, идущие на семисегментный индикатор. Кто-то из оппонентов тут же скажет: а на фига ему график - ведь есть же четырехканальный осциллограф. Да, есть. Но, во-первых мне необходимы 9 каналов: 8 на разряды индикатора и как минимум один на сегменты. Во-вторых, шину на сегменты я собираюсь рассматривать как единый сигнал, т. е. любое изменение данных на восьмиразрядной шине SEG - это смена информации. Вот и попробуйте отследить это с помощью осциллографа, а я постою в сторонке и посмотрю, что из этого выйдет. Единственный виртуальный прибор, который может дать нам реальную картинку в этом случае - логический анализатор. Но у меня со времен ЕС ЭВМ выработалась стойкая аллергия на этот агрегат. Кто копался с реальными приборами - знает, каково это - прицепиться к 8 точкам схемы с помощью анализатора, паутина получается еще та… Позже я покажу, как его использовать для данной цели, и Вы сможете сравнить - что лучше. В виртуальном мире все проще. Итак, мы будем использовать Digital Graph (цифровой график), а для того чтобы поместить в него сигналы - необходимо расставить зонды в нужных точках схемы.
    В ISIS можно использовать два типа зондов: напряжения V и тока I. Соответствующий режим выбирается в левом вертикальном меню (Рис.28 ). На рисунке показан зонд, установленный на шину сегментов индикатора.
    Прежде чем его установить необходимо присвоить шине маркировку (лэйбл). В данном случае маркировка ставится вручную, т.е. выбираем режим LBL, наводим курсор в нужное место шины (при этом подсветится красный пунктир внутри ее а под карандашом курсора появиться белый Х) и щелкаем левой кнопкой. Я присвоил шине имя SEG[1..8] (еще раз напомню- точек две!!!), потому что в данном пробнике мне необходимо контролировать все восемь сигналов сегментов. Совет на будущее - если сделать отвод от шины и ввести для лэйбла только сигналы сегментов SEG[1..7], то код на графике этой шины будет совпадать с семисегментным кодом символа, записанным в программе микроконтроллера. Иногда такое полезно при отладке.
    После этого переходим в режим расстановки пробников напряжения (кнопка в левом меню с логотипом щупа и буквой V) и в непосредственной близости от лэйбла ставим пробник. При этом курсор ведет себя также (карандаш с X). Пробник автоматически поймает имя ближайшей маркировки, т. е. SEG[1..8].
    Аналогично я установил пробник и на другую шину с именем DIG[1..8]. Но здесь нам понадобятся отдельные пробники по разрядам. Поскольку проект нарисован довольно компактно, если ставить их на провода, то получится "каша" из зондов и их названий, они будут наползать друг на друга. Поэтому здесь я применил другую тактику. На свободном месте разместил восемь зондов напряжения (неподключенные зонды получают имя: ?), а затем подвел их к шине, используя функцию автоповторения провода. Если на шине уже стоит лэйбл DIG[1..8], соотвествующее имя получат и все зонды. Потом, используя функцию Property Assignmebt Tools (PAT), назначаем проводам нужные лэйблы (пусть Вас не пугает, что пробники не переименовываются автоматически мгновенно - достаточно один раз толкнуть симуляцию и все встанет на свои места) . Весь процесс продемонстрирован на анимированном Рисунке 29, и как можно видеть с использованием PAT занимает несколько секунд.
    Какие еще особенности установки зондов в ISIS существуют? Ну во первых при установке токовых зондов необходимо их сориентировать по направлению стрелки в круге вдоль провода, на который устанавливается пробник. Если ток в проводе совпадает по направлению со стрелкой, пробник покажет положительное значение, если нет - отрицательное. Напомню, что за положительное принято, как и обычно, направление от плюса к минусу. Важно отметить еще одно свойство, о котором многие "забывают" или просто не учитывают при установке зондов напряжения. Так как пробник является однополюсным элементом, напряжение на нем измеряется относительно заземленной шины питания. Поэтому, если вы устанавливаете зонд на провод, который имеет гальваническую развязку ( например трансформаторами или конденсаторами) от земляного провода, показания будут некорректны.
Рисунок 28
Рисунок 29
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic28.gif
Просмотров: 2640
Размер:	36.8 Кб
ID:	1702   Нажмите на изображение для увеличения
Название: Pic29.gif
Просмотров: 1629
Размер:	126.1 Кб
ID:	1703  

Последний раз редактировалось Halex07; 04.11.2009 в 06:10.
Halex07 вне форума  
Эти 43 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
-AnB- (20.03.2011), A-Soft (31.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), Canyon1971 (17.12.2009), Daddy_Karlo (11.01.2010), ded (06.02.2010), du2 (07.05.2010), fmp (30.12.2010), garimas (17.09.2012), igor7779 (16.12.2009), kt368bm (09.09.2010), leoblp (01.12.2009), Maxusha (07.03.2011), MihailoMihalych (23.01.2023), MUR2 (13.12.2009), Paulwasw (27.11.2012), rw54 (02.07.2010), sa502 (18.12.2009), seltec (29.05.2011), Space-r (05.05.2010), switch0 (03.12.2012), Tatarin_nsk (10.11.2009), Tischon (21.01.2011), Traan (16.09.2013), vik1977ck (16.03.2012), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
Linux-ваше мнение Tvenn Делимся опытом 6169 23.08.2015 08:57
Pictiva TM 128 X 64 OLED Module (SSD0323) + AVR + PROTEUS - рабочий проект для начинающих OttoStirliz Микроконтроллеры, АЦП, память и т.д 8 28.05.2010 16:59


Часовой пояс GMT +4, время: 01:39.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot