|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
SimulIDE бесплатный симулятор электроники (PIC, AVR, цифра)
Author |
Message |
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 859 Location: г.Лянтор,Сургутского р-на,ХМАО
|
Всё прекрасно, но я тупа переписав всю папку программы увидел вот такую ошибку: Я не понял что эмулятор не может найти сам компилятор или исходник программы? Какой путь вставлять в свойствах исходника?
|
04 Nov 2021 22:46 |
|
|
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 859 Location: г.Лянтор,Сургутского р-на,ХМАО
|
Разработчики не включили в папку SimulIDE_0.4.15-SR9_Win64\bin три файла и поэтому нет компиляции программы. Вернул файлы (avra.exe, gpasm.exe, ssleay32.dll) из предыдущей версии и компилятор заработал. Правда я никогда в свойствах файла не указывал путь раньше, теперь это необходимо. Так что не хорошая новая версия программы - привет разработчику!
|
04 Nov 2021 23:01 |
|
|
FizikS
Maniac
Joined: 11 Oct 2018 00:52 Posts: 200 Location: г. Клинцы, Брянская обл.
|
Спасибо за информацию. Отправил сообщение об ошибке на официальные форум.
|
05 Nov 2021 10:11 |
|
|
FizikS
Maniac
Joined: 11 Oct 2018 00:52 Posts: 200 Location: г. Клинцы, Брянская обл.
|
Автор программы ответил на сообщение об ошибке. Ознакомиться можно здесь: https://simulide.forumotion.com/t338-si ... lost-files Файлы на странице загрузки программы обновлены.
|
05 Nov 2021 12:37 |
|
|
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 859 Location: г.Лянтор,Сургутского р-на,ХМАО
|
FizikS, а можно ли модель для Протеуса применить в данном симуляторе? Меня интересует эмуляция TM1637 (TM1638 конечно лучше, но её нет). На упомянутой микросхеме собран контроллер дисплея (и клавиатуре). Каков вообще механизм добавления моделей? Вот такая плата отладки.
|
21 Nov 2021 10:04 |
|
|
FizikS
Maniac
Joined: 11 Oct 2018 00:52 Posts: 200 Location: г. Клинцы, Брянская обл.
|
Извиняюсь за задержки в ответе, много работы. К сожалению модели от программы Proteus не подходят. Т.е. модели нужно писать самостоятельно (что я собственно и делаю) или просить автора программы добавить модели, которые своими силами сделать сложно. Самостоятельно можно сделать на основе встроенных в программу примитивов: логические элементы, транзисторы, резисторы диоды. Таким образом сделаны модели всех микросхем 74-й и 4000-й серии. Эти модели я делал на основе даташитов, скачанных с просторов интернет (всего более 90% всех моделей). Некоторые пришлось изобретать. Точное поведение микросхем эта версия программы (0.4.15) не поддерживает. Более точно можно симулировать в версии 0.5.16, но она пока не общедоступна (у меня есть версия месячной давности, но она не сохраняет схемы). На kazus.ru ( http://kazus.ru/forums/showthread.php?t=117173&page=73#728) автор дал надежду, что выложит новейшую версию программу в общий доступ для тестирования и поиска ошибок. Модернизации текущей версии программы (0.4.15) не будет. Будет только исправление ошибок. Если интересует добавление своих моделей на основе логических примитивов, могу подробнее описать здесь в теме (за время первого поста три или четыре раза изменился способ создания моделей таким способом). Также появилась возможность создания интерактивных моделей с кнопками, светодиодами, индикаторами, дисплеями (например я добавил шилд для Arduino DigitShield, а также инструменты в группе Tools, ну и советские микросхемы с индикаторами) . Могу также описать процесс создания этих моделей. Недавно сделал грубое подобие реальной кнопки (при нажатии и отпускании имитируется дребезг). По поводу остальных моделей: приходится писать их на С и встраивать непосредственно в код симулятора. Таким образом были добавлены модели нескольких дисплеев, контроллера матричного индикатора MAX7219, некоторые датчики. Для микросхем TM1637, TM1638 и им подобным я тоже хотел сделать модели, но тут без изменения исходного кода программы никак. С появлением версии программы 0.5.16, я думаю, можно их сделать самостоятельно. Эта версия поддерживает несколько микроконтроллеров в схеме. На официальном форуме есть несколько примеров и отзывов пользователей подтверждающих нормальную симуляцию нескольких микроконтроллеров. Предлагаю следующую идею: нужно имитировать работу микросхемы на микроконтроллере (Pic или AVR), потом собрать простую схемку с индикаторами и кнопками, оформить её как "board" (это вариант модели) внешне похожую на оригинальную плату и прописать в конфигурацию программы. Если получится такая "химия", можно подобным образом смоделировать множество подобных микросхем. Я не берусь эти модели сделать т.к. оцениваю свой опыт в программировании намного ниже среднего, хотя немного ковырялся в программах на "Орионе" ("прикрутил" нормальный строчный редактор для СР/М MBasic вместо консольного, адаптировал на "Орион" MONS 4 от Zx-Spectrum и еще несколько демок с музыкой. но это все детский лепет, здесь нужно что-то более серьезное...). Новую версию программы в этом случае помогу раздобыть. Она еще достаточно нестабильная, но уверенно развивается. И последний вариант - попросить автора сделать поддержку этих микросхем в программе - но это будет, скорее всего очень долгий процесс.
|
24 Nov 2021 10:57 |
|
|
shoorick
Doomed
Joined: 05 Nov 2007 05:08 Posts: 487 Location: Украина
|
эта 16-кнопочная поделуха на ТМ1638 та еще хрень там в каждом байте хранятся по одному сегменту для каждого знакоместа, пришлось при написании процедуры извращаться с вращением битов и загружать все только целиком! | | | | Code: ;======================================================================= ; QYF-TM1638 BOARD SUPPORT FOR X51 ;======================================================================= TM16_DIO equ P1.0 TM16_CLK equ P1.1 TM16_STB equ P1.2 ;----------------------------------------------------------------------- DATA TM16SCREEN,8 ; SCREEN AREA DATA TM16KEYS1 ; KEY STATUS BYTE 1 DATA TM16KEYS2 ; KEY STATUS BYTE 2 DATA TM16BRIGHT ; CURRENT BRIGHTNESS ;----------------------------------------------------------------------- ; TM16KEYS1 ;----------------------------------------------------------------------- TM16S1 equ ACC.0 TM16S11 equ ACC.1 TM16S3 equ ACC.2 TM16S10 equ ACC.3 TM16S2 equ ACC.4 TM16S12 equ ACC.5 TM16S4 equ ACC.6 TM16S9 equ ACC.7 ;----------------------------------------------------------------------- ; TM16KEYS2 ;----------------------------------------------------------------------- TM16S5 equ ACC.0 TM16S15 equ ACC.1 TM16S7 equ ACC.2 TM16S14 equ ACC.3 TM16S6 equ ACC.4 TM16S16 equ ACC.5 TM16S8 equ ACC.6 TM16S13 equ ACC.7 ;======================================================================= tm16_off: ;----------------------------------------------------------------------- mov A,#10000000b call tm16_put_byte setb TM16_STB ret ;----------------------------------------------------------------------- tm16_on: ;----------------------------------------------------------------------- mov A,TM16BRIGHT anl A,#7 orl A,#10001000b call tm16_put_byte setb TM16_STB ret ;----------------------------------------------------------------------- tm16_clear: ;----------------------------------------------------------------------- mov R0,#TM16SCREEN mov R1,#8 .loop: mov @R0,#0 inc R0 djnz R1,.loop ;----------------------------------------------------------------------- tm16_show: ;----------------------------------------------------------------------- ; DO NOT WRITE ANY BYTE INTO TM16SCREEN AREA WHILE SHOW IS IN PROGRESS ; CHECK AT LEAST TM16_STB WHILE INTERRUPTION - LOW MEANS LINE IS BUSY ;----------------------------------------------------------------------- mov R0,#TM16SCREEN mov R1,#8 mov A,#01000000b call tm16_put_byte setb TM16_STB mov A,#11000000b call tm16_put_byte .loop: mov A,@R0 rl A mov @R0,A rrc A mov A,B rlc A mov B,A inc R0 cjne R0,#TM16SCREEN+8,.loop mov R0,#TM16SCREEN call tm16_put_byte clr A call tm16_put_byte djnz R1,.loop setb TM16_STB ret ;----------------------------------------------------------------------- tm16_get_keys: ;----------------------------------------------------------------------- push B mov A,#01000010b call tm16_put_byte call tm16_get_byte rr A rr A mov B,A call tm16_get_byte orl A,B mov TM16KEYS1,A call tm16_get_byte rr A rr A mov B,A call tm16_get_byte orl A,B mov TM16KEYS2,A setb TM16_STB pop B ret ;----------------------------------------------------------------------- tm16_put_byte: ; A - byte ;----------------------------------------------------------------------- clr TM16_STB push B mov B,#8 .loop: rrc A mov TM16_DIO,C clr TM16_CLK nop setb TM16_CLK djnz B,.loop pop B ret ;----------------------------------------------------------------------- tm16_get_byte: ; A - byte ;----------------------------------------------------------------------- push B setb TM16_DIO mov B,#8 .loop: clr TM16_CLK nop setb TM16_CLK mov C,TM16_DIO rrc A djnz B,.loop pop B ret ;----------------------------------------------------------------------- byte2led: ; A = BYTE -> B = HIGH DIG, A = LOW DIG mov B,A swap A call num2led xch A,B ;----------------------------------------------------------------------- num2led: anl A,#15 inc A movc A,@A+PC ret db DIG_0,DIG_1,DIG_2,DIG_3,DIG_4,DIG_5,DIG_6,DIG_7 db DIG_8,DIG_9,DIG_A,DIG_B,DIG_C,DIG_D,DIG_E,DIG_F ;======================================================================= LED_A = 10000000b LED_B = 01000000b LED_C = 00100000b LED_D = 00010000b LED_E = 00001000b LED_F = 00000100b LED_G = 00000010b LED_H = 00000001b
DIG_0 = LED_A or LED_B or LED_C or LED_D or LED_E or LED_F DIG_1 = LED_B or LED_C DIG_2 = LED_A or LED_B or LED_D or LED_E or LED_G DIG_3 = LED_A or LED_B or LED_C or LED_D or LED_G DIG_4 = LED_B or LED_C or LED_F or LED_G DIG_5 = LED_A or LED_C or LED_D or LED_F or LED_G DIG_6 = LED_A or LED_C or LED_D or LED_E or LED_F or LED_G DIG_7 = LED_A or LED_B or LED_C DIG_8 = LED_A or LED_B or LED_C or LED_D or LED_E or LED_F or LED_G DIG_9 = LED_A or LED_B or LED_C or LED_D or LED_F or LED_G DIG_A = LED_A or LED_B or LED_C or LED_E or LED_F or LED_G DIG_B = LED_C or LED_D or LED_E or LED_F or LED_G DIG_C = LED_A or LED_D or LED_E or LED_F DIG_D = LED_B or LED_C or LED_D or LED_E or LED_G DIG_E = LED_A or LED_D or LED_E or LED_F or LED_G DIG_F = LED_A or LED_E or LED_F or LED_G
DIG_M = LED_G ; MINUS
DIG_H = LED_B or LED_C or LED_E or LED_F or LED_G DIG_L = LED_D or LED_E or LED_F ;=======================================================================
| | | | |
|
30 Nov 2021 13:50 |
|
|
FizikS
Maniac
Joined: 11 Oct 2018 00:52 Posts: 200 Location: г. Клинцы, Брянская обл.
|
Если я не ошибаюсь, то такой хитровыдуманный способ управления только для индикаторов с общим анодом. Для индикаторов с общим катодом все в порядке. Кстати немного информации об адресации этой микросхемой индикаторов с ОА здесь: http://we.easyelectronics.ru/part/osobe ... -s-oa.html
|
30 Nov 2021 14:53 |
|
|
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 859 Location: г.Лянтор,Сургутского р-на,ХМАО
|
Согласен с FizikS'ом что извращения нужны для индикатора с общим анодом с поддержкой до 10 семисементных индикаторов. Так что уточни какой у тебя используется индикатор применительно к приведённому коду - с ОА и ОК?
|
30 Nov 2021 21:24 |
|
|
shoorick
Doomed
Joined: 05 Nov 2007 05:08 Posts: 487 Location: Украина
|
да, именно так, есть другой модуль - восьмикнопочный (LED&KEY) - там по-нормальному сделано, можно знакоместо записывать по-отдельности. он мне больше понравился. для обычных поделок 8 кнопок более чем достаточно, + там есть еще ряд просто светодиодов. | | | | Code: ;======================================================================= ; LED&KEY-TM1638 BOARD SUPPORT FOR X51 ;======================================================================= TM16_DIO equ P1.0 TM16_CLK equ P1.1 TM16_STB equ P1.2 ;----------------------------------------------------------------------- DATA TM16KEYS ; KEY STATUS BYTE DATA TM16BRIGHT ; CURRENT BRIGHTNESS ;======================================================================= tm16_off: ;----------------------------------------------------------------------- mov A,#10000000b call tm16_put_byte setb TM16_STB ret ;----------------------------------------------------------------------- tm16_on: ;----------------------------------------------------------------------- mov A,TM16BRIGHT anl A,#7 orl A,#10001000b call tm16_put_byte setb TM16_STB ret ;----------------------------------------------------------------------- tm16_clear: mov A,#01000000b mov B,16 call tm16_put_byte setb TM16_STB mov A,#11000000b call tm16_put_byte .loop: clr A call tm16_put_byte djnz B,.loop setb TM16_STB ret ;----------------------------------------------------------------------- tm16_char: ; A - addr 0..7, B - digit push ACC mov A,#01000100b call tm16_put_byte setb TM16_STB pop ACC anl A,#111b add A,ACC orl A,#11000000b call tm16_put_byte xch A,B call tm16_put_byte setb TM16_STB ret ;----------------------------------------------------------------------- tm16_ledoff: ; A - addr 0..7 clr C jmp tm16_ledc ;----------------------------------------------------------------------- tm16_ledon: ; A - addr 0..7 setb C ;----------------------------------------------------------------------- tm16_ledc: ; A - addr 0..7, C - led value push PSW push ACC mov A,#01000100b call tm16_put_byte setb TM16_STB pop ACC anl A,#111b add A,ACC orl A,#11000001b call tm16_put_byte clr A pop PSW mov ACC.0,C call tm16_put_byte setb TM16_STB ret ;----------------------------------------------------------------------- tm16_leds: ; A - leds value to set, leftmost: ACC.7, rightmost: ACC.0 push B mov B,#11000001b push ACC .loop: mov A,#01000100b call tm16_put_byte setb TM16_STB mov A,B call tm16_put_byte pop ACC rl A push ACC anl A,#1 call tm16_put_byte setb TM16_STB mov A,B add A,#2 mov B,A cjne A,#11000001b+16,.loop pop ACC pop B ret ;----------------------------------------------------------------------- tm16_get_keys: ; ACC.7<=S1 .. ACC.0<=S8 ;----------------------------------------------------------------------- push B mov A,#01000010b call tm16_put_byte call tm16_get_byte anl A,#11h rl A mov B,A call tm16_get_byte anl A,#11h orl A,B rl A mov B,A call tm16_get_byte anl A,#11h orl A,B rl A mov B,A call tm16_get_byte anl A,#11h orl A,B setb TM16_STB pop B swap A ret ;----------------------------------------------------------------------- tm16_put_byte: ; A - byte ;----------------------------------------------------------------------- clr TM16_STB push B mov B,#8 .loop: rrc A mov TM16_DIO,C clr TM16_CLK nop setb TM16_CLK djnz B,.loop pop B ret ;----------------------------------------------------------------------- tm16_get_byte: ; A - byte ;----------------------------------------------------------------------- push B setb TM16_DIO mov B,#8 .loop: clr TM16_CLK nop setb TM16_CLK mov C,TM16_DIO rrc A djnz B,.loop pop B ret ;----------------------------------------------------------------------- byte2led: ; A = BYTE -> B = HIGH DIG, A = LOW DIG mov B,A swap A call num2led xch A,B ;----------------------------------------------------------------------- num2led: anl A,#15 inc A movc A,@A+PC ret db DIG_0,DIG_1,DIG_2,DIG_3,DIG_4,DIG_5,DIG_6,DIG_7 db DIG_8,DIG_9,DIG_A,DIG_B,DIG_C,DIG_D,DIG_E,DIG_F ;======================================================================= LED_A = 00000001b LED_B = 00000010b LED_C = 00000100b LED_D = 00001000b LED_E = 00010000b LED_F = 00100000b LED_G = 01000000b LED_H = 10000000b
DIG_0 = LED_A or LED_B or LED_C or LED_D or LED_E or LED_F DIG_1 = LED_B or LED_C DIG_2 = LED_A or LED_B or LED_D or LED_E or LED_G DIG_3 = LED_A or LED_B or LED_C or LED_D or LED_G DIG_4 = LED_B or LED_C or LED_F or LED_G DIG_5 = LED_A or LED_C or LED_D or LED_F or LED_G DIG_6 = LED_A or LED_C or LED_D or LED_E or LED_F or LED_G DIG_7 = LED_A or LED_B or LED_C DIG_8 = LED_A or LED_B or LED_C or LED_D or LED_E or LED_F or LED_G DIG_9 = LED_A or LED_B or LED_C or LED_D or LED_F or LED_G DIG_A = LED_A or LED_B or LED_C or LED_E or LED_F or LED_G DIG_B = LED_C or LED_D or LED_E or LED_F or LED_G DIG_C = LED_A or LED_D or LED_E or LED_F DIG_D = LED_B or LED_C or LED_D or LED_E or LED_G DIG_E = LED_A or LED_D or LED_E or LED_F or LED_G DIG_F = LED_A or LED_E or LED_F or LED_G
DIG_M = LED_G ; MINUS
DIG_H = LED_B or LED_C or LED_E or LED_F or LED_G DIG_L = LED_D or LED_E or LED_F DIG_O = LED_C or LED_D or LED_E or LED_G DIG_R = LED_E or LED_G ;=======================================================================
| | | | |
|
30 Nov 2021 23:17 |
|
|
FizikS
Maniac
Joined: 11 Oct 2018 00:52 Posts: 200 Location: г. Клинцы, Брянская обл.
|
Сделал модельку 4-х разрядного индикатора на 74HC595 (динамическая индикация, общий анод). В ближайшее время наваяю еще несколько штук (модули, которые продаются на Aliexpress). Если есть интерес, выложу здесь, чтобы не ждать официального релиза...
Кстати, в сети гуляет схема этого модуля, но она с ошибкой. Пришлось разбираться при помощи отладчика (на схеме перепутали подключение сигнала "DIO"). Здесь схема правильная (нумерация разрядов на индикаторе - справа налево).
|
01 Dec 2021 22:35 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А автор не планирует обнародовать API для создания моделей, как это сделали разработчики программы Proteus? А то малыми силами он весь спектр электроники, интересующей людей, до пенсии не охватит...
_________________ iLavr
|
02 Dec 2021 03:17 |
|
|
shoorick
Doomed
Joined: 05 Nov 2007 05:08 Posts: 487 Location: Украина
|
пенсия уже как горизонт: воображаемая линия, которая отдаляется при приближении
|
02 Dec 2021 11:20 |
|
|
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 859 Location: г.Лянтор,Сургутского р-на,ХМАО
|
Я уже давно сделал. Ниже схема. Применяться будет в проекте реинкарнации Орели ( https://fifan072.wixsite.com/orel).
|
03 Dec 2021 02:57 |
|
|
FizikS
Maniac
Joined: 11 Oct 2018 00:52 Posts: 200 Location: г. Клинцы, Брянская обл.
|
Если это не риторический вопрос, а желание помочь в развитие программы, то могу уточнить у автора. Я на основном форуме программы читал что-то отдаленно напоминающее описание как самостоятельно написать модель для SimulIDE. Несколько пользователей уже пытались их делать с переменным успехом. Автор на форуме kazus.ru вкратце описал ситуацию с самописанными моделями: http://kazus.ru/forums/showthread.php?t ... age=73#728 С моей точки зрения идея прекрасная: навалившись "всем миром" можно значительно улучшить функционал программы и получить прекрасную кросс-платформенную бесплатную программу, которая удовлетворит некоторую (если не бОльшую) часть запросов радиолюбителей и значительную часть запросов преподавателей ВУЗов и ССУЗов к подобного рода программам. На официальном сайте доступна новая, очень нестабильная версия программы для тестирования. (SimulIDE_1.0.0-RC1 (unstable)). Оценить возможности и нововведения вполне себе можно. О всех найденных багах можно будет сообщить на официальном форуме или здесь.Ссылка на загрузку программы: https://www.simulide.com/p/downloads.htmlОписание изменений: https://www.simulide.com/index.html На днях сделал несколько моделей индикаторов, скоро будут еще (планирую около десятка). Индикаторы с динамическим управлением на основе 74HC595 (протестированы - работают) и 74HC164 (работоспособность под вопросом). Некоторые из них можно купить на Алиэкспресс, так, что модельки будут востребованы...
|
07 Dec 2021 07:59 |
|
|
Who is online |
Users browsing this forum: No registered users and 83 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|