20.11.2012, 04:11
|
|
Частый гость
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
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?
|
|
|
|
20.11.2012, 07:40
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
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-й версии получалось без лишних "танцев с бубном". Все в Ваших руках (да простит меня Тень за нахальную цитату его давно "затертого в сети" руководства по цифровым моделям).
|
|
|
|
20.11.2012, 23:34
|
|
Частый гость
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
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.
Причина: опечатки
|
|
|
|
25.11.2012, 18:47
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Вопросы и замечания по топику - FAQ по PROTEUS
Сообщение от Lavrentii
|
Ваш негативный опыт как-то совпадает с нашими выводами?
|
Извиняюсь, не ответил сразу -некогда было. Я так детально не проверял, мне срочно необходима была работающая модель, получив ее в MS Visual CPP я не стал запариваться с Борландом.
|
|
|
|
25.11.2012, 23:11
|
|
Частый гость
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
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.
|
|
|
|
03.12.2012, 15:01
|
|
Частый гость
Регистрация: 28.07.2006
Сообщений: 48
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопросы и замечания по топику - FAQ по PROTEUS
Уважаемый Halex07!
В FAQ по PROTEUS Вы писали:
Цитата:
|
Протеус по умолчанию вводит три шины питания:
VCC/VDD=+5V, GND=0V и VEE=-5V.
|
Как в таком случае поступить с положительными напряжениями питания +5В и +12В в схемах, где часть выполнена на ТТЛ-микросхемах и часть - на КМОП, а между ними включены микросхемы преобразователей уровня, типа К176ПУ5 или К561ПУ7, к которым должно подключиться как +5В, так и +12В?
Как при этом будут выглядеть логические уровни?
И как сами модели цифровые микросхем отреагируют, если к ним " подключать" при моделировании не характерное для них питающее напряжение?
По идее - модель при начальной инициализции всей схемы должна проверить величину питающего напряжения и выдать ошибку в log, или нет?
|
|
|
|
11.02.2013, 11:43
|
|
Прохожий
Регистрация: 27.11.2012
Сообщений: 2
Сказал спасибо: 40
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Уважаемый Halex07! Большое спасибо за Ваш цикл статей по Proteus!
Если позволите, два вопроса:
1. В отладочном режиме в окне Watch можно наблюдать содержимое выбранных регистров контроллера (я работаю с PIC16). Но нигде я не нашел возможности наблюдать содержимое аккумулятора W.
2. Есть ли возможность, остановив трассировку в заданной точке, изменить значение регистров ОЗУ, имитируя какое-то внешнее событие? Трассировщик MPLAB это позволяет (частично), а в трассировщике Proteus я этой возможности не нашел.
Заранее прошу извинить, если вопросы тривиальны
|
|
|
|
11.02.2013, 14:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Сообщение от Paulwasw
|
1. В отладочном режиме в окне Watch можно наблюдать содержимое выбранных регистров контроллера (я работаю с PIC16). Но нигде я не нашел возможности наблюдать содержимое аккумулятора W.
|
Для этого есть отдельное окошко Registers, открывается из меню Debug.
Сообщение от Paulwasw
|
2. Есть ли возможность, остановив трассировку в заданной точке, изменить значение регистров ОЗУ, имитируя какое-то внешнее событие?
|
Такой возможности нет из-за специфики внутренннего устройства моделей.
|
|
|
|
12.02.2013, 08:52
|
|
Прохожий
Регистрация: 27.11.2012
Сообщений: 2
Сказал спасибо: 40
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопросы и замечания по топику - FAQ по PROTEUS
Большое спасибо за ответ. Все просто, как-то недооценил окно Registers.
|
|
|
|
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;
}
} |
Шансов что будет работать настолькоже мало, что и кто нибудь из четающих хотябы посмотрит на код.
А теперь справедливый вопрос: Что после иниициализации делать? Как выводить?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:20.
|
|