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

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

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

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

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

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


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

  • 2.27. Конфигурация диагностических сообщений во вкладке Debug. Возможности окна SIMULATION LOG.
    Опция Configure Diagnostic доступна как в режиме останова, так и при запущенной симуляции. Эта команда вызывает окно конфигурирования диагностических ссобщений ISIS (Рис. 48 ) и требует более детального знакомства. Здесь можно определить, каким образом Протеус будет формировать диагностические сообщения в окне SIMULATION LOG.
    По умолчанию вся диагностика стоит в режиме Warnings Only (только предупреждения), что индицируется желтыми треугольниками с восклицательными знаками ("горчичниками" в футбольных терминах). Для того, чтобы увидеть конкретный перечень формируемых диагностических сообщенийнеобходимо щелкнуть по плюсику слева от нужного компонента. На рисунке у меня свернуты сообщения самого симулятора PROSPICE и развернуты для микроконтроллера. По умолчанию лог ведется в течение одной минуты (время внизу от 0 до 60 сек), но при желании его можно изменить. Кроме того, для отдельных видов сообщений можно изменить способ оповещения. На приведенном рисунке отключена (Disabled) диагностика выполняемых инструкций для микроконтроллера. Обращаю внимание поклонников компилятора CCS PICC на такой режим. Дело в том, что для компиляции программ, написанных для МК серии PIC16, в данный компилятор использует PCM 14 bit, в котором изначально заложена устаревшая инструкция ассемблера TRIS (не путайте с Си-шной). "Умный" Протеус обрабатывает эту инструкцию, но в логе выдает "горчичник", например, для PIC16F84A: TRISB Instruction is deprecated for PIC16F84 (Инструкция TRISB не рекомендована для PIC16F84). Причем таких сообщений в течение минуты может вылететь очень много. Чтобы они не раздражали глаз, ведь симуляция протекает нормально можно перевести опцию диагностики Instruction Execution (исполняемые инструкции) в положение Disabled, как показано на рисунке. Иногда наоборот полезно перевести какой либо вид сообщений в режим Full Trace (полная трассировка) или Debug (отладка). Например, если перевести Instruction Execution для микроконтроллера в один из этих режимов применительно к нашему проекту окно SIMULATION LOG после запуска симуляции будет выглядеть как на Рис. 49. Обратите внимание, что для МК ведется полный лог выполнения команд ассемблера, только ассемблерные метки заменены на абсолютные адреса в памяти программ (Например, вместо Goto Start в логе GOTO 0x007E). А как вам нравится колонка Time? Напротив каждой команды - время ее выполнения. Посредством обычного арифметического вычитания можно вычислить время выполнения любого участка программы, или даже отдельной команды. Одно неудобство - за минуту подробный лог разрастется до таких размеров… Но и здесь "все схвачено" - нам не надо минуту, мы возьмем да ограничим время в Log from … for… seconds (Рис. 48 ), установив его например 2m (2 милисек). Но и это еще не все. Находясь в режиме паузы, щелкните в SIMULATION LOG по подчеркнутому значению программного счетчика, например, PC=0x0080 - откроется (даже если было закрыто) окно PIC CPU Source Code и указатель строки встанет по этому адресу, в котором находится следующая команда - в нашем случае: movwf TrisA. Что-то я увлекся подробностями диагностики, но тема того заслуживает. Добавлю еще, что не следует вообще пренебрегать подчеркнутыми значениями и терминами в окне SIMULATION LOG, но следует помнить, что дополнительные сведения при щелчке по ним доступны только при запущенной симуляции, например, в режиме паузы. Еще следует обратить внимание на появление синих вопросительных знаков. При щелчке мышью по ним доступны всплывающие подсказки соссылками на разделы Help.
Рисунок 48
Рисунок 49
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic48.gif
Просмотров: 1167
Размер:	21.3 Кб
ID:	1725   Нажмите на изображение для увеличения
Название: Pic49.gif
Просмотров: 1197
Размер:	48.4 Кб
ID:	1726  
Реклама:

Последний раз редактировалось Halex07; 04.11.2009 в 06:39.
Halex07 вне форума  
Эти 25 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (28.09.2011), bz1100 (24.02.2012), e_oshtuk (11.01.2010), fmp (30.12.2010), leoblp (01.12.2009), MUR2 (14.12.2009), Paulwasw (27.11.2012), PavelMSTU (11.01.2011), 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), vitalgolov (30.09.2010), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 14.08.2009, 00:19  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.28. Меню Debug в развернутом виде (окончание) . Всплывающие окна. Суперполезное окно Watch Window.
    У нас остались неразобранными до конца еще несколько опций меню Debug. По поводу Use Remote Debug Monitor пока ничего вразумительного написать не могу. Честно признаюсь, не нашел, что дает установка флажка в этой опции. Два пункта: Tile Horizontally и Tile Vertically выстраивают находящиеся на экране всплывающие окна соответственно горизонтально и вертикально. Ну и наконец последний раздел в котором содержится весь перечень всплывающих окон, доступных для просмотра. Установка флажка напротив любого из них вызывает его появление в режиме паузы (пошаговой отладки). Содержимое этого раздела меняется в зависимости от применяемого микроконтроллера или других программируемых компонентов. В нашем случае доступны восемь окон. С двумя из них мы уже познакомились достаточно подробно. Отмечу, что первые два: Simulation Log и Watch Window при установке соответствующих флажков находятся на экране даже в режиме симуляции в реальном времени, а не только в пошаговой отладке. Остальные доступны для просмотра только в паузе (пошаговой отладке). Большинство из них носят чисто информативный характер и по всплывающему меню правой кнопки мыши в них доступны для изменения только шрифт, цвета, ну иногда еще навигация, если все содержимое не умещается в окне. Вы можете самостоятельно установить флажки напротив нужных окон и посмотреть их содержимое.
    Здесь же я подробно хочу остановиться на рассмотрении только Watch Window, поскольку оно обладает уникальными возможностями для отладки. При первом вызове Watch Window на экран оно абсолютно пустое. Ничего себе, смотровое окно - а именно так гласит дословный перевод. Да оно именно таковым и является, вот только надо выбрать - что мы хотим в нем смотреть. А выбор осуществляется по контекстному меню правой кнопки мышки. Давайте встанем в паузу, вытащим это окно на экран (установим флажок) и щелкнем внутри правой кнопкой. Появится контекстное меню, имеющее первоначально вид как на Рис. 50.
    Первые две строчки его и позволяют наполнять Watch Window содержимым соответственно по имени (By Name) или по адресу в памяти микроконтроллера (By Address). Выбираем опцию "по имени" и получаем окно со списком названий регистров нашего микроконтроллера (Рис. 51 ). В качестве примера двойными щелчками левой, как гласит подсказка, я добавил в окно Watch Window два регистра: PORTB и OPTION. Эти регистры появились в списке Watch Window, причем у OPTION слева стоит плюсик, что означает наличие внутри его битов с различными назначениями. Кликнув по нему левой кнопкой можно развернуть содержимое.
Рисунок 50
Рисунок 51
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic50.gif
Просмотров: 886
Размер:	5.6 Кб
ID:	1727   Нажмите на изображение для увеличения
Название: Pic51.gif
Просмотров: 996
Размер:	14.4 Кб
ID:	1728  

Последний раз редактировалось Halex07; 04.11.2009 в 06:40.
Halex07 вне форума  
Эти 22 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (28.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), 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), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 15.08.2009, 05:57  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • Затем я вызвал другое окно опцией "по адресу" (Рис. 52 ). Тут уже придется задействовать клавиатуру. В качестве примера давайте добавим в окно регистр МК, в котором хранится указатель разрядов индикатора. Согласно ассемблерному листингу, этот указатель хранится по адресу 019h. В строке Address вводим шестнадцатиричное значение адреса - 0х0019, а в строке Name - его название. Чтобы не путаться - я ввел так как в ассемблерном листинге, хотя можно было назвать как кому нравится. Можно было вообще оставить это поле пустым, тогда Isis автоматически подставит введеный адрес и в это поле в качестве имени. Еще в этом окне имеется возможность сразу выбрать тип добавляемых данных (Data Type) и и формат, в котором будет представлено содержимое (Display Format). Я оставил все как есть по умолчанию, но иногда полезно поправить. Например, если бы у нас данные занимали 16 разрядов - лучше было бы применить Word (2 bytes), чтобы все значение помещалось в одной строке. В любом случае, исправить положение позже никогда не поздно. Обратите внимание - на Рис. 50 обе эти опции представлены в середине контекстного меню с раскрывающимися по черным стрелкам справа значениями. Поэтому всегда имеется возможность отредактировать и формат и вид.
    Конечный вид получившегося окна Watch Window представлен на Рис. 53. Заметьте, что я развернул регистр OPTION и теперь вижу его содержимое в соответствии с назначением битов по даташиту на PIC16F84A: биты пределителя PSx (0…3) в одной строке, а остальные побитно с именами в соответствии с даташитом.
Рисунок 52
Рисунок 53
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic52.gif
Просмотров: 907
Размер:	18.5 Кб
ID:	1729   Нажмите на изображение для увеличения
Название: Pic53.gif
Просмотров: 848
Размер:	8.4 Кб
ID:	1730  

Последний раз редактировалось Halex07; 04.11.2009 в 06:42.
Halex07 вне форума  
Эти 24 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), batalionok (08.09.2009), bi_max (28.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), leoblp (01.12.2009), max7533 (26.10.2009), MUR2 (14.12.2009), Paulwasw (27.11.2012), pav_vl (25.11.2019), 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), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 15.08.2009, 06:22  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • Вернемся к рассмотрению опций контекстного меню Рис. 50. Теперь, когда в окне Watch Window имеются выбранные переменные, все неактивные на рисунке функции меню стали доступными для использования. Здесь определенный интерес представляет функция Watchpoint Condition… (Условия прерываний для добавленных в Watch Windowпозиций), которая вызывает окно представленное на Рис. 54. Ну вот, еще одна возможность останова симуляции. Вопрос: а нужна ли она нам? Надеюсь, вы оцените ее преимущества, когда познакомитесь поближе. Это единственный брекпойнт, который позволяет нам не просто прерваться по определенной команде в памяти программ, или по времени, как мы рассматривали раньше, а остановить симуляцию по достижению определенного значения внутренним регистром МК. При этом условием останова можно назначить изменение всего одного ( !!!) бита, например флага в регистре статуса. И не надо мудрить с выводом внутренних регистров на порты, установкой аппаратных брекпойнтов по совпадению и прочими "сексуальными извращениями". Все делается, как в знаменитой комедии: "Легким движением руки - брюки превращаются …". Для примера я назначил на Рис. 54 остановку симуляции при достижении регистром LEDIndex по адресу 0х019 значения 0х05, и после таких манипуляций симуляция будет автоматом останавливаться при достижении в этой ячейке МК указанного значения.
    Рассмотрим, что для этого потребовалось. В Global Break Condition (глобальное условие прерывания) установлен переключатель Suspend the simulation if ANY expression is true (приостановить симуляцию, если ЛЮБОЕ из выражений истинно). Верхнее положение Turn Off соответственно отключает остановку по условию, а нижнее - … only when ALL… - останавливает по совпадению сразу ВСЕХ условий. Обратите внимание, что для каждой позиции (строки) в окне Watch Window можно выбрать свое условие совпадения. Тогда нижнее положение переключателя сработает по совпадению сразу всех. В поле Item выбираем через раскрывающийся список наш пункт Watch Window - LEDIndex. В поле Mask аналогично выбираем логическое условие для маскирования, я выбрал AND, а в следующем поле вводим шестнадцатиричное значение маски - 0х0F (в данном случае биты с 0 по 3). Если бы потребовалось контролировать только один бит, например четвертый, я бы ввел 0х10 - для "совсем чайников": не забудьте, что счет байта идет с нулевого бита и заканчивается седьмым). Маска наложена, и в графе Condition (Условие) выбираем Equals (Равно), а в поле Value (Значение) набираем 0х05. Жмем OK, после чего в Watch Window напротив LEDIndex колонка Watch Expression будет содержать наше выражение в компактном виде:
    & 0х0F = 0x05 (маска : значение маски : условие : значение условия)
    Чтобы отключить прерывание надо снова зайти в Watchpoint Condition… и поставить переключатель в Turn Off.
    Давайте кратко завершим здесь с контектсным меню Watch Window. Пункты раздела начиная с Select All (Выделить все) и заканчивая Find Item (Найти пункт), надеюсь в особых комментариях не нуждаются, так как стандартны и для многих других программ. Про Data Type и Display Format я уже писал. Единственный нюанс - чтобы применить их отсюда надо встать на конкретный изменяемый пункт окна Watch Window.
    В следующей группе устанавливаются флажки для выбора дополнительно индицируемых столбцов окна Watch Window (по умолчанию стоят два). Часто бывает полезен Show Previous Values (Показать предыдущие значения).
    Show Gridlines - включает линии сетки таблицы окна. Minimum Size - сжимает размер окна по находящимся в нем значениям. Ну и две последние опции, как и раньше служат для настройки шрифта и цветовой гаммы окна Watch Window.
    Материал по отладке получился довольно объемным и растянутым, но не зная вышеизложенного, - трудно понять преимущества ISIS перед другими отладчиками. Надеюсь, что и опытные пользователи Протеуса нашли здесь для себя полезные сведения.
    Что-то я давно не прикладывал файл примера, исправляюсь. Прикладываю здесь для практического освоения последнего материала. Просто запустите симуляцию, попробуйте отключить прерывание, или сделать свое. Здесь же присутствуют и графики из более раннего материала. Файл ассемблера уже подключен и откомпилирован через MPASMWIN. Как обычно версия 7.4 и секция для более ранних.
Рисунок 54
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic54.gif
Просмотров: 891
Размер:	14.9 Кб
ID:	1731  
Вложения:
Тип файла: rar FMeter_2.rar (40.8 Кб, 1171 просмотров)

Последний раз редактировалось Halex07; 04.11.2009 в 06:43.
Halex07 вне форума  
Эти 20 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (28.09.2011), bz1100 (24.02.2012), fmp (30.12.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), vitalgolov (30.09.2010), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 15.08.2009, 06:32  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.29. Исследуем исходник на ассемблере. Чем и как его открыть и редактировать.
    В п. 2.21 при анализе динамической индикации с помощью графиков мы определили, что причиной является пересечение во времени сигналов активных разрядов, вызывающее "наползание" индицируемых цифр одна на другую. Идеально было бы применить тот способ, который использован в примере t15demo.DSN, а именно - стробирование (гашение) дешифратора короткими импульсами на время смены разрядов индикации. Легко сказать, но нелегко сделать, - ведь у нас задействованы все ноги МК, лишнюю никак не приделаешь. Значит, аппаратный способ исключается. Остается только правка программы. Конечно, поправить листинг ассемблера в самом Протеусе нам не удастся, он для этого и не предназначен. Потребуется какой-нибудь сторонний редактор. Самым тривиальным в данном случае является использовать родной виндоузный редактор Блокнот (он же Notepad в английской версии), поскольку листинг ассемблера с расширением .asm является обычным текстовым файлом и открывается любым редактором, поддерживающим кодировку DOS. Можно, при некотором навыке, воспользоваться даже MS Word, только придется поизощряться с сохранением файла в нужном формате. Но все это "крайние меры", поскольку ни дают никакой дополнительной информации по синтаксису текста - вы будете видеть обычный ровный черный текст, как на бумаге. Разбираться в таком тексте крайне затруднительно: где команды, где просто комментарии к программе - сходу не понять.
    Конечно же, можно воспользоваться и родными редакторами, встроенными в компиляторы, например для PIC микроконтроллеров в том же MPLAB IDE или CCS PICC, но согласитесь - открывать для поправки пары строк кода навороченный компилятор как то душа не лежит.
    Для таких целей идеально подходят редакторы с подсветкой синтаксиса языков программирования. Перечислять все доступные во "всемирной паутине" текстовые редакторы для программистов не хватит и нескольких листов. Почему то каждый начинающий программист спешит заявить о себе миру с создания именно текстового редактора, и каждый считает, что создал нечто уникальное, не имеющее аналогов. Но большинство из них поддерживают подсветку синтаксиса только для языков высокого уровня: Си, Бэйсик, Паскаль и т.п., ну в лучшем случае еще ассемблер х86. Правда, уважающие себя авторы, предусматривают возможность настраиваемой подсветки. Рекомендовать какой либо конкретный редактор, означает вызвать бурю негодования поклонников других программ, но я все же рискну. Вот уже на протяжении нескольких лет для быстрого просмотра и редактирования листингов программ я пользуюсь редактором
    ConTEXT ( http://www.contexteditor.org ).
    Кстати свежая версия 0.98.6 вышла 14 августа 2009 года. Почему именно он? Да потому что с 2007 года автор этой программы - Eden Kirin из Хорватии сделал его бесплатным и открыл доступ к исходникам. Теперь он развивается, как и Linux, что называется "всем миром". Ну а главные его достоинства - небольшой "вес" инсталятора - 1,6 Mb и огромное количество доступных для скачивания готовых подсветок языков программирования, в том числе и для ассемблеров всех популярных микроконтроллеров: AVR, PIC, ARM, 68000, 68HC11 и пр. Если кому не нравится готовый вариант подсветки, может создать свой или поправить его по своему вкусу. Ну и не последнее место среди "удобств" занимает встроенный русский интерфейс программы, а также функция Compare (сравнение двух файлов на идентичность текста). Не всякий навороченный редактор имеет такие возможности. Сайт программы англоязычный, поэтому для тех кто "плавает" в языке подскажу, что файлы подсветки синтаксиса доступны на страничке Downloads и распределены по группам Highlighters в алфавитном порядке. Например, чтобы скачать файлы для подсветки ассемблера PIC (их аж два варианта) заходим на страничку Highlighters [M..P] и скачиваем или PIC Assembler.chl или PIC-MPASM.chl ну или, как Винни-Пух: "и то и другое, и можно без хлеба". Эти файлы помещаются в папку Highlighters установленной программы, после чего подсветка доступна для выбора. Как это выглядит можно воочию убедиться по следующему скриншоту (Рис.55 ) с нужным нам участком программы. Да, еще для "не владеющих", при скачивании самой программы воспользуйтесь ссылкой: Alternatively Download without making a Donation на странице скачивания, если нужна бесплатная "халява", поскольку выше авторы предлагают "поддержать программу материально".
    Еще раз подчеркиваю, чтоб в меня "не бросали камнями" - это не единственный текстовый редактор с подсветкой синтаксиса и, наверное, не самый лучший, но он прост и доступен, а для меня еще важно и то, что я им пользуюсь давно и привык, как к любому другому подручному инструменту: паяльнику, пинцету и т.п. Желающие также могут попробовать другие бесплатные редакторы:
    Notepad++ http://notepad-plus.sourceforge.net/ru/site.htm - 2.9 Mb (мое личное впечатление очень даже…);
    PSPad - http://www.pspad.com/ru/compilers.htm - 4.2 Mb;
    Notepad2 - http://flos-freeware.ch/notepad2.html - 251 Kb;
    или совсем небесплатные:
    MED - http://www.med-editor.com/indexus.html - 1.37 Mb;
    SlickEdit - монстр, рекомендованый dosikus-ом, офф. сайт - http://www.slickedit.com - весит около 55 Mb, а вот здесь: http://megajohn.embedders.org/articles/?id=slickedit русскоязычное описание жутко навороченных его возможностей.
    Я же на этом заканчиваю "рекламную паузу" и приступаю к этапу пластической хирургии. Итак, мы открыли файл Digiscal.asm в каком-нибудь редакторе и найдем в листинге две любопытных строки с комментарием:
    Код:
    356 ; 7-step cycle of digits
    ...
    ...
    541 ; 8-step cycle of digits
    Именно отсюда начинаются циклы динамической индикации, судя по переводу фраз. В одном случае для 7 разрядов, в другом - для 8. Давайте попробуем в ISIS воткнуть в этих местах брекпойнты и посмотреть - туда ли мы попали. Напомню, что точки останова можно поставить только в строчках с исполняемым кодом, либо метками - адрес которых совпадает со следующей исполняемой строкой. Ставим точки останова на строки:
    Код:
    359 LEDCycle    movlw      LED0
    ...
    ...
    544                     movlw      b'00000000'
    Запускаем симуляцию обычной кнопкой Play и благополучно тормозимся на 359 строке (Рис. 56 ). Ну конечно, так и должно быть, ведь в исходном состоянии должны индицироваться 7 разрядов. Восьмой служит только для настройки. Остается только проверить это. Делаем брекпойнт 359-й строки неактивным, ну или совсем удаляем и снова запускаем симуляцию. Теперь она не тормозится, значит в строку 544 мы не попадаем. Давайте попробуем войти в режим установки, нажав при симуляции на секунду кнопку SB3.1 и мы благополучно "приземлились на наш брекпойнт. Статус кво восстановлен. Делаем вывод: со строки 356 начинается обычная индикация в рабочем режиме, со строки 541 - в режиме установки, когда присутствует 8-й разряд индикации.
Рисунок 55
Рисунок 56
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic55.gif
Просмотров: 1158
Размер:	55.6 Кб
ID:	1733   Нажмите на изображение для увеличения
Название: Pic56.gif
Просмотров: 1101
Размер:	67.6 Кб
ID:	1734  

Последний раз редактировалось Halex07; 04.11.2009 в 06:45.
Halex07 вне форума  
Эти 19 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (29.09.2011), bz1100 (24.02.2012), e_oshtuk (11.01.2010), fmp (30.12.2010), leoblp (01.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 19.08.2009, 04:19  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.30. Реальные показания индикации в окне Watch Window.
    Теперь нам необходимо определиться: а что же в дейтвительности должен показывать дисплей. Это тоже несложно сделать и мы это умеем. Обратите внимание вот на этом участок в начале листинга:
    Код:
    LED0        equ       010h         ;
    LED1        equ       011h         ;
    LED2        equ       012h         ;
    LED3        equ       013h         ; ячейки
    LED4        equ       014h         ; индикатора
    LED5        equ       015h         ;
    LED6        equ       016h         ;
    LED7        equ       017h         ;
    Ведь это ни что иное, как шестнадцатиричные адреса регистров памяти МК, в которые записываются отдельные разряды (цифры) значения текущей измеренной частоты. Давайте добавим их в окно WATCH по известным адресам, теперь мы умеем это делать. При этом дадим им имена те, что присвоены в листинге, чтобы не путаться в последствии. Ну и чтобы было "приятно глазу" для значений выберем Display Format - Unsigned Integer (беззнаковое целое). Запускаем симуляцию проекта и видим при отключенном генераторе на входе соответственно с LED7 по LED0 00000001. Примем к сведению, что старший разряд LED7 используется только при калибровке цифровой шкалы и не несет информации о частоте. Теперь подадим входную частоту 100k (100кГц) соответственно в окне Watch Window 00010026. С учетом запятой должна индицироваться частота 00,10026 МГц. Проделаем те же манипуляции еще для пары частот, чтобы набрать статистику. Для генератора 1M (1МГц) получаем индикацию 00100091 или 01,00091 МГц. Для генератора 10M (10 МГц) - 01000701 или 10,00701 МГц, правда при этом загрузка ЦП составляет 100% о чем свидетельствует "горчичник" в логе симуляции. Для чего я это проделал? Да чтобы показать, что изначально существует погрешность в показаниях и при коррекции программы мы будем стараться получить именно эти значения для выбранных трех точек. И пусть Вас не смущает тот факт, что мы не получили точно соответствующие измеренные значения. Ведь и в реальной конструкции автор рекомендует произвести подстройку частоты кварцевого генератора. Мы же сейчас стремимся только воспроизвести в модели логику работы частотомера, ну и конечно по мере возможностей получить более-менее приемлемые результаты тестирования. Все изложенное в этом пункте с ведено в очередной вариации тестового проекта (вложение), а результат подачи тестовой частоты 100кГц приведен на рисунке 57.
Рисунок 57
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic57.gif
Просмотров: 948
Размер:	35.1 Кб
ID:	1735  
Вложения:
Тип файла: rar FMeter_3.rar (38.6 Кб, 1117 просмотров)

Последний раз редактировалось Halex07; 04.11.2009 в 06:46.
Halex07 вне форума  
Эти 17 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bz1100 (24.02.2012), fmp (30.12.2010), leoblp (01.12.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), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 23.08.2009, 09:21  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.31. Корректируем ассемблерный файл. "И все таки она вертится".
    Ну вот и подходит к концу наше затянувшееся исследование первого проекта. Настала пора внести исправления и убедиться, что все работает. Итак, нам необходимо получить гашение на короткий период индикатора при смене разрядов, а произойти оно может при подаче уровней логических нулей на сегменты индикатора, т.е. во все разряды порта PortB, к которым они подключены. Сделать это можно двумя командами:
    Код:
    movlw      b'00000000' ; записать все нули в регистр аккумулятор
    movwf      PortB           ; записать содержимое аккумулятора в  PortB
    Я не стал особо мудрствовать и добавил эти команды в начале цикла индикации 7-step cycle of digits . Почему в начале? А какая собственно разница: в начале или в конце? Цикл все равно вращается по кругу, так что тут все относительно. Зато искать ничего не надо, мы уже определили начало цикла. Я бы покривил душой, если бы не коснулся еще одного момента. Для индикатора в свойствах я установил Minimum Trigger Time 200us, т.е. соизмеримым, ну или по крайней мере больше половины времени индикации одного разряда согласно графику, полученному нами в п. 2.20. Запускаем симуляцию без входного сигнала - все нули и десятичная точка только там где должна быть - заработало! Подаем сигнал 100кГц на вход получаем результат как на Рис. 58.
    Ну что, - порядок значения совпадает, только погрешность увеличилась. Так и должно быть - ведь мы добавили в цикл индикации одного разряда две команды и общее время выполнения программы изменилось, а это для такого варианта измерения частоты существенно. Не зря же в начале листинга стоят два значения задержек T1 и T2, а в коментарии сказано, что они подобраны для частоты кварца 4 МГц.
    Теперь посмотрим на наши графики - не зря же мы их таскаем из проекта в проект. Запустим симуляцию первого из них и убедимся, что и здесь картинка изменилась (Рис. 59 ). На шине SEG[1..8] появились врезки изменений сигнала. Сравните с рисунком 36 или графиком в предыдущем примере.
Рисунок 58
Рисунок 59
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic58.gif
Просмотров: 892
Размер:	60.3 Кб
ID:	1737   Нажмите на изображение для увеличения
Название: Pic59.gif
Просмотров: 874
Размер:	7.0 Кб
ID:	1738  

Последний раз редактировалось Halex07; 04.11.2009 в 06:50.
Halex07 вне форума  
Эти 19 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (29.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), leoblp (01.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (12.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 23.08.2009, 09:30  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.32. Финальный вариант проекта с рабочей индикацией.
    Если растянуть место смены разрядов на индикаторе (второй график в проекте), то можно с помощью маркеров измерить время гашения индикатора (Рис. 60 ). У меня получилось около 19 мксек. Знатоки микрочиповских МК тут же возмутятся - откуда? Ведь мы добавили всего две команды, а каждая из них для частоты кварца 4 МГц длится 1 мксек (4 такта по 250 наносек). Согласен, но я не выбирал очень уж точно место, куда всунуть паузу, а следующая запись в PortB стоит на 13 строк ниже нашей вставки, да еще там присутствует вызов подпрограммы преобразования кода, пусть даже и очень короткой. Дотошные могут самостоятельно подсчитать по количеству исполняемых команд длительность паузы, ну или воспользоваться брекпойнтами в пошаговой отладке в нужных местах и вычислить по разнице времени между точками останова.
    Я же сейчас постараюсь произвести коррекцию кода, чтобы подогнать показания индикатора к тем, что мы получили с исходным кодом. Опять буду действовать тривиально. Просматриваю ассемблерный листинг ниже нашей вставки и натыкаюсь на следующий участок кода:
    Код:
    ; The first timing loop
    ;=============================================
    O_K
                movlw      T1
                movwf      Temp
    Pause
                decfsz     Temp,F
                goto        Pause
    Типичная задержка, с использованием константы T1 равной десятичному числу 67 (посмотрите в начале листинга присвоение ей значения). Еще чуть ниже находится проверка текущего разряда на достижение семи знаков и команда перехода к индикации следующего:
    Код:
    goto       LEDCycle    ; next 7xLED
    Не буду вникать в тонкости грубого и точного подбора констант автором, для меня важно, что я добавил две команды внутри цикла индикации одного разряда, определяемого именно T1, поэтому уменьшать пробую ее. Уменьшение на 2 (добавлялось ведь 2 команды) слишком круто меняет результат измерения вниз - получаем для частоты 100k результат 00.09850 МГц. Подставим значение .66 и получаем 00.09965 МГц. Вот это уже лучше. Ну и, взяв за основу неписаное правило, - не знаешь что сделать - поставь nop (нет операции), я взял да и ткнул один лишний в код задержки приведенный выше перед циклом, начинающимся с метки Pause. Запускаю симуляцию при 100 кГц на входе и… 00,10026 МГц - как говорится: то, что доктор прописал. Проверяю с частотами 1 МГц и 10 МГц - индикация в соответствии с тем, что мы видели раньше в Watch Window для авторского кода. Дело сделано, но не совсем. Попробуйте нажать на кнопку SB1 на 1-2 сек, чтобы перевести схему в режим установки промежуточной частоты и получите опять несоответствие того что в Watch Window и на индикаторе. Ну правильно, мы же скорректировали цикл только для индикации семи знаков. Теперь надо проделать аналогичную операцию с восьмизначной индикацией.
    Код:
    ; 8-step cycle of digits
    ;=============================================
    ;
    
                movlw      b'00000000' ;
                movwf      PortA
    ;
                bsf        Status,RP0
                movlw      b'00010000' ; RA0..RA3 output,RA4 input
                movwf      TrisA       ;
                bcf        Status,RP0  ;
                clrf       LEDIndex    ; указатель цифры
    EdtCycle
                
                movlw      b'00000000' ; записать все нули в регистр аккумулятор
                movwf      PortB       ; записать содержимое аккумулятора в  PortB
                
                movlw      LED0
                addwf      LEDIndex,W  ; LED1 + LEDIndex -› W
    Обратите внимание, что я вставил код не в начале 8-step cycle of digits, а именно перед аналогичным для семизначной индикации участком кода. В финальном варианте при подаче на вход частоты 100 кГц в режиме частотомера показания соответствуют рисунку 61. Во вложении последний вариант со всеми исправлениями.
Рисунок 60
Рисунок 61
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic60.gif
Просмотров: 752
Размер:	13.4 Кб
ID:	1739   Нажмите на изображение для увеличения
Название: Pic61.gif
Просмотров: 957
Размер:	53.3 Кб
ID:	1740  
Вложения:
Тип файла: rar FMeter_4.rar (73.5 Кб, 1191 просмотров)

Последний раз редактировалось Halex07; 04.11.2009 в 06:52.
Halex07 вне форума  
Эти 21 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (28.09.2011), bz1100 (24.02.2012), fmp (30.12.2010), leoblp (01.12.2009), Natys (09.10.2009), parcshin (23.04.2011), Paulwasw (27.11.2012), PavelMSTU (11.01.2011), ReLe1 (14.08.2011), seltec (29.05.2011), Space-r (12.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)
Непрочитано 24.08.2009, 02:31  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.33. Выводы по применению динамической индикации в Протеусе и в реальности. Дополнительные ресурсы.
    Хочу еще раз обратить внимание всех, кто использует проекты с семисегментными индикаторами в Протеусе, что программные модели многоразрядных сегментных индикаторов чисто цифровые. Что это означает, и чем это чревато для нас?
    Во-первых: они не являются "потребителями тока", т.е. даже если Вы подключите напрямую к выводам микроконтроллера - никаких "перегрузок по току" не возникнет. Тут главное не нарушить полярности управляющих сигналов. Навешивание всевозможных мощных управляющих ключей на биполярных или полевых транзисторах в этом случае приводит только к увеличению нагрузки на процессор компьютера, и, как следствие, невозможности нормальной симуляции, поскольку все они являются аналоговыми элементами. С самого начала надо определиться - чего Вы добиваетесь. Если хотите симулировать схему - все аналоговые ключи долой! Когда очень уж надо проинвертировать выходной сигнал с выводов МК, например, когда индикаторы включены в коллекторную цепь транзисторов, - поставьте цифровые примитивы INVERTER , а для создания печатной платы в ARES - сделайте отдельную копию дизайна с транзисторными ключами и прочей аналоговой бижутерией.
    Во-вторых: все попытки изменить яркость многоразрядных сегментных индикаторов ISIS обернутся полной неудачей. Сегменты индикаторов имеют только два реальных "цифровых" состояния: включено и выключено. При небольшом количестве индикаторов можно попробовать применить схематичные ( Schematic ) одноразрядные модели индикаторов, но и они, если не переделать на свой лад (о чем поговорим позже) тоже имеют только два состояния. Единственное, что они Вам дадут - это реальную токовую нагрузку, поскольку для их создания были применены аналоговые примитивы.
    В-третьих: для того, чтобы динамическая индикация при симуляции выглядела реально, нам необходимо предусмотреть кратковременные паузы при смене разрядов, исключающие наползание разрядов индикации. Паузы могут быть достаточно короткими (в районе 10 микросекунд), но их присутствие необходимо. Первым на эту особенность обратил внимание dosikus и материал по этой теме был в одной из веток форума Kazus :
    http://kazus.ru/forum/topics/10434.html ,
    а также размещен на сайте Каллиграфа:
    http://www.kaligraf.narod.ru/nedodellki.html
    Дополнительно реальность показаний корректируется свойством Minimum Trigger Time индикатора.
    Нужны ли эти паузы в реальной индикации - решать Вам. Здесь хочу обратить ваше внимание только на один нюанс, который мы обнаружили и устраняли при изучении первого проекта. Вспомните про перекрывающиеся импульсы разрядов индикатора. А теперь представьте, что мы зажгли в двух соседних разрядах все сегменты - восьмерка. Может быть в реальности глазом подсветка и не будет заметна, но ведь сегменты подключены непосредственно к портам и на момент перекрытия импульсов разрядов нагрузка на порты подскочит вдвое!!! Порт может и выдержит, но опять-таки представим, что наш девайс питается от батарейки. Нужны ли нам эти абсолютно бесполезные броски по току? А если учесть то, что изложено чуть ниже в пунктах b и с, то можно запросто и порт МК спалить.
    Теперь остановимся на некоторых особенностях реальной индикации:
    a) для того чтобы человеческий глаз не замечал мерцаний картинка должна обновляться с частотой не менее 25 Гц (вспомним "эффект 25-го кадра"). Если мы имеем N индикаторов, для исключения мерцания необходима частота обновления 25 х N;
    b) для того чтобы сохранить яркость свечения индикаторов в динамическом режиме - ведь средний ток через сегменты упадет - необходимо уменьшать токоограничивающие резисторы, а при большом количестве разрядов возможно и увеличивать напряжение питания индикаторов;
    c) вот тут и потребуются в реальности мощные ключевые элементы и т.п, так как засветка, например, всех восьми сегментов (учитывая точку) знакоместа с током сегмента от 3 до 10 мА даст суммарный ток от 24 до 80 мА, но это в статике. Средний же ток через ключ, учитывая скважность импульсов для восьмиразрядного (N=8 ) для сохранения яркости свечения грубо необходимо увеличить в 8 раз (в реальности зависимость нелинейна) т.е. получим от 192 до 640 мА!!!
    Ну и завершу я тему динамической индикации весьма неожиданным для многих заключением. Полученные для динамической индикации в результате симуляции в ISIS положительные результаты совсем не обязательно дадут аналогичную картину в реальности. Мы опрерировали с моделями. У настоящего светодиодного индикатора присутствует куча параметров, которые не учтены в программной модели. Поэтому только проверка "в железе" может дать окончательный результат. В то же время воспроизведение даже реально работающей схемы в Протеусе позволяет выявить ее скрытые слабые стороны и позволяет исключить повторение ошибок при ее дальнейшем усовершенствовании. Ну и в заключение короткий список книг и он-лайн ресурсов по динамической индикации.
    Книги:
    *** Вольфганг Трамперт "Измерение, управление и регулирование с помощью AVR-микроконтроллеров" (глава 2 полностью посвящена динамической индикации, приведен расчет токоограничивающих резисторов).
    *** В. Н. Баранов "Применение микроконтроллеров AVR: схемы, алгоритмы, программы" (глава 4 посвящена динамической индикации) .Тот же материал опубликован в журнале "Схемотехника", № 5, 6 за 2006 г. Автор имеет свой сайт: http://bvn123.narod.ru
    Он-лайн ресурсы:
    *** А. В. Микушин Цикл лекций по теме "Цифровые устройства" на сайте СибГУТИ
    http://www.sibsutis.ru/~mavr/contCVT.htm . (раздел 7.4 посвящен динамической индикации)
    *** Динамическая индикация 9 разрядного индикатора по последовательной шине.(от DimAlt) у Радиокота http://radiokot.ru/lab/controller/08/ (приложен рабочий проект для Протеуса с тестовой программой для Atmega8 на WinAVR).
    *** Динамическая индикация и регулировка яркости http://arv.radioliga.com/index.php?o...=101&Itemid=49 (интересная идея по ШИМ регулировке яркости индикаторов от Романа Абраша автора цикла статей по МК в журнале "Радиолюбитель")
Halex07 вне форума  
Эти 27 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (28.09.2011), bz1100 (24.02.2012), e_oshtuk (11.01.2010), fmp (30.12.2010), homo_sapiens (09.11.2010), LabRat (25.12.2020), leoblp (01.12.2009), parcshin (23.04.2011), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Space-r (12.05.2010), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011), Ерема (09.12.2009), Хатуль_мадан (22.07.2014)
Непрочитано 29.08.2009, 09:38  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,455 раз(а) в 955 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.34. Заключение к первой части.
    На этом мы завершаем этап изучения Протеуса, который я условно для себя обозначил "Протеус для чайников". Излагая последующий материал, я буду считать, что Вы на примере разобранного выше проекта частотомера с динамической индикацией усвоили следующие материалы и приемы работы в программе ISIS:
    *** Программный интерфейс ISIS, назначение основных опций меню и кнопок;
    *** Создание и быстрое редактирование проекта в программе ISIS;
    *** Имеете навык по редактированию некоторых свойств применяемых компонентов;
    *** Ознакомились с начальными приемами размещения в проектах графиков и размещения на них трасс сигналов от зондов-пробников.
    *** Познакомились с возможностями применения моделей микроконтроллеров в Протеусе.
    В архиве ниже к этому посту вся первая часть FAQ в PDF формате с вложениями и примерами к соответствующим постам для ofline использования.
    Архив WinRAR ниже - берите и пользуйтесь.
Вложения:
Тип файла: rar FAQ_P1.rar (2.18 Мб, 9840 просмотров)

Последний раз редактировалось Halex07; 04.11.2009 в 06:57.
Halex07 вне форума  
Эти 230 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
-AnB- (20.03.2011), 4712357482 (21.06.2011), abigsam (08.09.2011), ABrej (06.04.2010), achertkov (22.09.2009), Addja (08.12.2015), Alcher (10.02.2010), aleksei_butiaev (11.10.2021), ALEKSEY188 (19.03.2010), aleksw7 (13.10.2009), alevch76 (09.02.2010), alexandr156 (16.03.2011), alexandr1981 (16.09.2011), alexey-prokofyev (18.07.2011), alexky (04.07.2011), alexnoskov (11.12.2010), allmaker (15.05.2012), anblast (26.04.2010), andan (01.02.2011), artman66 (07.01.2012), artyomugr (15.05.2012), av0000 (24.06.2011), Avp.Net (20.04.2020), barmaley2010 (29.04.2015), batalionok (08.09.2009), Bird55 (11.05.2016), bi_max (28.09.2011), bobby1968 (13.01.2011), Borbos969 (21.04.2011), bozhko (12.10.2009), BXG (14.11.2009), bz1100 (24.02.2012), Canyon1971 (17.12.2009), CERGEI1982 (19.11.2010), Chettuser (18.11.2012), chkmatulla (16.03.2011), CtariBarbos (26.10.2009), Cutlass (12.02.2010), Daddy_Karlo (12.01.2010), ded (06.02.2010), demjura (12.03.2012), deniart (25.02.2017), dial78 (02.09.2010), DimAlt (22.04.2012), djdimas (03.09.2010), dron2200 (08.08.2011), Dubina (02.11.2010), dzeer (15.03.2012), eddy-p (22.01.2020), enigm (01.08.2010), EvgenWL (12.02.2011), evgtitl (19.03.2020), expon (10.09.2009), E_C_C (12.11.2009), figor008 (19.04.2012), Firsovich (19.01.2010), Flopix (25.04.2012), fmp (30.12.2010), fvtkby (24.09.2011), garimas (20.09.2012), gbf1 (26.09.2016), grbizly (11.10.2010), gres_go (13.03.2011), Gura (23.09.2009), homo_sapiens (09.11.2010), icepower (21.09.2011), igor7779 (16.12.2009), indman (07.06.2018), Ironium (22.01.2016), jabberok (17.06.2013), jtp (25.04.2010), jugor (17.06.2010), justnsn (08.08.2011), jvcr (24.03.2011), kama3er (20.12.2009), KilleRMill (10.02.2010), komar72 (22.04.2010), kozeka (20.02.2012), kuksin (28.10.2009), leo372 (03.03.2011), leoblp (01.12.2009), Lesnovmm (17.05.2011), Livas (27.05.2010), livsha (29.05.2010), LordMazy (20.01.2018), lv73 (27.04.2015), magioza (02.04.2015), majorka65 (17.02.2010), makser1 (24.09.2010), max7533 (26.10.2009), miaua (19.01.2015), Michalych (11.05.2010), mihail (10.11.2010), mikemdr (08.04.2010), Mitka_kh (04.12.2009), mmavkas (09.07.2010), MuKeXa (17.05.2011), multipod (06.11.2009), nanogul (18.02.2010), Natys (09.10.2009), NickerS (31.05.2015), Nifelheim (08.11.2009), Nikopol (12.02.2011), omega-2008 (13.12.2010), Paintforge (03.02.2012), parcshin (23.04.2011), Partizan26 (21.06.2010), PashaP (06.02.2012), Paulwasw (27.11.2012), Picman (26.08.2010), pifa (24.12.2009), Proff_CP (01.12.2011), pshenan (01.10.2012), pv2 (08.02.2017), ReLe1 (14.08.2011), robika (27.04.2011), rulon1 (17.09.2010), rw54 (02.07.2010), sa502 (20.12.2009), scenter (09.10.2016), seeker-rzd (02.05.2011), serfius (22.05.2014), Serg3301 (05.10.2011), Sergey_Vl (04.10.2010), Sergofan5 (23.09.2009), shols (13.02.2011), Shurik_kor (16.09.2012), Simbr (08.06.2010), Skovorodka (19.04.2011), slawlog (29.12.2010), smkw (30.08.2010), Space-r (12.05.2010), Staels (07.06.2010), strvv (30.08.2010), studentko (26.09.2011), stuFFgr (21.01.2010), svm6024 (09.04.2013), svshkiev (26.12.2010), S[lver (06.09.2015), teasn0 (08.11.2009), technotorg (03.02.2018), The First (13.03.2011), ticksp (23.02.2010), Tischon (21.01.2011), toklyn (13.07.2010), Traan (13.09.2013), UriUriKor (08.12.2016), VADI_SHAP (19.08.2010), vic2004 (27.05.2010), Victgr59 (13.10.2009), vik64 (13.10.2010), vikbespalov (14.12.2009), vitalgolov (30.09.2010), VitaMT (26.05.2010), VIV_55 (07.01.2012), vlad3156 (07.12.2009), vladh (18.07.2010), Vladim00 (10.12.2014), vlad_78 (14.10.2010), vlr64 (30.11.2010), VooVoo (15.11.2014), vrybel (02.05.2019), V_andre (27.09.2011), wal7 (23.03.2011), wasp (08.09.2009), wct_sniaper (29.01.2010), welder_2002 (28.04.2021), wind_sto (12.10.2009), WjaCHSL (30.01.2010), wlad62 (17.12.2009), Wladzu (09.07.2011), xaron (15.11.2010), xorkrus (17.09.2013), yarikk (10.01.2012), yatsik (26.03.2010), YUDSV7 (21.08.2011), zhitya (09.12.2010), zonger58 (21.12.2010), ZUKK (13.09.2009), zuu4156 (29.07.2010), z_koldun (20.10.2011), Алекскндр (04.02.2010), ДимаК (21.06.2011), Немцов (05.03.2010), Сандерсон (29.01.2015), юраха (31.08.2010), _George (04.10.2011)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1876 23.03.2022 18:49
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, время: 08:57.


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