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

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

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

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

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

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


 
Опции темы
Непрочитано 20.11.2012, 04:11  
Lavrentii
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Lavrentii на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Уважаемый Halex07!
В FAQ (ЧаВО) по PROTEUS Вы писали:
Цитата:
Подавляющее количество библиотек для программных моделей в ISIS написано самим разработчиком – фирмой Labcenter Electronics в среде MS Visual C++ и скомпоновано в динамические библиотеки с именем имитируемой модели или группы и расширением DLL. В ранних версиях Протеуса, до версии 6.2 включительно в состав установочного пакета входили и средства для разработки программных моделей - Proteus VSM SDK.
В упомянутом Вами .PDF-документе, который можно найти в сети, - Creation VSM - Modelos Digitales.PDF - автор пишет:
Цитата:
VSM–model is library *.DLL, written in language C++. Is desirable to use compiler Microsoft Visual C++ 7.0 (it is accessible for the free load from site Microsoft), or another compiler C++, for example Digital Mars.
Я также встречал в сети упоминание одного автора, что для сборки DLL-библиотек VSM-моделей "Proteus", он использовал "VCToolkit от Microsoft (бесплатный C++ компилятор командной строки, совместимый с .NETовским) и утилиты nmake.exe того же производителя."

В самом документе VSMSDK.HLP упоминается только что:
Цитата:
The next stage in the process is to set up a C++ project for READOUT.DLL.
Exactly what you do will depend on the compiler that you use and the complexity of the model, but typically you will need to create a header file, a C++ code file and to set up your IDDE to produce a 32 bit DLL.
То есть, Labcenter Electronics явно ограничения на компилятор C++ не накладывает...

Вопрос заключается в том, существуют ли реально какие-либо ограничения на выбор компилятора C++ для сборки DLL-библиотек VSM-моделей "Proteus"?
Это обязательно должен быть MS Visual C++, или можно использовать Borland C++ Builder, или, скажем, GCC?
Реклама:
Lavrentii вне форума  
Непрочитано 20.11.2012, 07:40  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Сообщение от Lavrentii Посмотреть сообщение
В упомянутом Вами .PDF-документе, который можно найти в сети, - Creation VSM - Modelos Digitales.PDF - автор пишет:
Вообще-то этот автор писал дословно так:
Цитата:
VSM-модель представляет собой библиотеку .DLL, написанную на языке C++. Желательно использовать компилятор Microsoft Visual C++ 7.0 (он доступен для бесплатной загрузки с сайта Microsoft), или другой компилятор C++, например Digital Mars. Delphi не подойдет по причине невозможности вызова членов классов, откомпилированных C++. Я буду писать вариант для Microsoft Visual C++, для других компиляторов переделка будет не очень сложной.
И тогда еще именно так, по-русски. И единственное, с чем я не совсем согласен - это последнее утверждение про переделку. Так что если Вы сумеете безболезненно подключить заголовочники VSM SDK, например, в Борланде и откомпилировать безошибочно рабочую DLL для Протеуса, то, как говорят - "флаг Вам в руки, барабан на шею". Глядишь, "наших" в Лабцентре уже будет двое. У меня, к сожалению, остался печальный опыт от такого эксперимента, а в MS Visual C++ даже еще 5-й версии получалось без лишних "танцев с бубном". Все в Ваших руках (да простит меня Тень за нахальную цитату его давно "затертого в сети" руководства по цифровым моделям).
Halex07 вне форума  
Непрочитано 20.11.2012, 23:34  
Lavrentii
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Lavrentii на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Сообщение от Halex07 Посмотреть сообщение
Так что если Вы сумеете безболезненно подключить заголовочники VSM SDK, например, в Борланде и откомпилировать безошибочно рабочую DLL для Протеуса, то, как говорят - "флаг Вам в руки, барабан на шею". Глядишь, "наших" в Лабцентре уже будет двое. У меня, к сожалению, остался печальный опыт от такого эксперимента, а в MS Visual C++ даже еще 5-й версии получалось без лишних "танцев с бубном".
В Борланде создали проект DLL-ки по типу VC++, заголовочник VSM SDK подключили ну почти безболезненно. DLL для Протеуса откомпилировали (с точки зрения компилятора) безошибочно. C-вызовы ( _stdcall, _cdecl ) проходят нормально, а вот на вызовах виртуальных функций Протеус вешается...
Прямо сразу вот здесь: ils-›authorize (model_key)
Решили упрямо "станцевать с бубном", поскольку, факт, что MS Visual C++ справится - сомнения у нас не вызывал.
Хотя, с другой стороны, вот это нас несколько смущало:
Сообщение от VSMSDK.HLP
The VSM API draws heavily on the concepts underlying Microsoft's™ COM architecture but does not implement it fully. Specifically, all the major VSM interfaces are implemented as C++ abstract classes. A pointer to an instance of such a class amounts to a pointer to a table of functions but with an easier and clearer syntax. The kernel provides each model with a number of these interface pointers which allow access to data and other relevant services.
...
We chose not to implement COM fully as it keeps the VSM API portable between operating systems (a Linux version is not unthinkable) and makes the installation and sharing of models between machines much simpler.
Сейчас пришли вот к такому предварительному выводу:
В функции члена класса кроме параметров передается и ссылка на объект класса.
Borland так и поступает - складывает парамеры в стек, и также в стек вставляет ссылку на объект.
VS тоже кладет параметры в стек, а ссылку на объект передаёт через регистры.
Поэтому когда мы вызываем из Borland-а Proteus, мы ему передаем в authorize два параметра и ссылку на объект (в стеке), а Proteus ждет два параметра в стеке, и ссылку на объект в регистрах. Это причина зависания.


Ваш негативный опыт как-то совпадает с нашими выводами?
Или Вы могли бы подсказать нам что-то дополнительно?

Последний раз редактировалось Lavrentii; 20.11.2012 в 23:37. Причина: опечатки
Lavrentii вне форума  
Непрочитано 25.11.2012, 18:47  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Сообщение от Lavrentii Посмотреть сообщение
Ваш негативный опыт как-то совпадает с нашими выводами?
Извиняюсь, не ответил сразу -некогда было. Я так детально не проверял, мне срочно необходима была работающая модель, получив ее в MS Visual CPP я не стал запариваться с Борландом.
Halex07 вне форума  
Непрочитано 25.11.2012, 23:11  
Lavrentii
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Lavrentii на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Сообщение от Halex07 Посмотреть сообщение
Сообщение от Halex07 Посмотреть сообщение
У меня, к сожалению, остался печальный опыт от такого эксперимента, а в MS Visual C++ даже еще 5-й версии получалось без лишних "танцев с бубном".
...мне срочно необходима была работающая модель, получив ее в MS Visual CPP я не стал запариваться с Борландом.
Действительно, в MS Visual C++ 5.0 Proteus DLL компилируется без единого замечания...
Жалею, что не проверил в MS Visual C++ 4.1 - постоянно попадался диск в руки, пока MSVC++ 5.0 искал...

Для Борланд-Билдера мы решили написать "обёртки" для функций, которые правильно транслируют вызовы BCB в VC++ DLL, чтобы любители Билдера не тратили время, топчась по пройденному нами пути.
Если осилим, то выложим где-нибуть...
А кто и сам силён в C++, информация - вот здесь.


P.S. И, кстати говоря, Студия 2008 у меня на работе местный исходник - OneWireDebugger - с разбегу компилировать отказалась, изругав заголовочные файлы:
"Заголовочный файл ... от устаревшей версии Студии или от С" - но тут уж мне стало не охота "танцевать с бубном", поскольку дома MSVC++ 5.0 поставил...

Последний раз редактировалось Lavrentii; 25.11.2012 в 23:43. Причина: добавлен P.S.
Lavrentii вне форума  
Непрочитано 03.12.2012, 15:01  
Lavrentii
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Lavrentii на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Уважаемый Halex07!
В FAQ по PROTEUS Вы писали:
Цитата:
Протеус по умолчанию вводит три шины питания:
VCC/VDD=+5V, GND=0V и VEE=-5V.
Как в таком случае поступить с положительными напряжениями питания +5В и +12В в схемах, где часть выполнена на ТТЛ-микросхемах и часть - на КМОП, а между ними включены микросхемы преобразователей уровня, типа К176ПУ5 или К561ПУ7, к которым должно подключиться как +5В, так и +12В?
Как при этом будут выглядеть логические уровни?
И как сами модели цифровые микросхем отреагируют, если к ним "подключать" при моделировании не характерное для них питающее напряжение?
По идее - модель при начальной инициализции всей схемы должна проверить величину питающего напряжения и выдать ошибку в log, или нет?
Lavrentii вне форума  
Непрочитано 11.02.2013, 11:43  
Paulwasw
Прохожий
 
Регистрация: 27.11.2012
Сообщений: 2
Сказал спасибо: 40
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Paulwasw на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

Уважаемый Halex07! Большое спасибо за Ваш цикл статей по Proteus!
Если позволите, два вопроса:
1. В отладочном режиме в окне Watch можно наблюдать содержимое выбранных регистров контроллера (я работаю с PIC16). Но нигде я не нашел возможности наблюдать содержимое аккумулятора W.
2. Есть ли возможность, остановив трассировку в заданной точке, изменить значение регистров ОЗУ, имитируя какое-то внешнее событие? Трассировщик MPLAB это позволяет (частично), а в трассировщике Proteus я этой возможности не нашел.
Заранее прошу извинить, если вопросы тривиальны
Paulwasw вне форума  
Непрочитано 11.02.2013, 14:47  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

Сообщение от Paulwasw Посмотреть сообщение
1. В отладочном режиме в окне Watch можно наблюдать содержимое выбранных регистров контроллера (я работаю с PIC16). Но нигде я не нашел возможности наблюдать содержимое аккумулятора W.
Для этого есть отдельное окошко Registers, открывается из меню Debug.
Сообщение от Paulwasw Посмотреть сообщение
2. Есть ли возможность, остановив трассировку в заданной точке, изменить значение регистров ОЗУ, имитируя какое-то внешнее событие?
Такой возможности нет из-за специфики внутренннего устройства моделей.
TEHb вне форума  
Непрочитано 12.02.2013, 08:52  
Paulwasw
Прохожий
 
Регистрация: 27.11.2012
Сообщений: 2
Сказал спасибо: 40
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Paulwasw на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Большое спасибо за ответ. Все просто, как-то недооценил окно Registers.
Paulwasw вне форума  
Непрочитано 10.03.2013, 10:58  
Роман Ефимов
Временная регистрация
 
Регистрация: 16.04.2012
Сообщений: 75
Сказал спасибо: 20
Сказали Спасибо 1 раз в 1 сообщении
Роман Ефимов на пути к лучшему
По умолчанию Re: Вопросы и замечания по топику - FAQ по PROTEUS

Всем привет!
Первый раз взялся за LCD, графический, хочется что-то вывести туда.
Вообще, в интернете найти программу на си под PIC для LCD в протеусе, оказалось нелегко
Перечитал нужный раздел FAQ, по инструкции написал программу инициализации для МТ-12232А под PIC16F877.:
Код:
#include ‹pic.h› 
__CONFIG(0x03F72);

#define A0     RD0
#define R/W    RD1
#define E      RD2
#define RES    RD3
#define CS     RD4

#define TrA0     TRISD0
#define TrR/W    TRISD1
#define TrE      TRISD2
#define TrRES    TRISD3
#define TrCS     TRISD4

int i=0;
void main(void)
{
	T0IE=0;
	GIE=0;	
	TRISC=0;
	PORTC=0;
    TRISD=0;
    PORTD=0;
	while(1)
{
TRISD=0;
RES=0;
i++; i--; i++; i--;
RES=1;
for(i=0; i‹30; i++)
		{
			i++;
			i--;
		}
E=1;
i++; i--;
A0=0; 
RD1=0; 
PORTC=0xE2; 
CS=0;
E=0;
i++; i++; i--; i--;
E=1;
i++; i--;
PORTC=0xEE;
E=0;
i++; i++; i--; i--;
E=1;
PORTC=0xA4;
E=0;
i++; i++; i--; i--;
E=1;
PORTC=0xA9;
E=0;
i++; i++; i--; i--;
E=1;
PORTC=0xC0;
E=0;
i++; i++; i--; i--;
E=1;
PORTC=0xA0;
E=0;
i++; i++; i--; i--;
E=1;
PORTC=0xAF;
E=0;
i++; i++; i--; i--;
E=1;


}	
}
Шансов что будет работать настолькоже мало, что и кто нибудь из четающих хотябы посмотрит на код.
А теперь справедливый вопрос: Что после иниициализации делать? Как выводить?
Роман Ефимов вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Proteus общие вопросы dosikus Proteus 3363 04.07.2024 00:25
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Вопросы по PROTEUS-у Advanced_LAMER Proteus 372 19.09.2021 01:20
Вопросы по работе с Proteus dosikus Proteus 510 20.12.2007 18:48


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


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