27.07.2009, 15:26
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.17. Полезные свойства пробников.
На Рис. 30 показано окно свойств пробника напряжения, как наиболее "продвинутого" по наличию дополнительных возможностей. Установкой галочки Load To Ground (Нагрузить на землю) мы как бы иммитируем внутреннее сопротивление реального измерительного прибора. При этом в окне Load(Ohm), которое становится доступным для редактирования необходимо ввести значение сопротивления. Установка галочки Record To File позволяет сохранить результаты измерений в файл для последующего использования, однако сразу оговорюсь, что данная функция не работает в интерактивном режиме и жестко связана с функцией Tape (Магнитофон) о которой пойдет речь позже.
Ну и наконец очень удобная встроенная функция аппаратного прерывания по сигналу пробника. При этом запущенная симуляция встает в состояние паузы. В чем польза данной функции? Допустим, Вам необходимо измерить время между появлениями сигнала логической единицы на каком либо проводе. Устанавливаем Real Time Breakpoint на Digital, а в окне Trigger Value вбиваем 1. Запускаем симуляцию и ждем установки в паузу внизу - считываем время появления сигнала. Повторно "толкаем" симуляцию кнопкой запуска (зеленый треугольник) и по второму останову считываем время появления второго прерывания. Далее используем кто свои мозги, а кто калькулятор для вычисления интервала между прерываниями. Аналогично можно поступить и с аналоговыми цепями, установив режим прерывания Analog, а в окне Trigger Value забив числовое значение напряжения. Окно Am at Time служит для установки времени "включения" режима прерываний. Например, если в предыдущем примере Вы поставите туда значение 2 (2 сек), то пауза возникнет при первом появлении логической единицы на пробнике после двух секунд выполнения симуляции.
И, забегая вперед, укажу еще одно полезное свойство зондов. Иногда сложно определить, каким образом симулятор PROSPICE интерпретирует ту или иную точку схемы (считает он там сигнал цифровым или аналоговым). Все очень просто определить с помощью зонда. Если в этой точке просчитывается аналоговый сигнал, то зонд будет показывать реальное значение напряжения в числовой форме, а если сигнал цифровой, то одно из девяти значений, принятых для цифровой симуляции (Рис. 31). Эта таблица взята из ProSPICE Help версии 7.4, раздел DIGITAL SIMULATION DARADISM =› Nine State Model. На деле несколько иначе: вместо WUD неопределенное состояние выхода индицируется SUD - имейте это ввиду.
Рисунок 30
Рисунок 31
Последний раз редактировалось Halex07; 04.11.2009 в 06:18.
|
|
|
Эти 28 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
-AnB- (23.03.2011), A-Soft (31.05.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), andron007 (03.01.2023), bi_max (27.09.2011), bz1100 (24.02.2012), ded (06.02.2010), fmp (30.12.2010), icepower (19.09.2011), igor7779 (16.12.2009), kama3er (21.12.2009), leoblp (01.12.2009), MUR2 (13.12.2009), Paulwasw (27.11.2012), pitart (02.04.2024), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (06.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
27.07.2009, 15:27
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.18. Digital Graph - применяем на практике.
Зонды расставлены, и если мы запустим симуляцию в реальном времени, то можно увидеть мелькание логических значений из таблицы выше на единичных зондах и изменение значений в шестнадцатиричном формате на пробнике, установленном на шину. Пора задействовать график. Так как у нас только цифровые сигналы - логично применить Digital Grath (Цифровой график) для анализа наших сигналов. Его особенность в том, что он позволяет разместить отдельные сигналы на разнесенных по вертикали временных осях, что удобно для их просмотра и анализа. Итак, в левом меню задействуем кнопку Graph Mode, выбираем в селекторе Digitalи на свободном месте листа проекта, удерживая нажатой левую кнопку мыши, растягиваем по диагонали наш будущий график (Рис. 32). Совсем необязательно тянуть как показано стрелкой, можно и снизу вверх и справа-налево, главное по диагонали. Впоследствии можно будет подкорректировать размеры окна графика, щелкнув по нему один раз мышкой и растянув или вертикально, или горизонтально, ну или за угол, зацепив мышью за появляющиеся при этом маркерные черные точки так, как мы делаем в любом графическом редакторе, или в офисных приложениях, например в Word с картинками, или прямоуголными объектами. График размещен и пора добавить на него наши исследуемые сигналы. В протеусе для этого предусмотрены два способа.
Для особо ленивых: щелкаем один раз по нужному зонду левой кнопкой мыши, чтобы он выделился (стал краснного цвета). Затем зажимаем его левой кнопкой и тянем по экрану на черное поле графика, где бросаем кнопку. В результате слева от вертикальной оси координат появится название нашего пробника, а напротив него горизонтальная временная ось, показывающая абсолютный уровень нуля для этого сигнала.
Более продвинутый способ: щелкаем правой кнопкой мыши по черному полю графика и во всплывающем меню выбираем опцию Add Traces… В открывшемся окне через раскрывающееся меню выбираем нужный нам сигнал по имени зонда, например Dig1 (Рис. 33). Жмем ОК и получаем тот же результат.
Чем хорош этот вариант. Сейчас у нас задействован самы простой тип графика, поэтому Trace Type (Tип трассы) и привязку к вертикальным осям - Axis изменить невозможно. Когда мы будем использовать другие типы графиков, эти опции станут активными.
Использовав любой из способов, я предпочитаю второй, помещаем все нужные нам сигналы на график в требуемом порядке. На рисунке 32 видно, что я разместил сначала сигналы разрядов в порядке справа-налево, а затем общий сигнал шины (он фиолетового цвета).
Чтобы запустить график на выполнение можно воспользоваться либо всплывающим по правому щелчку меню, как и для добавления сигналов, но выбрать опцию Simulate Graph… , либо просто "топнуть" по клавише пробела на клавиатуре. Сразу обращаю внимание, что если Вы разместите в проекте несколько графиков, то чтобы симулировать нужный - сначала надо его выделить одиночным щелчком левой кнопкой мыши по нему. Результат симуляции нашего графика виден все на том же рисунке 32, но конечно же он нас не устраивает и мы приступаем к изменению параметров графика, чтобы получить приемлемую картинку.
Рисунок 32
Рисунок 33
Последний раз редактировалось Halex07; 04.11.2009 в 06:23.
|
|
|
Эти 24 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
-AnB- (20.03.2011), A-Soft (01.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), icepower (19.09.2011), leoblp (01.12.2009), MUR2 (13.12.2009), Nikopol (11.04.2012), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (06.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
09.08.2009, 09:45
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.19. Свойства цифрового графика.
Для того, чтобы попасть в окно свойств (Properties) графика используем способ аналогичный работе с любыми объектами в ISIS - двойной щелчок левой по объекту или через контекстное меню правой - Edit Properties (CTRL+E с клавиатуры). Окно свойств показано на Рис. 34.
Большинство опций понятно из приведенных на рисунке комментариев. Цифровой график наиболее простой с точки зрения наличия свойств. Мы можем поменять ему название, присвоенное по умолчанию, например обозвать его вместо DIGITAL ANALYSIS - DINAMIC INDICATION. Поскольку на вертикальной оси мы располагаем множество цифровых сигналов, параметры ее в данном режиме и лэйблы не работают (их мы рассмотрим на примере других графиков). Флажок Inicial DC Solution (эквивалентный переключателю закрытый/открытый вход осциллографа) в данном случае также не активен. Отдельно остановлюсь на флажке Always simulate. Когда в проекте размещено несколько графиков одного и того же процесса в разных режимах, удаление этого флажка позволяет сохранить график в "неприкосновенности" при манипуляциях с другими. Кнопка SPICE Option обеспечивает быстрый доступ к параметрам симулятора, но менять что-то там без особой надобности начинающим не рекомендуется.
На данном этапе нас интересуют два конкретных окна - Start Time (начальное время графика) и Stop Time (конечное время графика) по шкале X. По умолчанию это 0 и 1 (напомню о том, что писалось выше - временной параметр без обозначения в секундах). При тактовой частоте микроконтроллера 4 МГц это явный перебор, поэтому мы и видим сигналы сжатой широкой лентой. Уменьшим параметр Stop Time раз в сто для начала - поставим 10m (10милисек) и нажмемOK . На предложение Протеуса Resimulate Graph? ответим утвердительно. Результат на Рис. 35.
Будьте внимательны. Иногда Протеус "забывает" предложить повтор симуляции, и сам просто меняет масштаб оси Х, сдвигая картинку. Поэтому лучше повторно "толкнуть" симуляцию самостоятельно, если предложения не последовало. Иначе достоверность картинки остается сомнительной.
Рис. 35.
Ну вот, картинка при таком масштабе картинка приобрела более приемлемый вид, по которому уже можно анализировать сигналы. Можно и дальше растягивать график указанным способом. Например, вначале от 0 до почти 2 мсек присутствует "мертвая зона" - инициализация микроконтроллера ее можно отсечь, установив Start Time 1.5m. Для подробного анализа нам достаточно одного полного периода индикации (цикла перебора всех знакомест DID1…DIG7). Отмечу, что DIG8 постоянно "висит" в единице, потому что мы находимся в режиме измерения, а этот разряд активизируется при установке параметров цифровой шкалы. Поэтому конечное время - Stop Time можно принять в районе 4m. После таких трансформаций на графике останется только один полный период динамической индикации. С ним мы и продолжим наши изыскания.
Рисунок 34
Рисунок 35
Последний раз редактировалось Halex07; 04.11.2009 в 06:25.
|
|
|
Эти 22 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
A-Soft (01.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bz1100 (24.02.2012), Daddy_Karlo (20.01.2011), fmp (30.12.2010), icepower (19.09.2011), leoblp (01.12.2009), MUR2 (13.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (06.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
10.08.2009, 00:53
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.20. Дополнительные возможности анализа графика при максимизации окна.
Дальнейший анализ графика лучше всего проводить в режиме максимизации окна. Для этого через меню правой кнопки при щелчке по графику выбираем опцию Maximize (Show Window). Развернувшееся при этом окно показано на Рис. 36. Оно уже обладает самостоятельными меню и опциями, которые мы сейчас и рассмотрим подробнее.
Начнем с того, что в этом режиме доступны два вертикальных маркера (на рисунке зеленая и красная вертикальные линии). Первый (зеленый) маркер устанавливается и сдвигается нажатой левой кнопкой мыши. Его положение по оси Х отмечено зелеными цифрами в нижней строке статуса (на рисунке 1.85m). Если при установке маркера навести курсор на конкретную трассу ( в моем примере DIG1), то его положение на трассе отмечается дополнительно крестиком, а в нижней строке статуса указывается значение сигнала в данном месте зеленым цветом (DIG1:SLO) - низкий уровень. Все вышесказанное относится и ко второму (красному) маркеру, но для его установки надо удерживать нажатой клавишу CTRL на клавиатуре. Соответственно все значения, относящиеся к нему в строке статуса красные: 3.53m и DIG1:SLO. Значение DX:-1.68m - это разность положений маркеров по оси X (зеленый вычесть красный - поэтому в данном случае оно отрицательное).
Что еще полезного мы можем извлечь из нашего графика? Обратите внимание на столбец букв напротив трасс, расположенный у левой вертикальной оси он показывает значения сигналов для зеленого маркера. В данном случае для DIG1 - низкий L, для остальных разрядов высокий - H. Посмотрите на значения сигнала для шины (фиолетовая трасса). Для первых пяти разрядов он соответствует шестнадцатеричной $3F - это ноль на семисегментном индикаторе. Для DIG6=SLO (район 3.1m) этот сигнал - $BF, т.е. добавлена десятичная точка семисегментного индикатора.
Для особо непонятливых на Рис. 37 приведено окно от встроенного в компиляторы от MikroElectronika (в данном случае microC) декодера для семисегментных дисплеев с изображением нуля. Напомню, что у нас индикатор с общим катодом.
Ну что же, судя по нашему графику видимых причин для глючности индикации нет, и должно бы все работать, но… не работает.
Рисунок 36
Рисунок 37
Последний раз редактировалось Halex07; 04.11.2009 в 06:26.
|
|
|
Эти 25 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
-AnB- (20.03.2011), A-Soft (01.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), garimas (21.09.2012), icepower (19.09.2011), kama3er (20.12.2009), leoblp (01.12.2009), MUR2 (13.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), retas (06.07.2010), rw54 (02.07.2010), seltec (29.05.2011), Space-r (06.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), VooVoo (14.11.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
11.08.2009, 07:44
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.21. Сравнение с работающим проектом динамической индикации. Находим причину глюка индикации.
Отложим пока рассмотрение дальнейшее опций графика и обратимся к примеру, содержащему динамическую индикацию, прилагаемому с Протеусом - SAMPLESVSM for AVRAVR Tiny15 Demo 15demo.DSN. Я слегка "модернизировал" его - убрал комментарии разработчика, собрал сигналы сегментов в шину и поместил в проект цифровой график с сигналами разрядов и сегментов четырехразрядного индикатора, примененного в нем.
Небольшой комментарий для тех, кто попытается самостоятельно разместить в этом проекте график. Если при попытке запустить график на исполнение ISIS ругнется на отсутствие лицензии на модель индикатора 7SEG-MPX4-CA, просто обновите эту модель. Для этого зайдите в библиотеку, найдите эту же модель и дважды щелкните по ней, чтобы она поместилась в селектор объектов. На вопрос Протеуса произвести Update - ответьте утвердительно. Связано это с тем, что по каким-то причинам в этом примере затесалась модель индикатора с ограничением на использование графиков. Для тех, кому некогда этим заниматься я во вложение поместил уже подправленный проект, в котором попутно заменил модель микроконтроллера Tiny15 на модель из библиотеки AVR2.DLL. На одном графике размещен полный период индикации четырех разрядов, а на другом (Рис. 38 ) растянут во времени момент смены первого и второго разрядов. Отметьте, что в данном случае применен индикатор с общим анодом, поэтому сигналы противоположны по уровням по отношению к анализируемому нами частотомеру.
Для сравнения на Рис.39 помещен аналогично растянутый во времени момент смены пятого и шестого разрядов индикатора частотомера. Я нарочно выбрал этот момент, потому что в данном случае происходит добавление десятичной запятой (сигнал $BF на шине). Обратите внимание на график работающей индикации (Рис. 38 ). На момент смены горящих разрядов (в данном случае логических единиц) на шине сегментов на время около 9.4 микросек появляется сигнал $7F (я выделил его двумя маркерами), т.е. тоже фактически все единицы. Происходит кратковременное гашение разряда индикатора - и с анода единица и с сегментов все единицы. Теперь рассмотрим наш "тяжелый случай" (Рис. 39 ). Мало того, что никакого гашения и в помине нет, так еще и смена сигнала на шине сегментов (зеленый маркер) происходит на 2 микросек раньше, чем смена нулей на катодах.
Вот и обнаружился глюк индикации. И виноват в этом вовсе не ISIS, честно выполняющий то, что в него заложено создателями, а … ну в общем "стрелочник". Фактически же это выглядит так, как показано на Рис. 40. При отсутствии входного сигнала должны индицироваться все нули и десятичная точка в шестом разряде, а у нас она присутствует еще и в пятом.
Чуть позже мы займемся "хирургическим вмешательством" в программу для устранения данного явления, а пока необходимо закончить рассмотрение опций графика, выделенных на Рис. 36 желтой подсветкой, иначе многим непонятно будет как я растянул графики на рисунках 38 и 39.
Рисунок 38
Рисунок 39
Последний раз редактировалось Halex07; 04.11.2009 в 06:30.
|
|
|
Эти 23 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
A-Soft (01.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), andron007 (03.01.2023), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), icepower (19.09.2011), kama3er (20.12.2009), leoblp (01.12.2009), MUR2 (13.12.2009), nickavia (04.02.2011), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (07.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
11.08.2009, 08:26
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.22. Меню и опции графиков в развернутом (Maximize) окне.
Для начала рассмотрим верхнее меню.
File - из этой вкладки график можно распечатать на принтере в цветном или черно-белом формате (Print) или экспортировать в один из предлагаемых форматов (Export Graphics…). При печати и сохранении черно-белого варианта фон белый, а трассы и координатные линии черные. Из графических форматов доступен bitmap (BMP). Можно также сохранить и в формате AutoCAD (DXF). В опциях выбирается разрешение картинки - чем выше разрешение, тем больше объем файла. Обращаю Ваше внимание, что маркеры при этом не сохраняются и не печатаются.
Опции вкладок View и Graph фактически повторяют кнопки содержащиеся в нижнем тулбаре графика, поэтому мы их рассмотрим подробно здесь же чуть ниже.
Вкладка Options позволяет обеспечивает прямой доступ к настройкам ISIS, расположенным в меню Template и System из основного верхнего меню ISIS. Наиболее интересна для нас на данном этапе опция Set Graph Colours… (Рис. 41), позволяющая изменять цветовую схему графиков.
В левой колонке выбираются основные цвета оформления для всех графиков: Outline - линии сетки и координат, Background - фон, Title - заголовки, Text - текст, Tagged - контрольные точки. В средней колонке устанавливаются цвета для шести трасс аналоговых графиков, в правой для цифровых, т.е. для нашего случая. Мы и можем наблюдать на рис. 38,39 бирюзовые трассы сигналов и фиолетовую для шины, используемые по умолчанию. Напомню, что изменять цвета графиков можно и из основного меню ISIS Template -› Set Graph Colours… .
Вкладка Help обеспечивает доступ к файлу помощи ISIS.
Теперь рассмотрим кнопки расположенные внизу. Слева-направо в соответствии с всплывающими подсказками.
Edit Graph, Add Traces и Simulate Graph нам уже знакомы и просто обеспечивают доступ к данным функциям без свертывания окна графика.
Две кнопки со стрелками влево и вправо Pan Graph… позволяют горизонтальную прокрутку в указанных направлениях.
Кнопки Zoom In и Zoom Out (лупы с плюсом и минусом) позволяют увеличить/уменьшить горизонтальный масштаб. А вот следующие две более продвинутые.
Zoom To View Entire Sheet - сжимает график в тот временной масштаб, который задан первоначально позициями Start Time и Stop Time.
Zoom To Area - включает курсор в режим выделения площади (белый квадрат с прицелом), после чего можно, удерживая нажатой левую кнопку мыши, выделить участок для увеличения. Для Digital Graph масштабирование происходит только по оси X. Именно этим режимом я воспользовался несколько раз, чтобы растянуть нужные участки графика так, как показано на рис. 38,39.
И еще одно важное замечание. После того, как вы масштабировали график и свернули его - щелчком по кнопке X в правом верхнем углу, или через контекстное меню правой кнопки мыши - опция Restore (Close Window) - в окне проекта оно будет показываться уже в новом, измененном масштабе.Вот и все, что хотелось бы отметить по работе с графиками в развернутом виде.
Рисунок 40
Рисунок 41
Последний раз редактировалось Halex07; 04.11.2009 в 06:32.
|
|
|
Эти 21 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
-AnB- (23.03.2011), A-Soft (01.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), icepower (19.09.2011), kama3er (20.12.2009), leoblp (01.12.2009), MUR2 (13.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (07.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), ДимаК (21.06.2011) |
|
11.08.2009, 08:46
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.23. Подключаем файл микропрограммы для пошаговой отладки.
До сих пор мы использовали для симуляции прошивки микроконтроллера файл формата Intel Hex. Этобыло вполне приемлемо, пока нам не требовалось вносить изменений в программу. Но мы уже нашли причину нашей неудачи и пора попробовать избавиться от нее. Вот и настал черед подключения ассемблерного файла DigiScal.asm. Прежде, чем мы начнем заниматься "пластической хирургией" - сделайте резервную копию всей папки с проектом. В будущем этот шаг избавит Вас от поисков оригинала проекта, который к концу "операции" может быть изуродован до неузнаваемости. Итак мы вновь открыли наш проект и для подключения файла, написанного на ассемблере или "асме" на сленге эмбедеров нам необходимо войти в меню Source и выбрать опцию Add/Remove Source Files… . Откроется окно показанное на Рис. 42.
Последовательность присоединения файла программы к проекту и ясна из коментариев на рисунке. Остановлюсь на некоторых особенностях. Если в проекте используется более одного микроконтроллера на первом шаге надо выбрать нужный для конкретного файла.
На втором шаге выбирается компилятор, подходящий для данного микроконтроллера ну и конечно ассемблерного кода. В Протеусе 7.4 доступны следующие прилагаемые с программой компиляторы:
ASEM51 для МК серии MCS-51;
ASM11 для МК Motorola MC68HC11;
AVRASM2 для МК Atmel AVR;
MPASM и MPASMWIN для МК Microchip PIC.
Все они расположены в папке Tools установленного Протеуса и список их по мере выхода новых версий пополняется. Почему я выбрал именно виндозную версию MPASMWIN? Просто она мне кажется более дружелюбной в отношении интерфейса. Кроме того, некоторые компиляторы командной строки (в частности MPASM) требуют соблюдения DOSовского формата имени файла (семь плюс один символов имя и три расширение) и если имя файла будет, например, DigiScal12.asm выплюнут ошибку компиляции.
Хочу здесь остановится еще на одном нюансе. Не всегда Протеус содержит "свежие" версии компиляторов. Здесь можно прибегнуть к следующей операции, например для того же MPASM. Если у Вас установлена одна из последних версий MPLAB IDE, откройте через меню Source опцию Define Code Generation Tools… (Рис. 43 ). Укажите путь к новому компилятору через кнопку Browse. При необходимости измените опции командной строки (Comand Line) и путь Debug Data Extraction.
На третьем шаге нам необходимо указать наш файл DigiScal.asm. После чего жмем ОК. Напомню, что идеально, когда файл с листингом ассемблера лежит в той же папке, что и проект ISIS.
Дальше можно было бы просто запустить симуляцию проекта и Протеус сам автоматически скомпилирует новый DigiScal.HEX перед началом симуляции. Но я все же рекомендую предварительно воспользоваться опцией Build All… из меню Source. При этом симуляция не запускается, а включается в работу только компилятор. Если все пройдет нормально, то откроется окно BUILD.LOG, содержащее отчет об успешной компиляции файла. Если в нем содержатся красные сообщения об ошибках, значит компиляция завершилась неудачно. Необходимо найти и исправить ошибки в листинге программы. Обычно содержится перечень строк, содержащих ошибки. Для поклонников PIC остановлюсь еще на одной особенности. Иногда попытка скомпилировать чужой листинг завершается неудачно из-за отсутствия в начале программы всего одной строки: LIST p=‹тип МК›. Применительно к нашему случаю она должна выглядеть как: LIST p=16F84.
После удачного завершения компиляции в папке с проектом должен появится файл DigiScal.SDI, формируемый Протеусом на этапе компиляции. Именно это файл и позволяет пошаговую отладку ассемблерной программы.
Рисунок 42
Рисунок 43
Последний раз редактировалось Halex07; 04.11.2009 в 06:34.
|
|
|
Эти 24 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
A-Soft (01.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (27.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), garimas (21.09.2012), icepower (20.09.2011), kama3er (20.12.2009), leoblp (01.12.2009), max7533 (26.10.2009), MUR2 (13.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (11.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), ДимаК (21.06.2011) |
|
11.08.2009, 08:58
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.24. Режим пошаговой отладки программы в ISIS.
После того как подключен ассемблерный файл к проекту, мы получили возможность пошаговой отладки со всеми вытекающими из этого возможностями. По счастью автор частотомера приложил ассемблерный листинг удобоваримый для компилятора и после команды Build All… мы получили подтверждение об удачной компиляции ассемблерого файла (Рис. 44).
Чтобы войти в режим пошаговой отладки мы для запуска симуляции воспользуемся кнопкой Pause или кнопкой Step вместо обычной Play. При этом включится подсветка кнопок Play и Pause, а на экране появится окно CPU Source Code в котором представлен ассемблерный листинг программы, а курсор выполнения (красный треугольник слева) установлен на первой строке, расположенной по адресу $0000 в ПЗУ программ, соответственно подсвечивается и вся строка (Рис. 45). Колонка адресов ПЗУ программы микроконтроллера в данном случае бирюзового цвета слева в окне. Обратите внимание, что зеленые коментарии, находящиеся в листинге тоже отображены, но адресов не имеют - стоят прочерки, поскольку при компиляции в исполняемый код они выбрасываются. Однако, при переходах по номеру строки (Goto Line) они учитываются, так как занимают строку в листинге программы. Здесь надо четко представлять различия - треугольник это указатель выполняемой строки, а подсветка - это "курсор" выбранной строки.В правой верхней части окна расположены кнопки управления пошаговым режимом (на рисунке я подсветил их желтым цветом). Вот здесь и скрываются огромные возможности симулятора по сравнению с реальным устройством. Используя режим пошаговой отладки мы можем в любой момент исследовать что творится не только на внешних выводах микроконтроллера, но и в его "внутренностях". Давайте для начала познакомимся с назначением кнопок, а потом попробуем применить их в действии. Как обычно слева-направо, начиная с кнопки с изображением бегущей фигуры (Run simulation). Эта кнопка просто запускает продолжение симуляции, снимая ее с паузы, ну или с точки останова (Breakpoint).
Следующие три кнопки: Step Over Source Line, Step Into Source Line, Step Out from Source Line позволяют выполнить код пошагово соответственно до конца текущей строки, в текущей строке, с выходом из текущей строки.
Неактивная кнопка Run To Source Line (Выполнить код до текущей строки) станет доступной, если вы выделите щелкнув левой кнопкой мыши какую либо строку кода программы. При этом курсор текущей выполняемой строки остается на месте, а подсветка переместится на выбранную строку. Запуск кнопкой Run To Source Line вызовет выполнение программы до достижения выделенной строки.
Ну и наконец Toggle Breakpoint - переключатель точек останова. Каждый щелчок по этой кнопке переключает точку останова в выбранной (подсвечиваемой) строке следующей последовательности:
"установить и активизировать" =› "деактивировать" =› "удалить".
Активная точка останова выглядит как закрашенный красный круг, неактивная - как красная окружность с белой серединой. Точки останова позволяют нам прерывать выполнение программы в строго указанных местах.
Рисунок 44
Рисунок 45
Последний раз редактировалось Halex07; 04.11.2009 в 06:36.
|
|
|
Эти 26 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
A-Soft (08.06.2016), ABrej (06.04.2010), Alex0416 (01.10.2010), alexandr156 (16.03.2011), bi_max (28.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), garimas (21.09.2012), icepower (20.09.2011), kama3er (20.12.2009), kt368bm (10.09.2010), leoblp (01.12.2009), max7533 (26.10.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), Space-r (11.05.2010), Tischon (21.01.2011), Traan (16.09.2013), vank (01.12.2010), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
13.08.2009, 08:04
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.25. Контекстное меню окна пошаговой отладки.
Кроме верхних кнопок управления отладкой многие опции спрятаны в контекстное меню, вызываемое по правой кнопке мыши щелчком внутри окна CPU Source Code в режиме паузы. Вид меню представлен на Рис.46.
Окно поделено на пять секций. Верхняя опция Dissasembly в данном случае неактивна. Да и куда уж дальше разворачивать код, если мы и так в низкоуровневом ассемблере. Но когда позже мы будем подставлять в качестве исходного кода листинги на языках высокого уровня Си, а кто нибудь и Basic - эта функция нам здорово поможет, т.к. позволяет развернуть строку Си в коды ассемблера. Замечу, что именно таким образом и был обнаружен глюк библиотеки AVR2.DLL при выполнении переходов RJMP и RCALL. Сначала была найдена функция на Си, вызывающая ошибку, затем развернута в ассемблер и найдена конкретная команда - RJMP.
Следующие две команды Goto Line… и Goto Addresss… переведут текущее положение выбранной строки (подсветку) по указанному номеру (адресу в ПЗУ программ МК). Различия их в том, что в первом случае вы вводите десятичный номер строки, а во втором шестнадцатиричный адрес ПЗУ программ, например так: 0х007E. Конечно, имея в голове "калькулятор" для перевода десятичных значений в шестнадцатиричные, можно и адрес вводить в десятичном виде, но Вам оно надо?
Опции Find… (Поиск) и Find Again… (Повторный поиск - становится активной после выполнения первого поиска) ничем не отличаются от аналогичных в других программах и ищут слово (фразу) и т.д. в соответствии с заданными условиями: регистр, слово целиком, вперед, назад…
Следующая группа команд управляет брекпойнтами (точками останова). Первая из них Toogle… - фактически повторяет кнопку в верхенм меню. Следующие три: Enable (активировать), Disable (дезактивировать) и Clear (очистить) выполняют данные действия сразу для всех установленных брекпойнтов. Установка флажка Fix-Up Breakpoins On Load - активирует все установленные точки при перезапуске симуляции.
В следующей группе установкой флажков активируется показ соответствующих колонок в окне CPU Source Code . Display Line Numbers - покажет номера строк, включая и комментарии. Display Addresses - уже установлен, показывает адреса по которым в ПЗУ программ МК расположены команды ассемблера. Установив флажок Display Opcodes , Вы увидите шестнадцатиричные коды записываемые в ПЗУ напротив соответствующих адресов.
Ну и последняя группа Set Font… и Set Colours… - позволяет настроить вид окна CPU Source Code: шрифт текста и цветовую гамму в соответствии с вашими вкусами и привычками.
Примечание от dosikus: Чтобы не иметь проблем с отображением русского текста в окнах, необходимо выбирать шрифты, поддерживающие кириллицу (Рис. 46А ).
Рисунок 46
Рисунок 46A
Последний раз редактировалось Halex07; 04.11.2009 в 06:37.
|
|
|
Эти 25 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
A-Soft (08.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), andron007 (05.01.2023), bi_max (28.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), garimas (21.09.2012), icepower (20.09.2011), leoblp (01.12.2009), MUR2 (14.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (11.05.2010), Tischon (21.01.2011), Traan (16.09.2013), vank (01.12.2010), vitalgolov (30.09.2010), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
13.08.2009, 08:10
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
- 2.26. Меню Debug в развернутом виде.
При первом знакомстве с интерфейсом ISIS я умышленно пропустил эту вкладку верхнего меню. Но теперь, когда мы вплотную занялись симуляцией проекта, настала пора познакомится с ним поближе. Тем более, что в режиме паузы при симуляции схем, содержащих микроконтроллеры там вылезают такие опции, которых в других случаях Вы не увидите. Итак, поставим наш проект в режим паузы и откроем эту вкладку (Рис. 47 ). Да, тут есть где порезвиться. Попробуйте открыть эту вкладку не запуская симуляции и, как гласит избитая телереклама, - "почувствуйте разницу". Давайте "осваивать" именно развернутую при симуляции версию. Здесь тоже схожие команды сгруппированы по секциям. Верхняя секция дублирует кнопки управления симуляцией и в комментариях не нуждается. Первая опция второй секции - Execute нам также знакома по аналогичной кнопке окна CPU Source Code. А вот следующие две представлены только здесь. Execute Without Breakpoins (Alt+F12) - вызывает запуск симуляции с игнорированием установленных брекпойнтов, а Execute For Specified Time - вызывает окно в котором мы предварительно задаем время для перевода симуляции в режим паузы. По умолчанию предлагается 1, как вы уже догадались одна секунда. Тоже весьма полезная "фишка".
В следующей группе тоже знакомые нам по окну CPU Source Code команды. Хм, ошибочка вышла - прилепил рисуночек от версии 7.5 а в ней новая опция Animate, которой раньше не было. Сейчас мы ее… Ну в общем тоже полезная штука. Инициирует симуляцию в "заторможенном" режиме, при этом в окне CPU Source Code подсветка строки пошагово показывает процесс выполнения. Кто пользовался симуляцией в MPLAB, AVR Studio или других отладчиках уже имели удовольствие наблюдать такой режим.
Следующая группа объединяет опции, которые представляют значительный интерес. Reset Popup Windows и Reset Persistent Model Data на картинке неактивны. Они позволяют сбросить в исходное состояние соответственно всплывающие окна и данные в ПЗУ (не путайте с памятью программ) моделей микроконтроллеров, флэш-памяти и других устройств, содержащих ПЗУ. Это возможно только когда симуляция не запущена. Состояние всплывающих окон по умолчанию представлено в последней группе. Галочкой отмечено только окно PIC CPU Source Code - которое мы и видим в режиме паузы. Если вы случайно или специально закроете это окно (щелчок по X в правом верхнем углу), то при следующей паузе симуляции оно не "всплывет". Добыть его обратно можно двумя способами: через опцию Reset Popup Windows, но при этом и все остальные окна встанут в исходное, или в режиме паузы восстановить галочку щелчком левой кнопкой мыши по PIC CPU Source Code в последней группе (Рис. 47). После закрытия окна PIC CPU Source Code в режиме симуляции галочка будет отсутствовать. Второй способ хорош тем, что вы не сбрасываете режимы остальных окон.
Рисунок 47
Последний раз редактировалось Halex07; 04.11.2009 в 06:38.
|
|
|
Эти 28 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
|
A-Soft (08.06.2016), ABrej (06.04.2010), alexandr156 (16.03.2011), andron007 (05.01.2023), bi_max (27.09.2011), bz1100 (24.02.2012), ded (06.02.2010), fmp (30.12.2010), kiNlA (06.12.2010), leoblp (01.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), Saadov (17.11.2010), seltec (29.05.2011), Space-r (11.05.2010), Tischon (21.01.2011), Traan (16.09.2013), vank (01.12.2010), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011) |
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:24.
|
|