nedoPC.org

Community of electronics hobbyists established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 03 Dec 2021 02:18



Reply to topic  [ 73 posts ]  Go to page Previous  1, 2, 3, 4, 5
SimulIDE бесплатный симулятор электроники (PIC, AVR, цифра) 
Author Message
Devil

Joined: 06 Oct 2006 04:17
Posts: 713
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Всё прекрасно, но я тупа переписав всю папку программы увидел вот такую ошибку:
Code:
gpasm: Инструменты не найдены
Правый клик на вкладке документа, чтобы задать путь
  Ошибка компиляции!

Я не понял что эмулятор не может найти сам компилятор или исходник программы? Какой путь вставлять в свойствах исходника?


04 Nov 2021 23:46
Profile
Devil

Joined: 06 Oct 2006 04:17
Posts: 713
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Разработчики не включили в папку SimulIDE_0.4.15-SR9_Win64\bin три файла и поэтому нет компиляции программы. Вернул файлы (avra.exe, gpasm.exe, ssleay32.dll) из предыдущей версии и компилятор заработал. Правда я никогда в свойствах файла не указывал путь раньше, теперь это необходимо. Так что не хорошая новая версия программы - привет разработчику!


05 Nov 2021 00:01
Profile
Novelist
User avatar

Joined: 11 Oct 2018 01:52
Posts: 45
Location: г. Клинцы, Брянская обл.
Reply with quote
fifan wrote:
Разработчики не включили в папку SimulIDE_0.4.15-SR9_Win64\bin три файла и поэтому нет компиляции программы. Вернул файлы (avra.exe, gpasm.exe, ssleay32.dll) из предыдущей версии и компилятор заработал. Правда я никогда в свойствах файла не указывал путь раньше, теперь это необходимо. Так что не хорошая новая версия программы - привет разработчику!


Спасибо за информацию. Отправил сообщение об ошибке на официальные форум.


05 Nov 2021 11:11
Profile
Novelist
User avatar

Joined: 11 Oct 2018 01:52
Posts: 45
Location: г. Клинцы, Брянская обл.
Reply with quote
fifan wrote:
Разработчики не включили в папку SimulIDE_0.4.15-SR9_Win64\bin три файла и поэтому нет компиляции программы. Вернул файлы (avra.exe, gpasm.exe, ssleay32.dll) из предыдущей версии и компилятор заработал. Правда я никогда в свойствах файла не указывал путь раньше, теперь это необходимо. Так что не хорошая новая версия программы - привет разработчику!


Автор программы ответил на сообщение об ошибке. Ознакомиться можно здесь: https://simulide.forumotion.com/t338-si ... lost-files
Файлы на странице загрузки программы обновлены.


05 Nov 2021 13:37
Profile
Devil

Joined: 06 Oct 2006 04:17
Posts: 713
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
FizikS, а можно ли модель для Протеуса применить в данном симуляторе? Меня интересует эмуляция TM1637 (TM1638 конечно лучше, но её нет). На упомянутой микросхеме собран контроллер дисплея (и клавиатуре). Каков вообще механизм добавления моделей? Вот такая плата отладки.

Image Image


21 Nov 2021 11:04
Profile
Novelist
User avatar

Joined: 11 Oct 2018 01:52
Posts: 45
Location: г. Клинцы, Брянская обл.
Reply with quote
fifan wrote:
FizikS, а можно ли модель для Протеуса применить в данном симуляторе? Меня интересует эмуляция TM1637 (TM1638 конечно лучше, но её нет). На упомянутой микросхеме собран контроллер дисплея (и клавиатуре). Каков вообще механизм добавления моделей?


Извиняюсь за задержки в ответе, много работы.
К сожалению модели от программы 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 11:57
Profile
Doomed
User avatar

Joined: 05 Nov 2007 06:08
Posts: 462
Location: Украина
Reply with quote
эта 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
;=======================================================================


Attachments:
QYF-TM1638.jpg
QYF-TM1638.jpg [ 59.51 KiB | Viewed 99 times ]
30 Nov 2021 14:50
Profile WWW
Novelist
User avatar

Joined: 11 Oct 2018 01:52
Posts: 45
Location: г. Клинцы, Брянская обл.
Reply with quote
shoorick wrote:
эта 16-кнопочная поделуха на ТМ1638 та еще хрень :)
там в каждом байте хранятся по одному сегменту для каждого знакоместа, пришлось при написании процедуры извращаться с вращением битов и загружать все только целиком!

Если я не ошибаюсь, то такой хитровыдуманный способ управления только для индикаторов с общим анодом. Для индикаторов с общим катодом все в порядке.

Кстати немного информации об адресации этой микросхемой индикаторов с ОА здесь: http://we.easyelectronics.ru/part/osobe ... -s-oa.html


Attachments:
TM1638-2.PNG
TM1638-2.PNG [ 83.35 KiB | Viewed 93 times ]
TM1638-1.PNG
TM1638-1.PNG [ 97.09 KiB | Viewed 93 times ]
30 Nov 2021 15:53
Profile
Devil

Joined: 06 Oct 2006 04:17
Posts: 713
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
shoorick wrote:
эта 16-кнопочная поделуха на ТМ1638 та еще хрень :)
там в каждом байте хранятся по одному сегменту для каждого знакоместа, пришлось при написании процедуры извращаться с вращением битов и загружать все только целиком!

Согласен с FizikS'ом что извращения нужны для индикатора с общим анодом с поддержкой до 10 семисементных индикаторов. Так что уточни какой у тебя используется индикатор применительно к приведённому коду - с ОА и ОК?


30 Nov 2021 22:24
Profile
Doomed
User avatar

Joined: 05 Nov 2007 06:08
Posts: 462
Location: Украина
Reply with quote
да, именно так, есть другой модуль - восьмикнопочный (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
;=======================================================================


Attachments:
led&key.jpg
led&key.jpg [ 67.52 KiB | Viewed 72 times ]
01 Dec 2021 00:17
Profile WWW
Novelist
User avatar

Joined: 11 Oct 2018 01:52
Posts: 45
Location: г. Клинцы, Брянская обл.
Reply with quote
Сделал модельку 4-х разрядного индикатора на 74HC595 (динамическая индикация, общий анод). В ближайшее время наваяю еще несколько штук (модули, которые продаются на Aliexpress).
Если есть интерес, выложу здесь, чтобы не ждать официального релиза...

Кстати, в сети гуляет схема этого модуля, но она с ошибкой. Пришлось разбираться при помощи отладчика (на схеме перепутали подключение сигнала "DIO"). Здесь схема правильная (нумерация разрядов на индикаторе - справа налево).


Attachments:
4 bits digital tube led display 74HC595.PNG
4 bits digital tube led display 74HC595.PNG [ 37.29 KiB | Viewed 46 times ]
4 bit 7 segment module.jpg.jpg
4 bit 7 segment module.jpg.jpg [ 166.81 KiB | Viewed 46 times ]
01 Dec 2021 23:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
FizikS wrote:
fifan wrote:
FizikS, а можно ли модель для Протеуса применить в данном симуляторе?
К сожалению модели от программы Proteus не подходят. Т.е. модели нужно писать самостоятельно (что я собственно и делаю) или просить автора программы добавить модели, которые своими силами сделать сложно.

А автор не планирует обнародовать API для создания моделей, как это сделали разработчики программы Proteus?
А то малыми силами он весь спектр электроники, интересующей людей, до пенсии не охватит... :-?

_________________
iLavr


02 Dec 2021 04:17
Profile
Doomed
User avatar

Joined: 05 Nov 2007 06:08
Posts: 462
Location: Украина
Reply with quote
пенсия уже как горизонт: воображаемая линия, которая отдаляется при приближении


02 Dec 2021 12:20
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 73 posts ]  Go to page Previous  1, 2, 3, 4, 5

Who is online

Users browsing this forum: No registered users and 3 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

Search for:
Jump to:  

Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.